Locked and Crossed Markets, Explained With Data
Whole-tape census: locked, crossed, and one-sided records across every NBBO update of the sessionscalar ·
2026-08-22 · 1×7406
The receipts: locked vs crossed totals, and the rate by session stretch (premarket, open, noon, close, ET)scalar ·
2026-08-22 · 1×10246.9
The census by name: eight liquid tickers and two thin small caps, recent completed sessionstable ·
2026-08-22 · 10×7
Locked-or-crossed records per 10,000 updates by 30-minute ET bucket, checked set, extended hours includedseries ·
2026-08-22 · 32×3
Whole-tape census: locked, crossed, and one-sided records across every NBBO update of the session
Whole-tape census: locked, crossed, and one-sided records across every NBBO update of the session
session date
2026-08-18
updates m
406
locked m
7.41
crossed k
43.8
locked per crossed
169
locked or crossed per 10k
183.4
one sided per 10k
3.2
the exact SQL behind every number
WITH (
SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY' AND window_start < toDateTime(today() - 3)
) AS census_day
SELECT
formatDateTime(census_day, '%Y-%m-%d') AS session_date,
round(count() / 1e6, 0) AS updates_m,
round(countIf(bid_price = ask_price AND bid_price > 0) / 1e6, 2) AS locked_m,
round(countIf(bid_price > ask_price AND ask_price > 0) / 1e3, 1) AS crossed_k,
round(countIf(bid_price = ask_price AND bid_price > 0) / toFloat64(greatest(countIf(bid_price > ask_price AND ask_price > 0), 1)), 0) AS locked_per_crossed,
round(countIf(bid_price >= ask_price AND ask_price > 0 AND bid_price > 0) / toFloat64(count()) * 1e4, 1) AS locked_or_crossed_per_10k,
round(countIf(bid_price <= 0 OR ask_price <= 0) / toFloat64(count()) * 1e4, 1) AS one_sided_per_10k
FROM global_markets.cache_stocks_quotes
WHERE sip_timestamp >= toDateTime(census_day)
AND sip_timestamp < toDateTime(census_day + 1)
More from this analysisLocked and Crossed Markets, Explained With Data
The receipts: locked vs crossed totals, and the rate by session stretch (premarket, open, noon, close, ET)
scalar 1×10
→
Locked-or-crossed records per 10,000 updates by 30-minute ET bucket, checked set, extended hours included
series 32×3
→
The census by name: eight liquid tickers and two thin small caps, recent completed sessions
table 10×7
→
AAPL: the last recorded NBBO quote in our data window
scalar 1×7
→
See all 2,170 queries →