A Zero-Dependency TypeScript / JavaScript financial utility library inspired by numpy-financial that can be used on Node.js, Deno, Bun and the browser.
It does support the same functionality offered by numpy-financial but it only supports scalar JavaScript number values (NO numpy-like array values) and it does NOT support arbitrary-precision signed decimal numbers (such as decimal.js, big.js or bignumber.js).
📖 API DOCS 📖 : financialjs.netlify.app
With npm:
npm install --save-dev financialOr, with yarn:
yarn add financialimport { fv } from 'financial'
fv(0.05 / 12, 10 * 12, -100, -100) // 15692.928894335748This library exports its functionality using different module formats.
const financial = require('financial') // ./index.js
// use `financial.fv`, `financial.pmt`, etc.or, leveraging destructuring
const { fv, pmt } = require('financial') // ./index.js
// use `fv`, `pmt`, etc.An optimized Commonjs for browsers can be imported directly from the web:
<script src="https://www.npmcdn.com/[email protected]/dist/financial.cjs.production.min.js"></script>Note: make sure you replace the x.y.z with the correct version you want to use.
Also working with Typescript
import { fv, pmt } from 'financial'
// use `fv`, `pmt`, etc.There's no default export in the ESM implementation, so you have to explicitely import the functionality you need, one by one.
Make sure you specify the version you prefer in the import URL:
import { assertEquals } from 'https://deno.land/std/testing/asserts.ts'
import * as f from 'https://deno.land/x/npm:[email protected]/src/financial.ts'
assertEquals(f.fv(0.05 / 12, 10 * 12, -100, -100), 15692.928894335755)Click on the function name to get the full documentation for every function, or check out the full programmatic documentation at financialjs.netlify.app.
-
fv(): Future Value (since v0.0.12) -
pmt(): Total payment (since v0.0.12) -
nper(): Number of period payments (since v0.0.12) -
ipmt(): Interest portion of a payment (since v0.0.12) -
ppmt(): Payment against loan principal (since v0.0.14) -
pv(): Present Value (since v0.0.15) -
rate(): Rate of interest per period (since v0.0.16) -
irr(): Internal Rate of Return (since v0.0.17) -
npv(): Net Present Value (since v0.0.18) -
mirr(): Modified Internal Rate of Return (since 0.1.0)
Below is a list of commands you will probably find useful.
npm startoryarn start: Runs the project in development/watch mode. Your project will be rebuilt upon changes.npm run buildoryarn build: Bundles the package to thedistfolder. The package is optimized and bundled with Rollup into multiple format (CommonJS, UMD, and ES Module).npm run build:docsoryarn build:docs: Builds the API documentation in thedocsfolder usingtypedoc.npm testoryarn test: Runs the test watcher (Jest) in an interactive mode. it runs tests related to files changed since the last commit.npm run test:watchoryarn test:watch: runs the tests in watch mode
To test with Deno, run:
deno test test/deno.tsEveryone is very welcome to contribute to this project. You can contribute just by submitting bugs or suggesting improvements by opening an issue on GitHub.
You can also submit PRs as long as you adhere with the code standards and write tests for the proposed changes.
Licensed under MIT License. © Luciano Mammino.