STRASMORE/EXPLORE 2,358 QUERIES

venue_share

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-18, from where-to-find-options-trade-data.

as of table 18×5read in context →
venue_share — 18 rows by 5 columns, computed from US exchange, SIP and OPRA data.
venueexchange_idprint_countprints_labelshare_pct
exchange 5656161932161.93 thousand14.4
exchange 4848125094125.09 thousand11.1
exchange 46469935699.36 thousand8.8
exchange 57578928289.28 thousand7.9
exchange 51518834888.35 thousand7.8
exchange 47477468274.68 thousand6.6
exchange 45457072070.72 thousand6.3
exchange 52526240162.40 thousand5.5
exchange 44445977059.77 thousand5.3
exchange 62624710747.11 thousand4.2
exchange 60604583445.83 thousand4.1
exchange 53534318343.18 thousand3.8
exchange 64643545335.45 thousand3.2
exchange 69692887028.87 thousand2.6
exchange 66662777527.77 thousand2.5
exchange 67672467424.67 thousand2.2
exchange 63632399023.99 thousand2.1
exchange 59591700717.01 thousand1.5
Rows × columns
18 × 5
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for venue_share, derived from the stored result.
ColumnTypeRangeNotes
venue text 18 distinct values (exchange 44, exchange 45, exchange 46…)
exchange_id text 18 distinct values (44, 45, 46…)
print_count number 17,007 to 161,932 count
prints_label text 18 distinct values
share_pct number 1.5 to 14.4 percent

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

the exact SQL behind every number
SELECT
    coalesce(nullIf(e.venue, ''), concat('exchange ', toString(t.exchange_id))) AS venue,
    toString(t.exchange_id)                                                     AS exchange_id,
    t.print_count                                                               AS print_count,
    formatReadableQuantity(t.print_count)                                       AS prints_label,
    round(100 * t.print_count / sum(t.print_count) OVER (), 1)                  AS share_pct
FROM
(
    SELECT
        toUInt32(exchange) AS exchange_id,
        count()            AS print_count
    FROM global_markets.options_trades
    WHERE underlying_symbol = 'SPY'
      AND sip_timestamp >= '2025-05-15 00:00:00'
      AND sip_timestamp <  '2025-05-16 00:00:00'
    GROUP BY exchange_id
) AS t
LEFT JOIN
(
    SELECT
        toUInt32(id) AS exchange_id,
        any(name)    AS venue
    FROM global_markets.stocks_exchanges
    WHERE asset_class = 'options'
    GROUP BY exchange_id
) AS e ON t.exchange_id = e.exchange_id
ORDER BY print_count DESC

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysiswhere-to-find-options-trade-data
iv_skew table 29×4 largest_prints table 10×7 session_clock series 14×5 The 2s10s spread, every print of the half table 124×2 The 2s10s spread, every print of the half table 124×2 Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s print table 100×7 See all 2,358 queries →