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
timestampfield. 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
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
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | yes | - | Ticker symbol (e.g. AAPL) |
expiration | date | yes | - | Expiration date YYYYMMDD. Pass * to select all expirations for the underlying (chain-wide; query one date at a time). |
strike | string | no | * | Strike price in dollars as a string (e.g. 500 or 17.5). Use * for wildcard selection. |
right | string | no | both | Option side. Use both or * (alias) for calls and puts. Accepted values: call, put, both, *. |
date | date | no | - | 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_time | string | no | 09:30:00 | Start time filter |
end_time | string | no | 16:00:00 | End time filter |
annual_dividend | float | no | - | 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_type | string | no | sofr | Risk-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_value | float | no | - | 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_steps | int | no | 101 | Number 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. |
version | string | no | latest | Greeks model version. Accepted values: latest, 1. |
max_dte | int | no | - | Maximum days to expiration |
strike_range | int | no | - | Strike range filter |
start_date | date | no | - | Start date YYYYMMDD |
end_date | date | no | - | End date YYYYMMDD |
perf_boost_intraday | bool | no | false | When 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_ms | int | no | - | Per-request deadline in milliseconds. 0 means no deadline. |
Response
Rows of TradeGreeksSecondOrderTick:
| Field | Type | Description |
|---|---|---|
ms_of_day | i32 | Milliseconds since midnight Eastern Time. |
sequence | i32 | Exchange-assigned trade sequence number. |
ext_condition1 | i32 | Additional trade condition code. |
ext_condition2 | i32 | Additional trade condition code. |
ext_condition3 | i32 | Additional trade condition code. |
ext_condition4 | i32 | Additional trade condition code. |
condition | i32 | Trade 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. |
size | i32 | Number of contracts or shares traded. |
exchange | i32 | Exchange 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. |
price | f64 | Trade price. |
gamma | f64 | Rate of change of delta with respect to the underlying price. |
vanna | f64 | Sensitivity of delta to a change in implied volatility. |
charm | f64 | Rate of change of delta over time. |
vomma | f64 | Sensitivity of vega to a change in implied volatility. |
veta | f64 | Rate of change of vega over time. |
implied_volatility | f64 | Implied volatility solved from the option price. The vendor names this column IMPLIED_VOL. |
iv_error | f64 | Residual pricing error of the implied-volatility solve. |
underlying_ms_of_day | i32 | Timestamp of the underlying price, milliseconds since midnight ET. The vendor names this column MS_OF_DAY2. |
underlying_price | f64 | Underlying price used in the calculation (midpoint of the underlying). |
date | i32 | Trading date as a YYYYMMDD integer. |
underlying_date | i32 | Trading 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).