Skip to content

Second-Order Binomial Trade Greeks ​

FreeValueStandardPro

Fetch second-order binomial Greeks on each trade for an option contract.

  • Returns the data for all contracts that share the same provided symbol and expiration.
  • Greeks are calculated with a Leisen-Reimer binomial tree that allows early exercise at every node, so the values are American-style.
  • Calculates greeks for every trade reported by OPRA.
  • The underlying price represents whatever the last underlying price was at the timestamp field. You can read more about how Theta Data calculates greeks here.
  • Multi-day requests are limited to 1 month of data, and must specify an expiration.
SPY · 20250321
Client
Auth
Style
from thetadatadx import Client

client = Client.from_env()

rows = client.market_data.option_history_binomial_trade_greeks_second_order(
    "SPY", "20250321",
    strike="570", right="C", date="20250303",
)
for t in rows:
    print(t.ms_of_day, t.price, t.gamma, t.vanna)
Sample response · JSON
[
  {
    "charm": -2.3902,
    "condition": 125,
    "exchange": 6,
    "ext_condition1": 255,
    "ext_condition2": 255,
    "ext_condition3": 255,
    "ext_condition4": 255,
    "gamma": 0.0518,
    "implied_vol": 0.321,
    "iv_error": 0,
    "price": 2.73,
    "sequence": 302911465,
    "size": 1,
    "timestamp": "2024-11-04T10:30:07.884",
    "underlying_price": 221.69,
    "underlying_timestamp": "2024-11-04T10:30:07.000",
    "vanna": 0.1323,
    "veta": 413.8768,
    "vomma": 0.2274
  },
  {
    "charm": -2.3902,
    "condition": 125,
    "exchange": 43,
    "ext_condition1": 255,
    "ext_condition2": 255,
    "ext_condition3": 255,
    "ext_condition4": 255,
    "gamma": 0.0518,
    "implied_vol": 0.321,
    "iv_error": 0,
    "price": 2.73,
    "sequence": 302911466,
    "size": 1,
    "timestamp": "2024-11-04T10:30:07.884",
    "underlying_price": 221.69,
    "underlying_timestamp": "2024-11-04T10:30:07.000",
    "vanna": 0.1323,
    "veta": 413.8768,
    "vomma": 0.2274
  },
  {
    "charm": -2.3902,
    "condition": 125,
    "exchange": 5,
    "ext_condition1": 255,
    "ext_condition2": 255,
    "ext_condition3": 255,
    "ext_condition4": 255,
    "gamma": 0.0518,
    "implied_vol": 0.321,
    "iv_error": 0,
    "price": 2.73,
    "sequence": 302911481,
    "size": 1,
    "timestamp": "2024-11-04T10:30:07.884",
    "underlying_price": 221.69,
    "underlying_timestamp": "2024-11-04T10:30:07.000",
    "vanna": 0.1323,
    "veta": 413.8768,
    "vomma": 0.2274
  }
]

Parameters ​

NameTypeRequiredDefaultDescription
symbolstringyes-Ticker symbol (e.g. AAPL)
expirationdateyes-Expiration date YYYYMMDD. Pass * to select all expirations for the underlying (chain-wide; query one date at a time).
strikestringno*Strike price in dollars as a string (e.g. 500 or 17.5). Use * for wildcard selection.
rightstringnobothOption side. Use both or * (alias) for calls and puts. Accepted values: call, put, both, *.
datedateno-Single date YYYYMMDD. Supply this for a single-day pull, or supply start_date/end_date for a range. When present, date takes precedence over the range.
start_timestringno09:30:00Start time filter
end_timestringno16:00:00End time filter
annual_dividendfloatno-Annualized expected dividend amount, in dollars per share, used in the Greeks calculation (e.g. 2.5 is $2.50 per share per year).
rate_typestringnosofrRisk-free-rate source used in the Greeks calculation. Accepted values: sofr, treasury_m1, treasury_m3, treasury_m6, treasury_y1, treasury_y2, treasury_y3, treasury_y5, treasury_y7, treasury_y10, treasury_y20, treasury_y30.
rate_valuefloatno-Interest rate as a percent (4.36 means 4.36%, matching the InterestRateTick.rate convention) used in the Greeks calculation. Applied when rate_type selects a manual rate.
binomial_stepsintno101Number of steps in the binomial tree used for the Greeks calculation. Accurate at higher values and cheaper at lower ones; the server's cost grows with the square of the value. An even value is rounded up to the next odd one, and an expiration=* request is capped at 101 steps.
versionstringnolatestGreeks model version. Accepted values: latest, 1.
max_dteintno-Maximum days to expiration
strike_rangeintno-Strike range filter
start_datedateno-Start date YYYYMMDD
end_datedateno-End date YYYYMMDD
perf_boost_intradayboolnofalseWhen true, the underlying price for a current-day query is looked up with 1-second precision instead of millisecond precision, which answers faster. Defaults to false, matching the terminal, which sends false when the value is omitted.
timeout_msintno-Per-request deadline in milliseconds. 0 means no deadline.

Response ​

Rows of TradeGreeksSecondOrderTick:

FieldTypeDescription
ms_of_dayi32Milliseconds since midnight Eastern Time.
sequencei32Exchange-assigned trade sequence number.
ext_condition1i32Additional trade condition code.
ext_condition2i32Additional trade condition code.
ext_condition3i32Additional trade condition code.
ext_condition4i32Additional trade condition code.
conditioni32Trade condition code. Zero is a code the vendor assigns a meaning, so read columns() to tell a reported zero from a response that carried no such column.
sizei32Number of contracts or shares traded.
exchangei32Exchange code where the trade executed. Zero is a code the vendor assigns a meaning, so read columns() to tell a reported zero from a response that carried no such column.
pricef64Trade price.
gammaf64Rate of change of delta with respect to the underlying price.
vannaf64Sensitivity of delta to a change in implied volatility.
charmf64Rate of change of delta over time.
vommaf64Sensitivity of vega to a change in implied volatility.
vetaf64Rate of change of vega over time.
implied_volatilityf64Implied volatility solved from the option price. The vendor names this column IMPLIED_VOL.
iv_errorf64Residual pricing error of the implied-volatility solve.
underlying_ms_of_dayi32Timestamp of the underlying price, milliseconds since midnight ET. The vendor names this column MS_OF_DAY2.
underlying_pricef64Underlying price used in the calculation (midpoint of the underlying).
datei32Trading date as a YYYYMMDD integer.
underlying_datei32Trading date of the underlying price as a YYYYMMDD integer, decoded from the same wire column as underlying_ms_of_day. It differs from date when the underlying price and the option quote come from different sessions.

Wildcard requests additionally populate expiration (YYYYMMDD), strike (dollars), and right ("C" / "P") on every row to identify the contract; on single-contract requests these are absent (None / null / undefined; the Rust and C rows carry the documented 0 / 0.0 / '\0' fills).

Released under the Apache-2.0 License.