Skip to content

option_history_greeks_eod

FreeValueStandardPro

Retrieve end-of-day Greeks history for an option contract across a date range.

Code Example

rust
let data = tdx
    .option_history_greeks_eod("SPY", "20260417", "0", "C", "20260101", "20260301")
    .strike_range(5)
    .await?;
for t in &data {
    println!("date={} implied_volatility={:.4} delta={:.4} gamma={:.4} theta={:.4} vega={:.4} rho={:.4}",
        t.date, t.implied_volatility, t.delta, t.gamma, t.theta, t.vega, t.rho);
}
python
data = tdx.option_history_greeks_eod(
    "SPY",
    "20260417",
    "0",
    "C",
    "20260101",
    "20260301",
    strike_range=5,
)
for t in data:
    print(f"date={t.date} implied_volatility={t.implied_volatility:.4f} delta={t.delta:.4f} "
          f"gamma={t.gamma:.4f} theta={t.theta:.4f} vega={t.vega:.4f} rho={t.rho:.4f}")
typescript
const data = tdx.optionHistoryGreeksEod(
    'SPY',
    '20260417',
    '0',
    'C',
    '20260101',
    '20260301',
    strike_range=5,
);
for (const t of data) {
    console.log(`date=${t.date} implied_volatility=${t.implied_volatility} delta=${t.delta} gamma=${t.gamma} theta=${t.theta} vega=${t.vega}`);
}
cpp
tdx::EndpointRequestOptions options;
options.strike_range = 5;
auto data = client.option_history_greeks_eod("SPY", "20260417", "0", "C", "20260101", "20260301", options);
for (const auto& t : data) {
    printf("date=%d implied_volatility=%.4f delta=%.4f gamma=%.4f theta=%.4f vega=%.4f rho=%.4f\n",
        t.date, t.implied_volatility, t.delta, t.gamma, t.theta, t.vega, t.rho);
}

Parameters

symbolstringrequired
Underlying symbol
expirationstringrequired
Expiration date in YYYYMMDD format
strikestringrequired
Strike price in dollars as a string
rightstringrequired
"C" for call, "P" for put
start_datestringrequired
Start date in YYYYMMDD format
end_datestringrequired
End date in YYYYMMDD format
annual_dividendfloatoptional
Override annual dividend
rate_typestringoptional
Interest rate type
rate_valuefloatoptional
Override interest rate value
versionstringoptional
Greeks calculation version
underlyer_use_nbbobooloptional
Use NBBO midpoint for underlying price instead of last trade
max_dteintoptional
Maximum days to expiration
strike_rangeintoptional
Strike range filter. This only narrows a wildcard bulk query; it does not expand a pinned strike into neighboring strikes.

For multi-strike EOD Greeks requests, use a wildcard strike selection first (strike="0" in ThetaDataDx SDK/MCP, strike=* in the v3 REST API), then apply strike_range.

Response

datestring
Trading date
implied_volatilityfloat
Implied volatility
deltafloat
Delta
gammafloat
Gamma
thetafloat
Theta
vegafloat
Vega
rhofloat
Rho
underlying_pricefloat
Underlying close price used

Sample Response

json
[
  {"date": 20260302, "implied_volatility": 0.0, "delta": 1.0, "gamma": 0.0, "theta": 0.0, "vega": 0.0, "rho": 0.0},
  {"date": 20260304, "implied_volatility": 0.2802, "delta": 0.9912, "gamma": 0.0003, "theta": -0.0725, "vega": 5.5669, "rho": 63.7867},
  {"date": 20260305, "implied_volatility": 0.2773, "delta": 0.9913, "gamma": 0.0003, "theta": -0.0704, "vega": 5.4231, "rho": 62.8102}
]

EOD Greeks for SPY 2026-04-17 550 call. Deep ITM calls show delta near 1.0. IV of 0.0 indicates the solver could not converge.

Notes

  • EOD Greeks are computed using the closing price. Use underlyer_use_nbbo to switch to the NBBO midpoint.
  • This is ideal for building daily Greeks time series for backtesting or risk reporting.

Released under the Apache-2.0 License.