Volatility Skew

Overview

Volatility Skew returns the implied-volatility surface for one ticker at a snapshot in time. The response walks expiration date -> strike (dollars) ->contract type, where the leaf is the contract's fractional implied volatility.

POST/v1/options/tool/volatility-skew
curl -X POST https://api.quantdata.us/v1/options/tool/volatility-skew \
  -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. Volatility Skew does not accept filterExpression.

Pinned to a snapshot, calls only, one expiration

Request · snapshotTime + filter
{
  "snapshotTime": "2026-05-13T16:30:00Z",
  "filter": {
    "ticker": "AAPL",
    "contractTypes": ["CALL"],
    "expirationDate": "2026-05-16"
  }
}

Selecting the snapshot

Volatility Skew 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. Each leaf is a fractional implied volatility (e.g. 0.25 means 25%). 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": {
      "210.0": { "CALL": 0.2812, "PUT": 0.2952 },
      "215.0": { "CALL": 0.2622, "PUT": 0.2778 },
      "220.0": { "CALL": 0.2538, "PUT": 0.2612 },
      "225.0": { "CALL": 0.2680, "PUT": 0.2820 }
    },
    "2026-05-23": {
      "220.0": { "CALL": 0.2622, "PUT": 0.2680 }
    }
  }
}

Filters

Convenience filter fields: ticker (required), contractTypes, expirationDates, expirationDateRange.

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

Where to go next