Skip to content

First-Order Trade Greeks

FreeValueStandardPro

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

  • Returns the data for all contracts that share the same provided symbol and expiration.
  • 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.
rust
pub fn option_history_trade_greeks_first_order(
    &self,
    symbol: &str,
    expiration: &str,
    date: &str,
) -> OptionHistoryTradeGreeksFirstOrderBuilder<'_>

Optional parameters chain on the builder: .strike(&str), .right(&str), .start_time(&str), .end_time(&str), .annual_dividend(f64), .rate_type(&str), .rate_value(f64), .version(&str), .max_dte(i32), .strike_range(i32), .start_date(&str), .end_date(&str). Execute with .awaitResult<Vec<TradeGreeksFirstOrderTick>, Error>, or decode chunk-by-chunk with .stream(handler).

Example

rust
let rows = tdx
    .option_history_trade_greeks_first_order("SPY", "20250321", "20250303")
    .strike("570")
    .right("C")
    .await?;
for t in &rows {
    println!("ms_of_day={} price={} delta={} theta={}", t.ms_of_day, t.price, t.delta, t.theta);
}

Parameters

NameTypeRequiredDefaultDescription
symbolstringyesTicker symbol (e.g. AAPL)
expirationdateyesExpiration date YYYYMMDD
datedateyesDate YYYYMMDD
strikestringno*Strike price in dollars as a string (e.g. 500 or 17.5). Use * for wildcard selection.
rightstringnobothOption side. Accepted values: call, put, both.
start_timestringno09:30:00Start time filter
end_timestringno16:00:00End time filter
annual_dividendfloatnoAnnualized 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_valuefloatnoInterest 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.
versionstringnolatestGreeks model version. Accepted values: latest, 1.
max_dteintnoMaximum days to expiration
strike_rangeintnoStrike range filter
start_datedatenoStart date YYYYMMDD
end_datedatenoEnd date YYYYMMDD
timeout_msintnoPer-request deadline in milliseconds. 0 means no deadline.

Response

Rows of TradeGreeksFirstOrderTick:

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.
sizei32Number of contracts or shares traded.
exchangei32Exchange code where the trade executed.
pricef64Trade price.
deltaf64Sensitivity of the option value to a one-dollar move in the underlying.
thetaf64Sensitivity of the option value to the passage of time.
vegaf64Sensitivity of the option value to a change in implied volatility.
rhof64Sensitivity of the option value to the risk-free rate.
epsilonf64Sensitivity of the option value to the dividend yield.
lambdaf64Percent change in the option value per percent change in the underlying.
implied_volatilityf64Implied volatility solved from the option price.
iv_errorf64Residual pricing error of the implied-volatility solve.
underlying_ms_of_dayi32Timestamp of the underlying price, milliseconds since midnight ET.
underlying_pricef64Underlying price used in the calculation (midpoint of the underlying).
datei32Trading date as a YYYYMMDD integer.

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).

Example response

ms_of_daysequenceext_condition1ext_condition2ext_condition3ext_condition4conditionsizeexchangepricedeltathetavegarhoepsilonlambdaimplied_volatilityiv_errorunderlying_ms_of_dayunderlying_pricedate
3437294018468526002552552552551813161.050.7045-0.1037164.371239.2069-282.52796.52170.2001034372000565.1320250502

Decoded from a captured production response; 1 of 1 rows shown.

Released under the Apache-2.0 License.