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 stockPrice is 0.0.

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