DEV Community

GEX.live
GEX.live

Posted on Originally published at gex.live

How much of the SPX options tape is dealer-to-dealer? A free daily floor from OCC data

Short version of a post on gex.live/research; the full write-up, caveats and reproduce block live there.

Every dealer book rebuilt from the options tape — mine included — rests on one assumption: each print is a customer on one side and a dealer on the other, so dealer inventory moves by the size of every trade. Some prints are not like that. When two market makers trade with each other, the dealers' net position does not change — and a tape-based book still records a full position change. Those trades are noise, not approximation. How much of the tape are they? OCC publishes enough, every day and for free, to put a floor under the answer.

The algebra

OCC's daily volume query reports, per series and day, how many sides were traded by each account type: customer (C), firm (F), market maker (M). Sides, not trades — every trade contributes two. Let m be the market-maker share of all sides. Among T trades, let x have a market maker on both sides and y exactly one. Then 2mT = 2x + y and x + y ≤ T, so:

x / T ≥ 2m − 1
Enter fullscreen mode Exit fullscreen mode

Whenever market makers hold more than half the day's sides, the excess can only come from prints with a dealer on both ends. Exact, free, and a floor — not an estimate.

505 days of SPXW (the weekly / 0DTE series)

2024-08-19 to 2026-08-21, median 6.9 million sides a day.

min 25th median 75th 90th max
market-maker share of sides (m) 46.7% 51.4% 52.7% 53.8% 54.5% 57.9%
dealer-to-dealer floor (2m − 1) 0 2.8% 5.3% 7.5% 9.2% 15.8%

The floor is positive on 95.0% of days. Median split of sides: market maker 52.7%, customer 44.7%, firm 2.4%. By year the median floor runs 3.1% (2024) → 5.1% (2025) → 6.4% (2026); in 2026 it was positive on 99.4% of days.

It is a weekly-series phenomenon: the monthly SPX series has a median market-maker share of 50.1%, a positive floor on only 51% of days and a median floor of 0.2% — and a firm share of 19%. The 0DTE tape is where dealers trade with dealers.

Checked against exchange truth, once

Cboe's free trade-by-trade sample for 2025-03-28 carries account capacities. The OCC bound for that day is 8.6% (m = 54.3%); pairing the sample's trades by execution id gives 9.7% with a market maker on both sides — above the floor, as it must be — plus 5.6% customer-against-customer, which the bound cannot see. About 15% of that day's trades had no customer-versus-dealer structure at all.

What it is for

A per-session lower bound on how much of any measured dealer book is structurally noise — a free confidence weight for the one book nobody can validate intraday. On a 10%-floor day, at least one trade in ten moved the book by an amount dealers never absorbed. It bounds the damage; it does not repair it, and it says nothing about the sign of the remaining 90%.

Reproduce it

curl -g "https://marketdata.theocc.com/volume-query?format=csv&volumeQueryType=O&reportType=C&symbolType=U&symbol=SPX&fromDate=20250101&toDate=20250331" -o spx_2025q1.csv
Enter fullscreen mode Exit fullscreen mode
import pandas as pd
d = pd.concat(pd.read_csv(f, usecols=range(7)) for f in files).drop_duplicates()
d = d[d.symbol == "SPXW"]                                # the weekly / 0DTE series
x = d.groupby(["actdate", "actype"]).quantity.sum().unstack(fill_value=0)
m = x["M"] / x.sum(axis=1)                                # market-maker share of sides
floor = (2 * m - 1).clip(lower=0)                         # dealer-to-dealer lower bound
print(m.median(), (floor > 0).mean(), floor.median())      # 0.527, 0.950, 0.053
Enter fullscreen mode Exit fullscreen mode

OCC's window rolls (~2 years), so pull it while it's there. Not a signal, not advice — a measurement with its sample attached. More of these: gex.live/research.

Top comments (0)