Skip to main content
BackQuant ingests crypto options from multiple exchanges and folds them into one canonical surface. Filterable venue IDs on public v2 are: deribit · bybit · okx · binance · derive · thalex · delta_india · delta

Venues at a glance

Coins

Where venues show up

When a metric is “multi-venue blended,” OI from every venue that lists the coin is summed on normalized instrument names. Bid/ask depth for IV remains Deribit-primary. Strike-profile payloads advertise available_exchanges with the full chain set (including Thalex / Derive / both Delta IDs) even on thin books, so UI filters stay stable.

What ?exchanges= actually does

The filter re-aggregates the surface from the per-venue breakdown. It is not a scaling of the blended number, so ?exchanges=deribit,bybit returns exactly what those two books contribute, and the parts add back up to the unfiltered response. Two quantities behave differently, and the distinction matters when you compare a filtered result against the total:
  • Exposures (GEX, DEX, charm, vega) are greek x open interest, so they are linear in OI. A venue’s share of the open interest is exactly its share of the exposure, and the per-venue parts sum back to the total.
  • Implied volatility does not split. IV is a quote, not a quantity. A venue-filtered IV surface or expected move reports that venue’s own mark IV, never a share of the cross-venue blend. Unfiltered, the blend is OI-weighted across the venues quoting that contract. A venue that does not quote a contract is left out of that contract’s IV rather than counted as zero.
Unknown venue names are ignored, and a filter naming only unknown venues returns every venue instead of an empty response.
A venue returning zero is not the same as a venue being off. Zero means it lists no contracts on that surface right now; off means the feed is disabled. GET /v2/status reports chain and tape per venue as on / off / unknown so you can tell which you are looking at.

Per-venue open interest: by_venue

Open-interest surfaces carry an explicit split so you never have to infer one from repeated filtered calls:
  • Open interest is coin-native on every venue, so the cross-venue sum is meaningful without conversion. notional_oi_usd is total_oi x spot using the same spot the response reports.
  • All eight venues are always present, zero-filled, so your parsing never has to handle a missing key.
  • Delta India and Delta Global are independent books and are summed, never deduplicated.
  • by_venue_unattributed is null when the split reconciles with the response totals, which is the normal case. A non-null value means some open interest could not be attributed to a venue, and is shown rather than quietly dropped.
Available on OI by expiry, expiry summary and GEX strike profile. On the strike profile the split covers the strikes actually returned, so it tracks any strike or moneyness filter you applied. Requesting a single expiry= token returns whole-expiry venue OI with a by_venue_note saying so, because no finer per-(strike, expiry) split is published.

Delta Exchange units

Delta lists mini options. The public API always exposes coin size and USD premium already normalized. You do not need to re-apply contract_value on the public fields. Ingest mapping (for transparency):
where upstream size is contracts and upstream price is USD per coin. Use the API’s amount and premium_usd as-is. Thalex is USD-settled: premium_usd = price × amount with amount already coin-equivalent.

Settlement and expiry labels

Public expiry tokens (e.g. 18AUG26) follow the Deribit-session calendar used across GEX, OPEX countdowns, and TRACE:
  • Countdowns and 0DTE / front-expiry selection use the 08:00 UTC cliff.
  • After that session roll, remaining Delta inventory for that calendar day is rolled into the next session expiry in the aggregated chain so strike / GEX / OI surfaces stay on one expiry ladder.
  • Filter and response tokens stay Deribit-style; you do not get a separate public “India 12:00” expiry id.

Why Binance isn’t on the live options WS

The public Binance options WebSocket host is not reachable from our infrastructure. We poll REST trades for the most-active BTC/ETH contracts (~30s). The hot list refreshes about every 5 minutes by 24h volume. Low-volume strikes may be missed.

See also

Tape overview

Flow by strike

Positioning

Data freshness