Volatility index

SQL API

public_data.volatility_index

Minute-resolution OHLC bars of the volatility index published by an exchange. Currently the primary source is Deribit's DVOL for BTC and ETH — a 30-day forward-looking implied-volatility index analogous to the VIX in traditional finance.

Columns

Column
Type
Description

exchange

LowCardinality(String)

Exchange that publishes the index (deribit)

market

LowCardinality(String)

Underlying asset (BTC, ETH)

timestamp

DateTime64(9, 'UTC')

Bar timestamp

open

Decimal(76, 20)

Open value of the index for the bar

high

Decimal(76, 20)

High value

low

Decimal(76, 20)

Low value

close

Decimal(76, 20)

Close value

The index is quoted in annualised volatility percentage points: a value of 55.21 means a 55.21% annualised IV.

Example Queries

1. Latest BTC and ETH DVOL

SELECT
    timestamp,
    market,
    close
FROM public_data.volatility_index
WHERE exchange = 'deribit'
  AND market IN ('BTC', 'ETH')
  AND timestamp >= now() - INTERVAL 24 HOUR
ORDER BY timestamp DESC, market ASC
LIMIT 50

2. 1-hour resampled DVOL

The raw bars are at 1-minute resolution. Aggregate to whatever interval you need:

Functions used: toStartOfHour, argMin, argMax.

3. Variance risk premium (DVOL forecast vs forward-realised)

Compare the DVOL forecast on day D against the realised vol that actually unfolded over the next 30 days (D, D+30]. The difference is the ex-post variance risk premium — what a delta-hedged option seller pocketed (or paid) on a 30-day book opened at D. This is the textbook implied-vs-realised comparison and the basis for short-vol carry strategies.

The trick is the forward window — ROWS BETWEEN 1 FOLLOWING AND 30 FOLLOWING flips the usual trailing rolling-stddev around so each row's realised value is computed from the 30 days after it. The result drops 30 days from the recent end (you can't measure the realised vs a forecast whose window hasn't elapsed yet).

Functions used: toStartOfDay, toDate, toFloat64, log, sqrt, lagInFrame, stddevSamp.

Output (rolling 365 days, BTC)

A short summary across one year of forecasts:

metric
value

mean premium

+4.2 vol pts

median premium

+9.3 vol pts

days with negative premium

93 / 365 (≈25%)

largest positive premium

+24.1 vol pts (2025-12-07)

largest negative premium

−45.1 vol pts (2026-01-28)

Two things to read from this:

  1. Mean is positive but small; the median is materially higher. That's the variance risk premium signature — most days the forecast over-prices what unfolds, but a handful of tail months pull the mean down. Selling 30-day vol on a typical day is profitable; doing it indiscriminately is not.

  2. Tail events show up clearly. Late January 2026 had realised vol over 80% while DVOL was sitting around 38% — the forecast missed by 40+ vol points. A delta-hedged short straddle opened on those days lost roughly that spread, scaled by vega and time. The kind of event short-vol books exist to survive (or fail to).

Notes

  • The query uses calendar days (stddevSamp over 30 forward bars). For trading-day RV, replace the daily candles with 5-trading-day-week filters upstream.

  • The rolling 30-day stddev is sample (Bessel-corrected). Use stddevPop if you prefer the population estimator — the 1/29 vs 1/30 normalization difference is well under a basis point for our window sizes.

  • If you want the forward annualised RV in basis-point premium terms (instead of vol points), divide by dvol_forecast and multiply by 1e4. Useful for ranking days by relative misforecast magnitude.

REST API

Get volatility index OHLC

get

Returns OHLC (open / high / low / close) of an exchange's published volatility index for a given underlying. Currently the primary source is Deribit's DVOL (BTC and ETH).

This endpoint is limited to 10000 records per request.

Authorizations
x-api-keystringRequired

Required for /ohlcv and /trade endpoints. Pass your API key in the x-api-key header. Public /market/* endpoints do not require authentication.

Query parameters
exchangestringRequired

Exchange that publishes the index (e.g. deribit).

marketstringRequired

Underlying asset (e.g. BTC, ETH).

start_datetimestring · date-timeRequired

Window start. Accepts any format parseable by parseDateTime64BestEffort — e.g. a plain date (2026-03-01, treated as midnight UTC) or a full ISO 8601 timestamp (2026-03-01T12:00:00Z).

Example: 2026-03-01
end_datetimestring · date-timeRequired

Window end. Same format as start_datetime.

Example: 2026-03-08
Responses
200

OK

application/json
timestring · date-timeOptional

Bar timestamp (UTC)

exchangestringOptional

Exchange that publishes the index

marketstringOptional

Underlying asset

opennumber · decimalOptional

Open value of the index for the bar

highnumber · decimalOptional

High value

lownumber · decimalOptional

Low value

closenumber · decimalOptional

Close value

get
/volatility-index
200

OK

Last updated

Was this helpful?