Term Structure

Overview

Term Structure returns delta, implied volatility, and moneyness for one ticker at a snapshot in time. The response walks expiration date -> strike (dollars) -> contract type, so you can index any cell by (expiration, strike, CALL | PUT).

POST/v1/options/tool/term-structure
curl -X POST https://api.quantdata.us/v1/options/tool/term-structure \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "sessionDate": "2026-05-13",
    "filter": { "ticker": "AAPL" }
  }'

Required: ticker

filter.ticker is required. Term Structure does not accept filterExpression.

Pinned to a snapshot, narrowed by expiration and delta band

Request · snapshotTime + filter
{
  "snapshotTime": "2026-05-13T16:30:00Z",
  "filter": {
    "ticker": "AAPL",
    "expirationDateRange": { "startDate": "2026-05-16", "endDate": "2026-06-20" },
    "deltaRange": { "min": 0.3, "max": 0.7 }
  }
}

Selecting the snapshot

Term Structure supports sessionDate for the latest snapshot of a given session, or snapshotTime for a specific instant. The two are mutually exclusive; if both are omitted, the latest snapshot of the current session is returned.

Response shape

data is the nested grid; stockPrice is the underlying price at the snapshot. When the filter matches no contracts, data is empty and stockPricestill reflects the session's underlying price. If no usable underlying price exists for the session, the term structure cannot be computed and the request returns 422 · data-unavailable instead.

200 OK · application/json
{
  "stockPrice": 218.45,
  "data": {
    "2026-05-16": {
      "215.0": {
        "CALL": { "delta": 0.612, "iv": 0.2538, "moneyType": "ITM" },
        "PUT": { "delta": -0.388, "iv": 0.2612, "moneyType": "OTM" }
      },
      "220.0": {
        "CALL": { "delta": 0.481, "iv": 0.2544, "moneyType": "ATM" },
        "PUT": { "delta": -0.519, "iv": 0.2598, "moneyType": "ATM" }
      }
    },
    "2026-05-23": {
      "220.0": {
        "CALL": { "delta": 0.504, "iv": 0.2602, "moneyType": "ATM" },
        "PUT": { "delta": -0.496, "iv": 0.2658, "moneyType": "ATM" }
      }
    }
  }
}

Per-cell fields:

  • delta: Black-Scholes delta for the leg. Calls in [0, 1]; puts in [-1, 0].
  • iv: implied volatility (fractional).
  • moneyType: ATM, ITM, or OTM.

Filters

Convenience filter fields: ticker (required), expirationDates, expirationDateRange, strikePrices, strikePriceRange, moneyTypes, deltaRange (each bound in [-1, 1]).

See Field Reference for the type and allowed values of every filterable field.

Where to go next