---
title: "A stock's daily implied-volatility history, newest first: constant-30-day implied volatility (`derivedIv30`), IV rank and IV percentile over the trailing year, the at-the-money IV of the near and far expirations, and 30-session realized volatility. Two bases are stated apart and never blended: derived figures come from our model on each session's at-the-money option closes with the stock close (ranked, stored from 2024-01-18), and quoted figures from the source's model captured in the session's last quarter hour (from launch, unranked); each session carries the contract and trade counts behind its derived figure, and a session without enough traded contracts has none. Volatilities are decimal fractions and rank and percentile run 0 to 100. A stock the one-time backfill has not reached yet is queued by the first read and answers with `coverage.backfillComplete: false` and a `notice`. `startDate` and `endDate` set the window (default: the last year). Plus and Pro read it; the Free plan covers end-of-day data only and receives 403. US listings only."
method: GET
path: "/v1/stocks/{ticker}/options/volatility"
tags: ["Options"]
---

# A stock's daily implied-volatility history, newest first: constant-30-day implied volatility (\`derivedIv30\`), IV rank and IV percentile over the trailing year, the at-the-money IV of the near and far expirations, and 30-session realized volatility. Two bases are stated apart and never blended: derived figures come from our model on each session's at-the-money option closes with the stock close (ranked, stored from 2024-01-18), and quoted figures from the source's model captured in the session's last quarter hour (from launch, unranked); each session carries the contract and trade counts behind its derived figure, and a session without enough traded contracts has none. Volatilities are decimal fractions and rank and percentile run 0 to 100. A stock the one-time backfill has not reached yet is queued by the first read and answers with \`coverage.backfillComplete: false\` and a \`notice\`. \`startDate\` and \`endDate\` set the window (default: the last year). Plus and Pro read it; the Free plan covers end-of-day data only and receives 403. US listings only.

`GET /v1/stocks/{ticker}/options/volatility`

## Request

- Base URL: `https://api.equibles.com`
- URL: `https://api.equibles.com/v1/stocks/{ticker}/options/volatility`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/equibles/apis/equibles-api/docs/v1/stocks/:ticker/options/volatility/get.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `ticker` string, required

## Query parameters

- `startDate` string
- `endDate` string
- `limit` integer

## Response `200`

OK

- OptionVolatilityHistoryResponse
  - `ticker` string, nullable
  - `companyName` string, nullable
  - `startDate` string, date
  - `endDate` string, date
  - `returned` integer
  - `truncated` boolean: True when older sessions exist in the window; pass the oldest session as `endDate`, or raise `limit`.
  - `delayed` boolean: True on Plus, where a quoted capture younger than 15 minutes is withheld; derived figures are end-of-day and never withheld.
  - `coverage` OptionVolatilityCoverageDto
    - `backfillComplete` boolean: False while the one-time backfill has not reached this stock; a first read queues it.
    - `backfilledFrom` string, date, nullable
    - `lastSession` string, date, nullable
    - `lastQuotedSession` string, date, nullable
    - `cadence` string, nullable: `nightly`, or `weekly` for a stock whose at-the-money contracts have not traded for 20 sessions.
  - `notice` string, nullable: Present while the series is still being built for this stock.
  - `sessions` OptionVolatilitySessionDto[], nullable
    - `session` string, date
    - `underlyingClose` number, double, nullable
    - `riskFreeRatePercent` number, double, nullable
    - `derivedIv30` number, double, nullable: Constant-30-day implied volatility from our model on the session's at-the-money option closes.
    - `derivedBasis` string, nullable: `interpolated` between a near and a far expiration, `nearestExpiry` when one leg was available, `none` when no figure.
    - `derivedContracts` integer
    - `derivedTrades` integer
    - `ivRank` number, double, nullable: Where the derived IV30 sits in its trailing-year range, 0 to 100; null under 60 sessions with a figure.
    - `ivPercentile` number, double, nullable: Share of the trailing year's sessions with a derived IV30 at or below this one, 0 to 100.
    - `rankSessions` integer
    - `quotedIv30` number, double, nullable: Constant-30-day implied volatility from the source's model, captured in the session's last quarter hour; unranked.
    - `quotedBasis` string, nullable
    - `quotedContracts` integer
    - `quotedUnderlyingPrice` number, double, nullable
    - `quotedCapturedAt` string, date-time, nullable
    - `quotedWithheld` boolean: True when the plan's delay withholds this session's quoted figures for now.
    - `realizedVolatility30` number, double, nullable: The stock's trailing 30-session realized volatility from adjusted closes.
    - `expirations` OptionVolatilityExpirationDto[], nullable
      - `expiration` string, date
      - `days` integer
      - `atmStrike` number, double, nullable
      - `derivedAtmIv` number, double, nullable
      - `derivedContracts` integer
      - `derivedTrades` integer
      - `quotedAtmIv` number, double, nullable
      - `quotedContracts` integer
      - `quotedAtmStrike` number, double, nullable

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `503`: Service Unavailable

---

[API](https://skmtc.dev/equibles/apis/equibles-api.md) - [All operations](https://skmtc.dev/equibles/apis/equibles-api/llms.txt) - [OpenAPI document](https://skmtc.dev/equibles/apis/equibles-api/revisions/666e06778588?raw)
