From LiveVol — Option Quotes¶
Looking for a second source of option Greeks alongside LiveVol, or an independent set of Greeks to compare against the Hanweck analytics engine? Lavender delivers independently computed Greeks through LiveVol's own wire format — no code changes required.
Already fetching option quotes from the Cboe All Access API? Swap the host — your existing code works unchanged.
Differences from LiveVol¶
Lavender matches LiveVol's wire format with a few specific differences worth knowing when migrating:
- Market-data fields are zeroed.
option_bid,option_ask,option_volume,open_interest, and other quote/trade fields come back with0or null values. Lavender computes Greeks; it does not redistribute OPRA quotes. - Auth header accepted-but-ignored. Your LiveVol Bearer token is accepted by the listener and discarded.
For the modeling differences (American exercise, discrete dividends, calibrated borrow), see How Lavender's Greeks Differ below.
What Changes¶
Swap the host. Your LiveVol auth header is accepted and ignored.
Try it in your browser¶
Paste this into any browser to see LiveVol-format Greeks rendered as an HTML table. No code needed.
Same Response Format¶
The JSON you get back is an envelope object with a top-level options[] array plus aggregate snapshot fields (timestamp, symbol, iv30 family, underlying NBBO + OHLC) — the same structure CBOE LiveVol returns:
{
"symbol": "SPY",
"timestamp": "15:30:45.123",
"iv30": 0,
"iv30_change": 0,
"iv30_change_percent": 0,
"seq_no": 1842,
"implied_underlying_bid": 567.41,
"implied_underlying_ask": 567.41,
"implied_underlying_mid": 567.41,
"implied_underlying_bid_size": 0,
"implied_underlying_ask_size": 0,
"implied_underlying_indicator": "green",
"underlying_bid": 567.41,
"underlying_ask": 567.41,
"underlying_mid": 567.41,
"underlying_last_trade_price": null,
"underlying_last_trade_size": null,
"underlying_open": null,
"underlying_high": null,
"underlying_low": null,
"underlying_close": null,
"underlying_prev_day_close": null,
"underlying_volume": null,
"options": [
{
"symbol": "SPY",
"root": "SPY",
"expiry": "2026-12-18",
"strike": 570.0,
"option_type": "C",
"timestamp": "15:30:45.123",
"option": "SPY261218C00570000",
"delta": 0.4512,
"gamma": 0.0223,
"theta": -0.0877,
"vega": 0.2514,
"rho": 0.3124,
"iv": 0.2346,
"mid_iv": 0.2346,
"cboe_theo": 18.23,
"option_bid": 0,
"option_ask": 0,
"option_mid": 0,
"option_last_trade_price": null,
"option_volume": 0,
"option_trade_count": 0,
"open_interest": 0,
"option_bid_size": 0,
"option_ask_size": 0
}
]
}
CSV and NDJSON are flat per-row (one row per option, no envelope wrap).
Market data fields are zeroed
Per-option option_bid, option_ask, option_volume, and open_interest are zeroed. Top-level underlying NBBO is synthesized from the root mid; OHLC fields are null. The Greeks, iv, mid_iv, and cboe_theo fields contain Lavender's computed values.
Endpoint¶
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
symbol |
string | Yes | Underlying ticker (e.g., SPY) |
option_type |
string | No | C for calls, P for puts (omit for both) |
root |
string | No | Filter by root symbol |
min_strike |
number | No | Minimum strike price |
max_strike |
number | No | Maximum strike price |
min_expiry |
string | No | Minimum expiration (YYYY-MM-DD) |
max_expiry |
string | No | Maximum expiration (YYYY-MM-DD) |
Response Fields¶
The response is an envelope object: top-level fields describe the snapshot as a whole, and options[] is the per-option array.
Top-level fields¶
| Field | Type | Description |
|---|---|---|
symbol |
string | Underlying ticker the request was for |
timestamp |
string | Snapshot time, HH:mm:ss.fff |
seq_no |
integer | Monotonic per-process counter |
iv30, iv30_change, iv30_change_percent |
number | 30-day implied vol family. All 0 -- Lavender does not compute a 30-day surface IV here. |
implied_underlying_bid, _ask, _mid |
number | Synthesized from the root mid with a zero spread. |
implied_underlying_bid_size, _ask_size |
integer | 0 |
implied_underlying_indicator |
string | "green" |
underlying_bid, _ask, _mid |
number | Synthesized from the root mid. |
underlying_last_trade_price, _last_trade_size, _open, _high, _low, _close, _prev_day_close, _volume |
number/null | All null -- Lavender computes Greeks; it does not redistribute OPRA quotes. |
Per-option identification¶
| Field | Type | Description |
|---|---|---|
symbol |
string | Underlying ticker (matches the top-level symbol) |
root |
string | Option root |
expiry |
string | Expiration date (YYYY-MM-DD) |
strike |
number | Strike price |
option_type |
string | "C" (call) or "P" (put) |
timestamp |
string | Snapshot time, HH:mm:ss.fff |
option |
string | OCC symbol (spaces removed) |
Greeks¶
| Field | Type | Description |
|---|---|---|
delta |
number | \(\partial V / \partial S\) |
gamma |
number | \(\partial^2 V / \partial S^2\) |
theta |
number | \(\partial V / \partial t\) — per calendar day |
vega |
number | \(\partial V / \partial \sigma\) |
rho |
number | \(\partial V / \partial r\) |
Volatility & Pricing¶
| Field | Type | Description |
|---|---|---|
iv |
number | Theoretical implied volatility |
mid_iv |
number | Mid-market implied volatility |
cboe_theo |
number | Theoretical option price |
Option Market Data (zeroed)¶
The remaining per-option fields (option_bid, option_ask, option_mid, option_last_trade_price, option_open, option_high, option_low, option_close, option_prev_day_close, option_volume, option_trade_count, open_interest, option_bid_size, option_ask_size) are present in the response with zeroed or null values.
Greek Scaling¶
All Greeks are in natural units. Theta is returned per calendar day. All output values are rounded to 4 decimal places.
How Lavender's Greeks Differ¶
Running Lavender alongside LiveVol gives you a second, independently computed perspective on the same contracts:
- Independent model — Lavender computes Greeks using different modeling assumptions. Where the two reports agree, you have confirmation. Where they diverge — particularly around ex-dates, deep ITM, or illiquid strikes — you have a signal worth investigating.
- Two views of time decay — conventional theta (\(\partial V / \partial t\)) on this endpoint, plus a separate decay metric (expected change to next trading day, accounting for weekends and holidays) on the Lavender API
- Extended Greeks — access second and third-order Greeks via the Lavender API.
Migrating to the Lavender Native API¶
| LiveVol | Lavender API |
|---|---|
symbol |
underlying= (expands to all roots) |
root (filter) |
root= (single root) |
expiry |
expiry |
iv |
vol |
cboe_theo |
theo |
Error Responses¶
| Status | Condition |
|---|---|
200 |
Success |
400 |
Missing symbol parameter |
502 |
Upstream data unavailable |
Error response body¶
Errors return a JSON envelope:
See also¶
- Field Reference — every L1 field with units, source, and example values
- Greek Conventions — sign conventions, units, and the full extended Greeks catalog
- Verify the Greeks — derive each Greek from first principles and check against the API