Skip to content

Option-Greeks ​

Model ​

Theta Data uses the Black Scholes for all Greeks calculations. More specifically, we use the formulas outlined here.

Tick by Tick ​

A tick is defined as a row of data. Theta Data calculates Greeks for each tick of data and uses the exact underlying tick (price) at the time of the option tick.

Implied Volatility Guess ​

We use a fast bisection method to calculate implied volatility. If a close to perfect solution does not exist, you will notice the iv_error value in Greeks requests will begin to increase. This happens with deep in the money or out of the money contracts. This behavior can be found with other models / data providers.

Weird Values? ​

Let us know, but before you do realize:

  1. Rho & Vega must be divided by 100 to get their value.

  2. We use the EU pricing model outlined above.

Parameters ​

Dividends ​

By default, Theta Data calculates Greeks with no dividend. You can supply one of two parameters:

ParameterUnitExample
annual_dividendAnnualized continuous dividend yield, as a decimal0.0042 for a 0.42% yield
annual_dividend_amountAnnual dividend per share, in dollars0.96 for $0.96 per year

annual_dividend is used directly as the dividend yield. annual_dividend_amount is converted to a yield for each tick by dividing it by the underlying price used for that tick; if that price is 0, the tick is calculated with no dividend. A request that sets both to non-zero values is rejected.

Rates ​

By default, Theta Data uses SOFR as its interest rate. SOFR is reported 1 day after the report date. Theta Data uses the last provided SOFR rate for current day data Greeks calculations. You can specify the rate parameter to override this behavior.

Version ​

By default, for contracts with fewer than 7 days remaining, DTE is computed using the quote timestamp. For contracts beyond 7 DTE, a whole-number DTE is used. To use the legacy behavior, set version = 1. The legacy calculation applies a fixed DTE of 0.15 on same-day expiration and uses a whole-number DTE for all other cases.

End of Day Option Price ​

The end of day Greeks and end of day binomial Greeks solve implied volatility against the midpoint of the option's closing NBBO by default. Set option_use_nbbo=false to solve against the option's last trade price of the day (close) instead, which is what v2 eod_greeks uses. A contract with no trades on the day has a close of 0, so its implied volatility and Greeks are not meaningful in this mode. The underlying price is selected separately with underlyer_use_nbbo. End of day Greeks always use a whole-number DTE, with 0.15 on the day of expiration.

Binomial Greeks ​

The binomial_greeks and binomial_trade_greeks endpoints mirror the regular Greeks endpoints, but calculate with a Leisen-Reimer binomial tree. American-style options can be exercised early at every node of the tree; European-style options only at expiration. See Exercise Style.

FamilyEndpoints
Snapshotall, first order, second order, third order
Historyall, end of day, first order, second order, third order
History, per tradeall, first order, second order, third order

The same dividend, rate and version parameters described above apply, and rho and vega must still be divided by 100. The all and eod endpoints also return vera, dual_delta, dual_gamma, d1 and d2; d1 and d2 are computed from the volatility the tree solved for.

Step Count ​

The binomial_steps parameter sets how many steps the tree is built with. It defaults to 101 and accepts 5 to 201; even values are rounded up to the next odd one. More steps are more accurate but slower, and the cost of a request grows with the square of this value. Requests for every expiration (expiration=*) are capped at 101 steps.

Exercise Style ​

The following European-style index option roots are priced as European. Every other root is priced as American.

IndexRoots
S&P 500SPX, SPXW, SPXPM, SPXQ, XSP
Nasdaq-100NDX, NDXP, XND
Russell 2000RUT, RUTW, RUTQ, MRUT
Cboe Volatility IndexVIX, VIXW
Dow Jones Industrial AverageDJX
S&P 100XEO

Set exercise_style to american or european to override the style for a request. For example, exercise_style=american on SPXW reproduces the American early-exercise tree output.

Implied Volatility ​

implied_vol is solved on the binomial tree wherever early exercise can add value, and uses Black-Scholes everywhere else:

ContractHow implied_vol is solved
European-styleBlack-Scholes
American-style putsBinomial tree
American-style calls with annual_dividend or annual_dividend_amount suppliedBinomial tree
American-style calls with no dividendBlack-Scholes

On contracts solved on the tree, implied_vol will not match the Black-Scholes endpoints for the same contract.

Implied Volatility Method ​

implied_vol_method sets where each contract's implied volatility comes from:

implied_vol_methodImplied volatility
own_quote (default)The contract's own bid/ask midpoint.
out_of_the_moneyThe out-of-the-money option at the same strike, shared by its call and put.

Deep in-the-money midpoints are mostly intrinsic value, so their implied volatility and delta are noisy, and some return an implied volatility of 0 and a delta of ±1. Out-of-the-money options are all time value, so out_of_the_money is considered to be more stable.

How out_of_the_money works. Each expiration is solved from its own quotes at each timestamp:

StepMethod
Underlying priceF = K + e^(rT) * (C - P) at the strike where call and put are closest, averaged with its two neighbours, then F * e^(-(r - q)T). Falls back to the underlying's own price.
RateEuropean-style, 30+ days out, rate left to SOFR: fitted from the slope of C - P against K, which is -e^(-rT). Falls back to SOFR. A rate_value or other rate_type is used as given.
Quoted strikesThe out-of-the-money side is solved from (bid + ask) / 2. A bid of 0 counts as unquoted.
Between quoted strikesInterpolated linearly.
Past the last quoted strikeTotal variance iv^2 * T extended linearly against |ln(K / S)|.

All Greeks use this underlying price and rate. underlying_price still reports the underlying's own price.

Response columns.

implied_vol_sourceMeaning
own_quoteSolved from the row's own midpoint.
out_of_the_moneySolved from the out-of-the-money option at the same strike.
interpolatedInterpolated between solved strikes.
extrapolatedExtended past the outermost solved strike. An estimate.

Under out_of_the_money, iv_error is (model price - midpoint) / midpoint.

Request requirements.

EndpointsRequirements
Snapshot binomial_greeksstrike=* and right=both
History binomial_greeks (all, first, second and third order)strike=*, right=both, and an interval
History binomial_greeks/eodstrike=*, right=both, and option_use_nbbo=true (the default)

Other out_of_the_money requests return a 400 error. binomial_trade_greeks does not support implied_vol_method.

Limitations.

  • American-style options spanning an ex-dividend date can price outside their spread when in the money.
  • American-style options use SOFR or the requested rate, not an implied rate.
  • extrapolated values far from the money are estimates.

Underlying History Limitations ​

For NDX and other Nasdaq GIDS symbols, the underlying price data coverage starts on 2026-05-11. Greeks for NDX options prior to this date cannot be computed from historical underlying data. Use the stock_price parameter on greeks snapshot requests to supply your own underlying price when needed.