Learn by doing
What do you want
to calculate?
Start with a question. Get a real result, inspect the assumptions, and take the TypeScript with you.
Price an option
Price, Greeks, and explicit model assumptions.
02 ↗Analyze a strategy
Expiration payoff, break-even, and scenario exploration.
03 ↗Track portfolio P&L
Economic events, cash flows, and reconciled profit.
04 ↗Value a company
Discounted cash flows and sensitivity to assumptions.
05 ↗Backtest a strategy
Signals, transaction costs, equity, and drawdown.
06 ↗Connect an agent
Choose tools, supply data, and understand permissions.
A small call. An explainable answer.
Try it
Sample dataChange a sample market input. Price and Greeks use Black–Scholes–Merton, with explicit decimal rates and years to expiry.
European callOption price · USD / share
Exact chart data
| Series | Underlying price · USD | Option price · USD / share |
|---|---|---|
| European call | 70 | 0.00007436772427411604 |
| European call | 71 | 0.00013834634551955754 |
| European call | 72 | 0.0002506011453697714 |
| European call | 73 | 0.00044248041148476497 |
| European call | 74 | 0.0007623304942515619 |
| European call | 75 | 0.0012827848346888895 |
| European call | 76 | 0.0021102324290399183 |
| European call | 77 | 0.003396723103711738 |
| European call | 77.99999999999999 | 0.005354446682725472 |
| European call | 78.99999999999999 | 0.008272745172492157 |
| European call | 80 | 0.012537384939741547 |
| European call | 81 | 0.01865154134933955 |
| European call | 82 | 0.027257651892743873 |
| European call | 83 | 0.039159003403250514 |
| European call | 84 | 0.0553396674468003 |
| European call | 85 | 0.07698121964691174 |
| European call | 86 | 0.10547460472891901 |
| European call | 87 | 0.14242556307595544 |
| European call | 87.99999999999999 | 0.18965222876583088 |
| European call | 88.99999999999999 | 0.24917384152762256 |
| European call | 89.99999999999999 | 0.3231899689659805 |
| European call | 90.99999999999999 | 0.4140501799354084 |
| European call | 92 | 0.5242147031873543 |
| European call | 93 | 0.6562071986657614 |
| European call | 94 | 0.812561311835502 |
| European call | 95 | 0.9957631277694219 |
| European call | 96 | 1.2081919536772041 |
| European call | 97 | 1.4520620108674542 |
| European call | 98 | 1.729367599188528 |
| European call | 99 | 2.041834113337103 |
| European call | 100 | 2.3908769595711306 |
| European call | 101 | 2.777569973233703 |
| European call | 102 | 3.2026244098542804 |
| European call | 103 | 3.6663790170210575 |
| European call | 104 | 4.1688011320720335 |
| European call | 104.99999999999999 | 4.7094982294731835 |
| European call | 106 | 5.287738892448992 |
| European call | 106.99999999999999 | 5.902481828412654 |
| European call | 108 | 6.552411300078745 |
| European call | 108.99999999999999 | 7.235977207678516 |
| European call | 110.00000000000001 | 7.951438027980856 |
| European call | 110.99999999999999 | 8.696904881597817 |
| European call | 111.99999999999999 | 9.470385145137655 |
| European call | 112.99999999999999 | 10.269824229996104 |
| European call | 113.99999999999999 | 11.093144394734864 |
| European call | 114.99999999999999 | 11.938279723415604 |
| European call | 115.99999999999999 | 12.803206670189681 |
| European call | 117 | 13.685969825923578 |
| European call | 118 | 14.58470279405789 |
| European call | 119 | 15.497644262149834 |
| European call | 120 | 16.423149517923576 |
| European call | 121 | 17.359697782473887 |
| European call | 122 | 18.305895819404213 |
| European call | 123 | 19.260478329963732 |
| European call | 124 | 20.222305664894137 |
| European call | 125 | 21.190359378740183 |
| European call | 126 | 22.163736127194838 |
| European call | 127 | 23.141640367952405 |
| European call | 127.99999999999999 | 24.123376275479032 |
| European call | 129 | 25.108339224460252 |
| European call | 129.99999999999997 | 26.096007139132027 |
Assumptions & conventions
{
"price": {
"conventionsVersion": "0.0.1",
"dayCount": "ACT/365F",
"compounding": "continuous",
"timeToExpiryYears": 0.25,
"dividendModel": "none",
"units": {
"theta": "perDay",
"vega": "per1Percent",
"rho": "per1Percent"
},
"model": "black-scholes-merton",
"engine": "black-scholes-merton"
},
"greeks": {
"conventionsVersion": "0.0.1",
"dayCount": "ACT/365F",
"compounding": "continuous",
"timeToExpiryYears": 0.25,
"dividendModel": "none",
"units": {
"theta": "perDay",
"vega": "per1Percent",
"rho": "per1Percent"
},
"model": "black-scholes-merton",
"engine": "black-scholes-merton"
}
}Diagnostics & warnings
{
"price": {
"engine": "black-scholes-merton",
"method": "closed-form",
"converged": true,
"warnings": []
},
"greeks": {
"engine": "black-scholes-merton",
"method": "closed-form",
"converged": true,
"warnings": []
}
}Full result · JSON
{
"price": {
"value": 2.3908769595711306,
"assumptions": {
"conventionsVersion": "0.0.1",
"dayCount": "ACT/365F",
"compounding": "continuous",
"timeToExpiryYears": 0.25,
"dividendModel": "none",
"units": {
"theta": "perDay",
"vega": "per1Percent",
"rho": "per1Percent"
},
"model": "black-scholes-merton",
"engine": "black-scholes-merton"
},
"diagnostics": {
"engine": "black-scholes-merton",
"method": "closed-form",
"converged": true,
"warnings": []
}
},
"greeks": {
"value": {
"delta": 0.3677186551805255,
"gamma": 0.03768050654865944,
"theta": -0.0244146324714278,
"vega": 0.1884025327432972,
"rho": 0.08595247139620354
},
"assumptions": {
"conventionsVersion": "0.0.1",
"dayCount": "ACT/365F",
"compounding": "continuous",
"timeToExpiryYears": 0.25,
"dividendModel": "none",
"units": {
"theta": "perDay",
"vega": "per1Percent",
"rho": "per1Percent"
},
"model": "black-scholes-merton",
"engine": "black-scholes-merton"
},
"diagnostics": {
"engine": "black-scholes-merton",
"method": "closed-form",
"converged": true,
"warnings": []
}
},
"priceCurve": [
{
"x": 70,
"y": 0.00007436772427411604
},
{
"x": 71,
"y": 0.00013834634551955754
},
{
"x": 72,
"y": 0.0002506011453697714
},
{
"x": 73,
"y": 0.00044248041148476497
},
{
"x": 74,
"y": 0.0007623304942515619
},
{
"x": 75,
"y": 0.0012827848346888895
},
{
"x": 76,
"y": 0.0021102324290399183
},
{
"x": 77,
"y": 0.003396723103711738
},
{
"x": 77.99999999999999,
"y": 0.005354446682725472
},
{
"x": 78.99999999999999,
"y": 0.008272745172492157
},
{
"x": 80,
"y": 0.012537384939741547
},
{
"x": 81,
"y": 0.01865154134933955
},
{
"x": 82,
"y": 0.027257651892743873
},
{
"x": 83,
"y": 0.039159003403250514
},
{
"x": 84,
"y": 0.0553396674468003
},
{
"x": 85,
"y": 0.07698121964691174
},
{
"x": 86,
"y": 0.10547460472891901
},
{
"x": 87,
"y": 0.14242556307595544
},
{
"x": 87.99999999999999,
"y": 0.18965222876583088
},
{
"x": 88.99999999999999,
"y": 0.24917384152762256
},
{
"x": 89.99999999999999,
"y": 0.3231899689659805
},
{
"x": 90.99999999999999,
"y": 0.4140501799354084
},
{
"x": 92,
"y": 0.5242147031873543
},
{
"x": 93,
"y": 0.6562071986657614
},
{
"x": 94,
"y": 0.812561311835502
},
{
"x": 95,
"y": 0.9957631277694219
},
{
"x": 96,
"y": 1.2081919536772041
},
{
"x": 97,
"y": 1.4520620108674542
},
{
"x": 98,
"y": 1.729367599188528
},
{
"x": 99,
"y": 2.041834113337103
},
{
"x": 100,
"y": 2.3908769595711306
},
{
"x": 101,
"y": 2.777569973233703
},
{
"x": 102,
"y": 3.2026244098542804
},
{
"x": 103,
"y": 3.6663790170210575
},
{
"x": 104,
"y": 4.1688011320720335
},
{
"x": 104.99999999999999,
"y": 4.7094982294731835
},
{
"x": 106,
"y": 5.287738892448992
},
{
"x": 106.99999999999999,
"y": 5.902481828412654
},
{
"x": 108,
"y": 6.552411300078745
},
{
"x": 108.99999999999999,
"y": 7.235977207678516
},
{
"x": 110.00000000000001,
"y": 7.951438027980856
},
{
"x": 110.99999999999999,
"y": 8.696904881597817
},
{
"x": 111.99999999999999,
"y": 9.470385145137655
},
{
"x": 112.99999999999999,
"y": 10.269824229996104
},
{
"x": 113.99999999999999,
"y": 11.093144394734864
},
{
"x": 114.99999999999999,
"y": 11.938279723415604
},
{
"x": 115.99999999999999,
"y": 12.803206670189681
},
{
"x": 117,
"y": 13.685969825923578
},
{
"x": 118,
"y": 14.58470279405789
},
{
"x": 119,
"y": 15.497644262149834
},
{
"x": 120,
"y": 16.423149517923576
},
{
"x": 121,
"y": 17.359697782473887
},
{
"x": 122,
"y": 18.305895819404213
},
{
"x": 123,
"y": 19.260478329963732
},
{
"x": 124,
"y": 20.222305664894137
},
{
"x": 125,
"y": 21.190359378740183
},
{
"x": 126,
"y": 22.163736127194838
},
{
"x": 127,
"y": 23.141640367952405
},
{
"x": 127.99999999999999,
"y": 24.123376275479032
},
{
"x": 129,
"y": 25.108339224460252
},
{
"x": 129.99999999999997,
"y": 26.096007139132027
}
]
}Use it in your project
Returns a number: the option price in USD per share. No array conversion or chart setup is needed. Use blackScholes.greeks(input) for a named Greeks object, or .explain(input) for assumptions and diagnostics.
import { blackScholes } from '@insiderfinance/totalfinance/options';
const input = {
"type": "call",
"spot": 100,
"strike": 105,
"timeToExpiryYears": 0.25,
"volatility": 0.2,
"riskFreeRate": 0.04,
"dividendYield": 0
} as const;
const result = blackScholes.price(input);
console.log(result);
Output of this example
2.3908769595711306
Reproduce this entire playground
This complete example reproduces every chart point and the full playground result. Sample generation and chart mapping are example setup, not required conversions of library outputs.
import { blackScholes } from '@insiderfinance/totalfinance/options';
const input = {
"type": "call",
"spot": 100,
"strike": 105,
"timeToExpiryYears": 0.25,
"volatility": 0.2,
"riskFreeRate": 0.04,
"dividendYield": 0
} as const;
const priceCurve = Array.from({ length: 61 }, (_, index) => {
const spot = input.spot * (0.7 + index / 100);
return { x: spot, y: blackScholes.price({ ...input, spot }) };
});
const result = {
price: blackScholes.price.explain(input),
greeks: blackScholes.greeks.explain(input),
priceCurve,
};
console.log(result);Both examples use the last successfully calculated inputs. The first call may show fewer scenarios or selected report fields, as labeled above. Displayed metrics are rounded; copied calculations retain exact values.