Options Greeks Calculator API - Full BSM Greeks to Third Order | FlashAlpha
  1. BSM Greeks Calculator

BSM Greeks Calculator API

Theoretical price plus first, second and third-order greeks from the inputs you provide.

Endpoint

Computes full Black-Scholes-Merton greeks from the inputs you provide. Returns the theoretical price plus first-order, second-order and third-order greeks. Pure calculation - no market data required. Available on all plans (Free+).

GET /v1/pricing/greeks
Auth required (X-Api-Key) Rate Limited: Yes Plan: Free+

Parameters

Name In Type Required Default Description
spot query number required - Underlying spot price. Invalid values return 400 invalid_input. Non-numeric values return a 400 problem-details body.
strike query number required - Strike price. Invalid values return 400 invalid_input. Non-numeric values return a 400 problem-details body.
dte query number required - Days to expiration. Invalid values return 400 invalid_input. Non-numeric values return a 400 problem-details body.
sigma query number required - Implied volatility (annualized, e.g. 0.18 = 18%). Invalid values return 400 invalid_input. Non-numeric values return a 400 problem-details body.
type query enum call call or put. Invalid values return 400 invalid_input.
r query number 0.045 Risk-free rate (annualized). Non-numeric values return a 400 problem-details body.
q query number 0.013 Dividend yield (annualized). Non-numeric values return a 400 problem-details body.

Request

curl -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/pricing/greeks?spot=580&strike=580&dte=30&sigma=0.18&type=call"
import requests

resp = requests.get(
    "https://lab.flashalpha.com/v1/pricing/greeks",
    params={"spot": 580, "strike": 580, "dte": 30, "sigma": 0.18, "type": "call"},
    headers={"X-Api-Key": "YOUR_API_KEY"}
)
resp.raise_for_status()
g = resp.json()
print(f"Price {g['theoretical_price']} | delta {g['first_order']['delta']} | vanna {g['second_order']['vanna']}")
const qs = new URLSearchParams({ spot: 580, strike: 580, dte: 30, sigma: 0.18, type: "call" });
const resp = await fetch(`https://lab.flashalpha.com/v1/pricing/greeks?${qs}`, {
  headers: { "X-Api-Key": "YOUR_API_KEY" }
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
const g = await resp.json();
console.log(`Price ${g.theoretical_price} | delta ${g.first_order.delta}`);

Try it live

Runs on live market data and uses 1 request from your daily quota.

GET

Response

{
  "inputs": {
    "spot": 580,
    "strike": 580,
    "dte": 30,
    "sigma": 0.18,
    "type": "call",
    "risk_free_rate": 0.045,
    "dividend_yield": 0.013
  },
  "theoretical_price": 12.6872,
  "first_order": {
    "delta": 0.53003,
    "gamma": 0.013276,
    "theta": -0.223599,
    "vega": 0.660706,
    "rho": 24.2244
  },
  "second_order": {
    "vanna": -0.055551,
    "charm": 0.00049,
    "vomma": 0.709126,
    "dual_delta": -0.508155
  },
  "third_order": {
    "speed": -0.000057,
    "zomma": -0.07361,
    "color": -0.000223,
    "ultima": -17.2416
  },
  "additional": {
    "lambda": 24.2305,
    "veta": 1.0923
  },
  "endpoint_version": "2026.09.30",
  "data_as_of": {
    "node": "fa5",
    "equity_feed": "2026-10-30T13:46:17.449Z",
    "equity_options_feed": "2026-10-30T13:46:17Z",
    "index_feed": "2026-10-30T13:46:16.137Z",
    "index_options_feed": "2026-10-30T13:46:16Z",
    "futures_feed": "2026-10-30T13:46:15.271Z",
    "futures_options_feed": "2026-10-30T13:46:14.335Z",
    "flow_feed": "2026-10-30T13:46:00Z",
    "oi_feed": "2026-10-29T20:00:00Z",
    "macro_feed": "2026-10-29T21:00:20Z"
  }
}

Sending request…

See this endpoint on live data

Send this exact request and the real response shows up here, right next to the example.

Response Fields

Field Type Description
theoretical_pricenumber BSM theoretical option price
first_order.deltanumber ∂V/∂S - sensitivity to spot price
first_order.gammanumber ∂²V/∂S² - rate of change of delta
first_order.thetanumber ∂V/∂t - time decay per day
first_order.veganumber ∂V/∂σ - sensitivity to a 1% vol change
first_order.rhonumber ∂V/∂r - sensitivity to the interest rate
second_order.vannanumber ∂²V/∂S∂σ - delta sensitivity to vol
second_order.charmnumber ∂²V/∂S∂t - delta decay per day
second_order.vommanumber ∂²V/∂σ² - vega convexity (volga)
second_order.dual_deltanumber ∂V/∂K - sensitivity to strike price
third_order.speednumber ∂³V/∂S³ - gamma sensitivity to spot
third_order.zommanumber ∂³V/∂S²∂σ - gamma sensitivity to vol
third_order.colornumber ∂³V/∂S²∂t - gamma decay per day
third_order.ultimanumber ∂³V/∂σ³ - vomma sensitivity to vol
additional.lambdanumber Delta × S / V - option leverage ratio (null if price ≤ 0)
additional.vetanumber ∂²V/∂σ∂t - vega decay per day
inputsobjectInputs
inputs.spotnumberInputs: spot
inputs.strikenumberStrike price
inputs.dtenumberDays to expiration
inputs.sigmanumberInputs: sigma
inputs.typestringOption type
inputs.risk_free_ratenumberInputs: risk free rate
inputs.dividend_yieldnumberInputs: dividend yield
first_orderobject∂V/∂S - sensitivity to spot price
second_orderobject∂²V/∂S∂σ - delta sensitivity to vol
third_orderobject∂³V/∂S³ - gamma sensitivity to spot
additionalobjectDelta × S / V - option leverage ratio (null if price ≤ 0)
endpoint_version, data_as_ofstring, objectResponse envelope, see Response envelope.

Errors

Status Error When
400invalid_inputAn input is out of range, for example a spot, strike, dte or volatility that is not positive.
400-A query value has the wrong type, or a required value is missing. The body is an RFC 7807 problem-details object with errors.<param>.
401-Missing or invalid X-Api-Key. The body is empty; check the status code before parsing JSON.
429Quota exceededDaily quota used up. Retry-After gives the seconds until the reset at 00:00 UTC. Rejected requests (including 403) count toward the quota.

Authentication (401) and rate-limit (429) errors use the common error format, see Error Responses.


What Is the Greeks Calculator Endpoint?

The Greeks Calculator prices a European option with the Black-Scholes-Merton model from inputs you supply and returns every sensitivity in one response: the familiar first-order greeks, the second-order cross greeks (vanna, charm, vomma) that drive dealer hedging, and third-order greeks for convexity analysis. It never reads market data, so you can price hypothetical trades, stress inputs, or check your own pricer against a reference implementation.

Common Use Cases

  • Price what-if trades - change spot, vol or days to expiry and read the new price and greeks
  • Validate your own pricer - compare your BSM implementation against a reference output
  • Study higher-order risk - read vanna, charm, speed and zomma for hedging and convexity work
  • Build a calculator UI - back an options calculator without shipping pricing code to the client

Related reading

Complementary endpoints

Ready to build with FlashAlpha?

Get your free API key and start pulling live options data in 60 seconds.

No credit card required Setup in 60 seconds Secure & reliable