The finance developer workbenchSearch the reference Development · 0.1.4 · unpublished

Learn / price an option

Price a European call

Change a sample market input. Price and Greeks use Black–Scholes–Merton, with explicit decimal rates and years to expiry.

Try it

Sample data

Change a sample market input. Price and Greeks use Black–Scholes–Merton, with explicit decimal rates and years to expiry.

Loading the local calculator. The verified sample is displayed below.

Call price2.3909USD / share
Delta0.3677
Gamma0.0377
Vega0.1884per 1% volatility
Price across underlying prices
06.52413.04819.57226.09670130Underlying price · USD

European callOption price · USD / share

Exact chart data
SeriesUnderlying price · USDOption price · USD / share
European call700.00007436772427411604
European call710.00013834634551955754
European call720.0002506011453697714
European call730.00044248041148476497
European call740.0007623304942515619
European call750.0012827848346888895
European call760.0021102324290399183
European call770.003396723103711738
European call77.999999999999990.005354446682725472
European call78.999999999999990.008272745172492157
European call800.012537384939741547
European call810.01865154134933955
European call820.027257651892743873
European call830.039159003403250514
European call840.0553396674468003
European call850.07698121964691174
European call860.10547460472891901
European call870.14242556307595544
European call87.999999999999990.18965222876583088
European call88.999999999999990.24917384152762256
European call89.999999999999990.3231899689659805
European call90.999999999999990.4140501799354084
European call920.5242147031873543
European call930.6562071986657614
European call940.812561311835502
European call950.9957631277694219
European call961.2081919536772041
European call971.4520620108674542
European call981.729367599188528
European call992.041834113337103
European call1002.3908769595711306
European call1012.777569973233703
European call1023.2026244098542804
European call1033.6663790170210575
European call1044.1688011320720335
European call104.999999999999994.7094982294731835
European call1065.287738892448992
European call106.999999999999995.902481828412654
European call1086.552411300078745
European call108.999999999999997.235977207678516
European call110.000000000000017.951438027980856
European call110.999999999999998.696904881597817
European call111.999999999999999.470385145137655
European call112.9999999999999910.269824229996104
European call113.9999999999999911.093144394734864
European call114.9999999999999911.938279723415604
European call115.9999999999999912.803206670189681
European call11713.685969825923578
European call11814.58470279405789
European call11915.497644262149834
European call12016.423149517923576
European call12117.359697782473887
European call12218.305895819404213
European call12319.260478329963732
European call12420.222305664894137
European call12521.190359378740183
European call12622.163736127194838
European call12723.141640367952405
European call127.9999999999999924.123376275479032
European call12925.108339224460252
European call129.9999999999999726.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.

Continue with the full API reference or the API levels guide.