What Is the NBBO? National Best Bid and Offer
NBBO updates per session: four heavily traded names vs. two thin small capsseries ·
2026-08-22 · 6×5
Exchange stamp to SIP stamp: the consolidation step, in microsecondsranking ·
2026-08-22 · 4×3
The smallest size the NBBO will show: six names across the price tiersranking ·
2026-08-22 · 6×4
KO: ten consecutive NBBO updates from 1:30 p.m. ET on a recent sessionseries ·
2026-08-22 · 10×7
GME, 2024-05-14: NBBO updates and trades per minute across a five-minute LULD pauseseries ·
2026-08-22 · 15×3
AAPL: average NBBO updates per minute by half-hour bucket (ET, 4 a.m. to 8 p.m.)series ·
2026-08-22 · 32×3
What Is a Bid-Ask Spread? Real Costs
Typical quoted spread: six liquid names vs. two thin small caps, with the 100-share costranking ·
2026-08-22 · 8×4
AAPL median quoted spread by 30-minute bucket (ET, extended hours included)series ·
2026-08-22 · 32×2
The same curve at four checkpoints: premarket, the open, midday, the closeseries ·
2026-08-22 · 4×2
AAPL: the last recorded NBBO quote in our data windowscalar ·
2026-08-22 · 1×70.117
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
How Big Is the OPRA Options Quote Feed?
One session, two tapes: every options NBBO update vs. every stock NBBO updatescalar ·
2026-08-22 · 1×96.07
SPY's 2026-expiry option chain: one root's share of the quote firehosescalar ·
2026-08-22 · 1×13164
The five busiest SPY option contracts of the session, symbol unpackedseries ·
2026-08-22 · 5×7
Professional vs Non-Professional Market Data
US equity and options venues in the exchange reference listranking ·
2026-08-08 · 6×3
AAPL quote messages per 15 minutes, pinned session of Jun 16, 2026series ·
2026-08-08 · 36×2
Listed option contracts that traded on Jun 16, 2026, by underlyingranking ·
2026-08-08 · 5×4
Quote message rate by symbol, 10:00 to 11:00 a.m. ET on Jun 16, 2026ranking ·
2026-08-08 · 5×3
Why Stock Quotes Are Delayed 15 Minutes
How often the last price changes, minute by minute (June 2026)ranking ·
2026-08-06 · 6×3
The 15 minute gap across six household tickers (June 2026)ranking ·
2026-08-06 · 6×3
How far SPY travels in 15 minutes, by hour of the session (June 2026)series ·
2026-08-06 · 7×4
Live price against a 15 minute delayed view, one SPY sessionseries ·
2026-08-06 · 37×5
NBBO updates per session: four heavily traded names vs. two thin small caps
NBBO updates per session: four heavily traded names vs. two thin small caps
| ticker | sessions | avg_updates_per_session | avg_updates_per_session_m | multiple_of_quietest |
|---|---|---|---|---|
| SPY | 5 | 2057225 | 2.057 | 866 |
| NVDA | 5 | 1533905 | 1.534 | 645 |
| AAPL | 5 | 797459 | 0.797 | 336 |
| KO | 5 | 337245 | 0.337 | 142 |
| SENEA | 5 | 5083 | 0.005 | 2 |
| NATH | 5 | 2377 | 0.002 | 1 |
the exact SQL behind every number
SELECT ticker,
uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) AS sessions,
round(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) AS avg_updates_per_session,
round(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) / 1e6, 3) AS avg_updates_per_session_m,
round((count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) / min(count() / uniqExact(toDate(toTimeZone(sip_timestamp, 'America/New_York')))) OVER (), 0) AS multiple_of_quietest
FROM global_markets.cache_stocks_quotes
WHERE ticker IN ('SPY', 'NVDA', 'AAPL', 'KO', 'SENEA', 'NATH')
AND sip_timestamp >= toDateTime(today() - 10)
AND sip_timestamp < toDateTime(today() - 3)
AND toDate(toTimeZone(sip_timestamp, 'America/New_York')) IN (
SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS session_date
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime(today() - 10)
AND window_start < toDateTime(today() - 3)
GROUP BY session_date
HAVING countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) = 390
)
GROUP BY ticker
ORDER BY indexOf(['SPY', 'NVDA', 'AAPL', 'KO', 'SENEA', 'NATH'], ticker)
More from this analysisWhat Is the NBBO? National Best Bid and Offer
AAPL: average NBBO updates per minute by half-hour bucket (ET, 4 a.m. to 8 p.m.)
series 32×3
→
GME, 2024-05-14: NBBO updates and trades per minute across a five-minute LULD pause
series 15×3
→
KO: ten consecutive NBBO updates from 1:30 p.m. ET on a recent session
series 10×7
→
The smallest size the NBBO will show: six names across the price tiers
ranking 6×4
→
See all 2,170 queries →