OPEX (options expiration) is the day options contracts expire. In crypto, contracts expire on multiple cadences:Documentation Index
Fetch the complete documentation index at: https://docs.backquant.com/llms.txt
Use this file to discover all available pages before exploring further.
- Daily expirations — BTC and ETH have daily 0DTE contracts on Deribit
- Weekly expirations — every Friday, smaller OI
- Monthly expirations — the last Friday of each month, much larger OI
- Quarterly expirations — last Friday of March, June, September, December — the heaviest of all
Why this distinction matters
Monthly/quarterly expirations have:- 5–10× the OI of weeklies in the same week
- Roll activity in the 3–5 days before — rolling positions to the next expiry can move spot
- Pin risk from large dealer hedges unwinding on expiry day
- Vol regime shifts as the GEX picture redistributes after the expiry-day delta unwind
The classification BackQuant returns
Every expiration in our responses comes pre-classified with atype
field — you don’t have to parse Deribit-style tokens or detect
last-Friday-of-month rules client-side:
| Type | Definition | Example |
|---|---|---|
quarterly | Last Friday of Mar / Jun / Sep / Dec | 28MAR25, 27JUN25, 26SEP25, 26DEC25 |
monthly | Last Friday of any other month | 25APR25 (April 30 is Wednesday → last Friday is the 25th), 30MAY25, 25JUL25 |
weekly | Any other Friday | 07MAR25, 14MAR25, 21MAR25, 04APR25, 11APR25 |
daily | Any non-Friday weekday | 26MAR25 (Wednesday), 27MAR25 (Thursday) |
is_anchor: true is shorthand for monthly or quarterly — the two
that institutions watch.
Tokens that don’t parse cleanly are returned as unknown and never
silently filtered out.
The /v2/options/opex endpoint
/v2/options/opex bundles everything you need
for an OPEX-day workflow into one call:
- Identification: token, ISO date, DTE, type,
is_anchorflag - OI block:
call_oi,put_oi,total_oi,pcr,notional_oi_usd(= total_oi × spot) - IV block:
atm_iv,skew_25d,put_25d_iv,call_25d_iv - Gamma block:
net_gex,call_resistance,put_support(computed per-expiry from the strike × expiry heatmap),max_pain
next_anchor pointer at the closest monthly/quarterly so you
can highlight it in your UI.
Filtering for the institutional view
Want only the heavyweight expirations? Filter to anchors:Same enrichment in /v2/options/expiry-summary
If you already use /v2/options/expiry-summary,
each row is enriched with the same type, is_anchor, expiry_date,
notional_oi_usd, and max_pain fields. Plus top-level anchor_count
and type_counts so you can render summary stats without iterating.
How to use this in production
Pre-OPEX setup (T-5 to T-1): filter to next anchor, watch the gamma walls move as positions unwind/roll. Big call_resistance moves upward = bullish positioning rolling forward. OPEX day: themax_pain strike on the anchor expiry is a magnet.
Combined with GEX levels, you get a tight pin
prediction window for the close.
Post-OPEX: the next anchor’s expected_move and OI tell you whether
positioning has compressed (low IV, low OI = sell-vol environment) or
expanded (high IV, high OI = vol expansion likely).
Related concepts
Max pain
The pinning strike on each expiry — a key OPEX-day signal.
What is GEX?
The walls / HVL / support levels OPEX positioning concentrates in.
The IV suite
Term structure flattening / steepening around OPEX is a big signal.
