Skip to content

From Intrinio — Options Chain

Looking for a second source of option Greeks alongside Intrinio, or an alternative options chain API with dividend-aware, early-exercise-aware pricing? Lavender delivers independently computed Greeks through Intrinio's own wire format — no code changes required.

Already fetching option chains from Intrinio? 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 Intrinio API traffic. If you encounter any inconsistencies with Intrinio's wire format, please contact support@lavender-ts.com.

What Changes

curl -H "Authorization: Bearer YOUR_INTRINIO_KEY" \
     "https://api-v2.intrinio.com/options/chain/AAPL/2026-12-18/realtime?show_stats=true"
#      ^^^^^^^^^^^^^^^^^^^^^^^^
curl "http://localhost:2112/options/chain/AAPL/2026-12-18/realtime?show_stats=true"
#     ^^^^^^^^^^^^^^^^^^

Swap the host. Your api_key parameter or auth header is accepted and ignored.

Try it in your browser

http://localhost:2112/options/chain/SPY/2026-12-18/realtime?format=html

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

Same Response Format

The JSON you get back has the same chain array with nested option, price, and stats objects — just like Intrinio:

{
  "chain": [
    {
      "option": {
        "code": "AAPL261218C00230000",
        "ticker": "AAPL",
        "expiration": "2026-12-18",
        "expiration_time": "04:00 PM EST",
        "strike": 230.0,
        "type": "call"
      },
      "price": {
        "last": 0,
        "last_size": 0,
        "last_timestamp": "2026-03-14T14:30:45.123Z",
        "volume": 0,
        "bid": 0,
        "bid_size": 0,
        "bid_timestamp": "2026-03-14T14:30:45.123Z",
        "ask": 0,
        "ask_size": 0,
        "ask_timestamp": "2026-03-14T14:30:45.123Z",
        "open_interest": 0,
        "exercise_style": "A"
      },
      "stats": {
        "implied_volatility": 0.245,
        "delta": 0.5834,
        "gamma": 0.0198,
        "theta": -0.1425,
        "vega": 0.312,
        "underlying_price": 233.15
      }
    }
  ]
}

Market data fields are zeroed

The price object fields (last, bid, ask, volume, open_interest, etc.) are zeroed. The stats object contains Lavender's computed Greeks and implied volatility.


Endpoint

GET /options/chain/{symbol}/{expiration}/realtime

Both path parameters are required:

  • {symbol} — underlying ticker (e.g., AAPL), case-insensitive
  • {expiration} — expiration date (YYYY-MM-DD) or * for all expirations

Query Parameters

Parameter Type Required Description
show_stats string No true to include the stats object with Greeks. Otherwise stats is null
type string No call or put (omit for both)
strike number No Exact strike price
strike_greater_than number No Strike > value
strike_less_than number No Strike < value
api_key string No API key — accepted and ignored

Response Fields

Top Level

Field Type Description
chain array Array of option chain items

Per-Contract — Option

Field Type Description
code string OCC symbol (e.g., AAPL261218C00230000)
ticker string Underlying symbol
expiration string Expiration date (YYYY-MM-DD)
expiration_time string "04:00 PM EST" for PM-settled options, "09:30 AM EST" for AM-settled options
strike number Strike price
type string "call" or "put"

Per-Contract — Price (zeroed)

The price object is present for wire compatibility. Market data fields (last, last_size, volume, bid, bid_size, ask, ask_size, open_interest) are zeroed. Timestamp fields contain the current time. The exercise_style field is "A" (American) or "E" (European) based on the option root. The JSON example above shows the exact structure.

Per-Contract — Stats (when show_stats=true)

Field Type Description
implied_volatility number Annualized implied volatility
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\)
underlying_price number Current underlying spot price

When show_stats is not true, the stats field is null.

Greek Scaling

Theta is returned per calendar day. All other Greeks pass through without rescaling. All output values are rounded to 4 decimal places.

Migrating from Intrinio

One change:

  1. Base URL — replace https://api-v2.intrinio.com with http://localhost:2112

Your api_key parameter or Authorization header is accepted and ignored — leave it or remove it.

The endpoint path, query parameters, response shape, and field names are identical.

How Lavender's Greeks Differ

Intrinio computes Greeks using Black-Scholes with European-style assumptions. Running Lavender alongside Intrinio gives you a second perspective that accounts for:

  • Early exercise — Lavender prices American options, capturing the early exercise premium that Black-Scholes misses
  • Discrete dividends — Lavender uses the actual dividend schedule rather than a continuous yield approximation
  • Implied borrow rates — Lavender solves for the borrow rate per expiry to enforce put-call parity, producing consistent call/put Greeks even in hard-to-borrow names
  • 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 vanna, charm, volga, speed, and more via the Lavender API

Migrating to the Lavender Native API

Intrinio Lavender API
/{symbol} in path underlying= query param
option.expiration expiry
stats.implied_volatility lav_vol
stats.delta delta (flat)

Error Responses

Status Condition
200 Success
400 Missing or invalid symbol or expiration in path
502 Upstream data unavailable