Skip to main content
GET
Aggressor flow by strike (bought vs sold calls/puts)
GET /v2/tape/flow-by-strike Real taker flow on still-open contracts (expiry_date >= today UTC), aggregated by strike into four quadrants: call buy, call sell, put buy, put sell. This is cumulative inventory of aggressor prints behind live OI, not a rolling lookback window. Use it to see where aggressors have been active by strike without pulling the full trade history.

Who it’s for

Coins

BTCUSDT and ETHUSDT only. SOLUSDT / HYPEUSDT return 404 - they do not yet have a multi-venue aggressor tape of this shape.

Query parameters

Omit both expiry and expiries to include every still-open contract.

Per-venue split (?include=by_venue)

Dealer flow aggregated across eight venues answers which way are dealers positioned. It does not tell you which venue is driving it, and that turns out to matter more often than not.
Adds a by_venue array parallel to strikes, so you can zip the two rather than join on strike:
net_size is sold minus bought, the same convention the dealer flow model uses, so a venue’s number here and its contribution there point the same way.

Why this exists

Deribit carries about 88% of BTC option premium. That is why most feeds are Deribit-only, and why it looks sufficient. It is not. Measured over seven days of live data, restricted to contracts at least two venues traded $5,000 or more of premium on: On 57 of those BTC contracts and 41 of the ETH ones, Deribit alone gives the opposite sign to the aggregate. A worked example:
BTC 86,000 call, 11 Sep - aggregate +38.35 Deribit -26.20 (200k)Bybit+44.63(200k) · Bybit **+44.63** (143k) · OKX +12.72 ($51k)
A Deribit-only view reports dealers short that strike. They are long it, and the venues carrying the other half of the volume are the reason.

venue_disagreement

Returned in the body and in meta.extra:
Strikes only one venue traded are excluded. One venue cannot disagree with itself, and counting them would drag the figure toward zero as coverage widens rather than as agreement rises. A venue with no flow on a strike is not counted as a participant either, since zero is not a direction.

Cost

The split is opt-in because it multiplies the row count, not because it is expensive: it is one extra GROUP BY column on a scan that already reads these rows. Measured at 880ms against the aggregated query’s 961ms.

Response shape

Quadrant fields

Each of call_buy / call_sell / put_buy / put_sell: Dealer-style net size on a call strike is typically call_sell.size − call_buy.size (passive/maker inventory from aggressor tape). See Positioning.

Important properties

  • Cumulative on open contracts - not “last N hours.” Expired prints drop when expiry_date rolls past UTC today.
  • Native taker side - every venue stamps direction at ingest (Deribit, Bybit, OKX, Binance, Derive, Thalex, Delta India, Delta Global). This is not quote-rule inference.
  • Cached ~90s - single-flight compute; safe to poll for dashboards.

Example

See also

Positioning (flow vs std)

Venue coverage

Tape overview

Greek TRACE

Authorizations

X-API-Key
string
header
required

Your BackQuant API key (same key as v1)

Headers

X-API-Key
string | null

Query Parameters

symbol
enum<string>
default:BTCUSDT

Trading symbol: BTCUSDT, ETHUSDT, SOLUSDT, or HYPEUSDT.

Available options:
BTCUSDT,
ETHUSDT,
SOLUSDT,
HYPEUSDT
expiry
string | null

Single live expiry YYYY-MM-DD. Omit for all open contracts.

expiries
string | null

Comma-separated live expiries YYYY-MM-DD to COMBINE; takes precedence over expiry.

min_premium_usd
number
default:0

Minimum premium_usd per trade (whale filter).

Required range: x >= 0
venues
string | null

CSV venue filter. Default: all. Allowed: binance, bybit, delta, delta_india, deribit, derive, okx, thalex

include
string | null

Optional sections. by_venue splits each strike's flow across the venues that traded it, and reports how often they disagree on direction under meta.extra.venue_disagreement. Off by default because it multiplies the row count; the query cost is the same.

Response

Successful Response