First-Order Greeks
Get first-order Greeks snapshot (delta, theta, rho) for an option contract.
- Retrieve a real-time last greeks calculation for all option contracts that lie on a provided expiration.
- You might need to change the default expiration date to a different date if it is past the current date. Some quotes are omitted in the example to reduce the space of the sample output.
- Make
expiration* if you want to get the snapshot for every expiration chain for the underlying.
This endpoint will return no data if the market was closed for the day. Theta Data resets the snapshot cache at midnight ET every night.
pub fn option_snapshot_greeks_first_order(&self, symbol: &str, expiration: &str) -> OptionSnapshotGreeksFirstOrderBuilder<'_>Optional parameters chain on the builder: .strike(&str), .right(&str), .annual_dividend(f64), .rate_type(&str), .rate_value(f64), .stock_price(f64), .version(&str), .max_dte(i32), .strike_range(i32), .min_time(&str), .use_market_value(bool). Execute with .await → Result<Vec<GreeksFirstOrderTick>, Error>, or decode chunk-by-chunk with .stream(handler).
Example
let rows = tdx
.option_snapshot_greeks_first_order("SPY", "20250321")
.strike("570")
.right("C")
.await?;
for t in &rows {
println!("date={} delta={} theta={} vega={}", t.date, t.delta, t.theta, t.vega);
}Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
symbol | string | yes | — | Ticker symbol (e.g. AAPL) |
expiration | date | yes | — | Expiration date YYYYMMDD |
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. Accepted values: call, put, both. |
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. |
stock_price | float | no | — | Underlying price in dollars used in the Greeks calculation, overriding the observed underlying when set. |
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 |
min_time | string | no | — | Minimum time filter |
use_market_value | bool | no | false | When true, calculate Greeks against the option market value (mid-price) instead of the NBBO bid/ask pair. |
timeout_ms | int | no | — | Per-request deadline in milliseconds. 0 means no deadline. |
Response
Rows of GreeksFirstOrderTick:
| Field | Type | Description |
|---|---|---|
ms_of_day | i32 | Milliseconds since midnight Eastern Time. |
bid | f64 | Last NBBO bid price. |
ask | f64 | Last NBBO ask price. |
delta | f64 | Sensitivity of the option value to a one-dollar move in the underlying. |
theta | f64 | Sensitivity of the option value to the passage of time. |
vega | f64 | Sensitivity of the option value to a change in implied volatility. |
rho | f64 | Sensitivity of the option value to the risk-free rate. |
epsilon | f64 | Sensitivity of the option value to the dividend yield. |
lambda | f64 | Percent change in the option value per percent change in the underlying. |
implied_volatility | f64 | Implied volatility solved from the option price. |
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. |
underlying_price | f64 | Underlying price used in the calculation (midpoint of the underlying). |
date | i32 | Trading 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).