Skip to content

From Tradier — Option Chains

Looking for a second source of option Greeks alongside Tradier, or an alternative option chain API with extended Greeks? Lavender delivers independently computed Greeks through Tradier's own wire format — no code changes required.

Already fetching option chains and Greeks from Tradier? Swap the host — your existing code works unchanged.

Beta compatibility

This compatibility layer has automated test coverage but has not yet been validated against live Tradier API traffic. If you encounter any inconsistencies with Tradier's wire format, please contact support@lavender-ts.com.

What Changes

curl -H "Authorization: Bearer YOUR_TRADIER_TOKEN" \
     "https://api.tradier.com/v1/markets/options/chains?symbol=SPY&expiration=2026-12-18&greeks=true"
#      ^^^^^^^^^^^^^^^^^^^^^
curl "http://localhost:2112/v1/markets/options/chains?symbol=SPY&expiration=2026-12-18&greeks=true"
#     ^^^^^^^^^^^^^^^^^^^^^^^^^^^

Swap the host. Your Tradier auth header is accepted and ignored.

Try it in your browser

http://localhost:2112/v1/markets/options/chains?symbol=SPY&greeks=true&format=html

Paste this into any browser to see Tradier-format Greeks rendered as an HTML table. No code needed.

Same Response Format

The JSON you get back has the same options.option structure Tradier returns:

{
  "options": {
    "option": [
      {
        "symbol": "SPY261218C00570000",
        "description": "SPY Dec 18 2026 $570.00 Call",
        "exch": "X",
        "type": "option",
        "last": 0,
        "change": 0,
        "change_percentage": null,
        "volume": 0,
        "average_volume": 0,
        "last_volume": 0,
        "trade_date": 1710417600,
        "open": null,
        "high": null,
        "low": null,
        "close": null,
        "prevclose": null,
        "week_52_high": 0,
        "week_52_low": 0,
        "bid": 0,
        "bidsize": 0,
        "bidexch": "X",
        "bid_date": 1710417600,
        "ask": 0,
        "asksize": 0,
        "askexch": "X",
        "ask_date": 1710417600,
        "open_interest": 0,
        "underlying": "SPY",
        "strike": 570.0,
        "contract_size": 100,
        "expiration_date": "2026-12-18",
        "expiration_type": "standard",
        "option_type": "call",
        "root_symbol": "SPY",
        "greeks": {
          "delta": 0.4512,
          "gamma": 0.0223,
          "theta": -0.0877,
          "vega": 0.2514,
          "rho": 0.3124,
          "phi": 0,
          "bid_iv": 0.2100,
          "mid_iv": 0.2346,
          "ask_iv": 0.2592,
          "smv_vol": 0.2346,
          "updated_at": "2026-03-14 12:00:00"
        }
      }
    ]
  }
}

Market data fields are zeroed

Fields like bid, ask, last, volume, and open_interest are zeroed. The greeks object and IV fields contain Lavender's computed values.


Endpoint

GET /v1/markets/options/chains

Parameters

Parameter Type Required Description
symbol string Yes Underlying ticker (e.g., SPY)
expiration string No YYYY-MM-DD or * for all expirations
greeks string No true to include the nested greeks object

Response Fields

Per-Contract — Identification

Field Type Description
symbol string OCC symbol (e.g., SPY261218C00570000)
description string Human-readable description
exch string Exchange code
type string Always "option"
underlying string Underlying ticker
strike number Strike price
option_type string "call" or "put"
expiration_date string YYYY-MM-DD
expiration_type string Always "standard"
root_symbol string Root symbol
contract_size integer Always 100

Per-Contract — Market Data (zeroed)

The remaining per-contract fields (last, change, change_percentage, volume, average_volume, last_volume, trade_date, open, high, low, close, prevclose, week_52_high, week_52_low, bid, bidsize, bidexch, bid_date, ask, asksize, askexch, ask_date, open_interest) are present for wire compatibility but contain zeroed or null values. The JSON example above shows the exact structure and values for each field.

Greeks (when greeks=true)

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\)
phi number Dividend rho (always 0)
bid_iv number Implied volatility at bid
mid_iv number Implied volatility at mid
ask_iv number Implied volatility at ask
smv_vol number Smoothed model volatility
updated_at string Timestamp (YYYY-MM-DD HH:MM:SS)

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 Compare

Tradier sources its Greeks from Orats, which uses a sophisticated modeling approach — more advanced than standard Black-Scholes. If you're using Tradier today, your Greeks already handle many real-world effects.

Running Lavender alongside Tradier gives you a second, independently computed perspective on the same contracts:

  • Independent model — Lavender computes Greeks using the Lavender model with different assumptions. Where the two reports agree, you have confirmation. Where they diverge, 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

Tradier Lavender API
symbol root
expiration_date expiry
greeks.delta delta (flat)
greeks.smv_vol lav_vol
greeks.mid_iv lav_vol

Error Responses

Status Condition
200 Success
400 Missing symbol parameter