What Is a Liquidity Heatmap? How to Read One
AAPL top of book by half hour (ET), latest session: NBBO updates and displayed size at the best bid and ask as a share of the peak bucketseries ·
2026-10-04 · 32×4
Backtesting in Illiquid Markets: Fill Models
Quoted spread and displayed size at the touch, midday sliceranking ·
2026-10-01 · 4×4
Median session volume and a 2 percent participation budgetranking ·
2026-10-01 · 4×4
Markout curve after a high volume minute, liquid name against thin nameranking ·
2026-10-01 · 6×4
Average absolute minute move by volume quintile, liquid name against thin nameranking ·
2026-10-01 · 5×4
Latency Models in HFT Backtests Explained
Trade prints per second through one full session, ET clockseries ·
2026-09-24 · 78×2
How long a top of book quote survives, by latency budgetranking ·
2026-09-24 · 9×2
Average distance the mid price travels over each latency horizonranking ·
2026-09-24 · 4×2
Share of quotes replaced within 5 ms and 50 ms, by symbolranking ·
2026-09-24 · 5×3
Does Modifying an Order Lose Queue Priority?
How often the quoted spread sits at a single cent (10 June 2026 session)ranking ·
2026-08-14 · 6×3
Share of one minute windows carrying at least N shares (June 2026)ranking ·
2026-08-14 · 9×3
How fast the tape drains a queue, by time of day (AAPL, June 2026)series ·
2026-08-14 · 26×3
Distinct best bid prices per quarter hour (AAPL and KO, 10 June 2026)series ·
2026-08-14 · 26×3
MBO vs MBP Order Book Data Explained
Trade size mix in the same window (AAPL, 10:00 to 10:30 a.m. ET, June 16, 2026)ranking ·
2026-08-12 · 5×4
What changed between consecutive top-of-book messages (AAPL, 10:00 to 10:30 a.m. ET, June 16, 2026)ranking ·
2026-08-12 · 4×3
Top-of-book messages against prints, 10:00 to 10:30 a.m. ET, June 16, 2026ranking ·
2026-08-12 · 5×4
How to Estimate Queue Position From L2 Data
How AAPL prints break down by trade size, June 10 2026ranking ·
2026-08-12 · 5×3
Average quoted spread and time at a one cent spread, midday June 10 2026ranking ·
2026-08-12 · 6×3
Top of book messages against prints on the tape, AAPL, June 10 2026series ·
2026-08-12 · 8×4
The best bid and the price levels it visited, AAPL, 15 minute bucketsseries ·
2026-08-12 · 24×3
Quote-Driven vs Order-Driven Markets
Quoted spread and displayed size at the NBBO, one June 2026 hourranking ·
2026-08-11 · 5×3
AAPL option trade sizes, one June 2026 sessionranking ·
2026-08-11 · 5×4
Share of consolidated volume reported off exchange, by monthseries ·
2026-08-11 · 12×5
How US share volume concentrates across symbols, May 2026ranking ·
2026-08-11 · 5×4
Price-Time Priority vs Pro-Rata Fills
Quote updates per second and average quoted spread, ten minutes on 17 June 2026ranking ·
2026-08-08 · 5×3
Average shares per trade print, June 2026ranking ·
2026-08-08 · 8×2
AAPL option prints by contract count, 17 June 2026ranking ·
2026-08-08 · 5×2
AAPL trade prints by share count, 17 June 2026ranking ·
2026-08-08 · 5×2
Level 1 vs Level 2 vs Level 3 Market Data
Executed volume by price level: the traded ladder (KO, 30 minutes)table ·
2026-08-07 · 63×3
Level 1 top of book: quoted spread across a full session (AAPL, June 17 2026)series ·
2026-08-07 · 32×3
Top-of-book message rate, minute by minute (NVDA, one hour)series ·
2026-08-07 · 60×3
Top-of-book spread and quote message count by name (10:00 to 11:00 a.m. ET)ranking ·
2026-08-07 · 5×3
AAPL top of book by half hour (ET), latest session: NBBO updates and displayed size at the best bid and ask as a share of the peak bucket
AAPL top of book by half hour (ET), latest session: NBBO updates and displayed size at the best bid and ask as a share of the peak bucket
| et_time | quote_update_count | displayed_bid_pct_of_peak | displayed_ask_pct_of_peak |
|---|---|---|---|
| 04:00 | 1153 | 10 | 3 |
| 04:30 | 1167 | 20 | 2 |
| 05:00 | 689 | 10 | 2 |
| 05:30 | 322 | 20 | 3 |
| 06:00 | 1042 | 10 | 2 |
| 06:30 | 2015 | 10 | 2 |
| 07:00 | 939 | 20 | 3 |
| 07:30 | 1262 | 15 | 2 |
| 08:00 | 1692 | 20 | 3 |
| 08:30 | 1018 | 20 | 3 |
| 09:00 | 2015 | 20 | 2 |
| 09:30 | 112378 | 20 | 2 |
| 10:00 | 88584 | 20 | 3 |
| 10:30 | 57424 | 20 | 2 |
| 11:00 | 45178 | 20 | 3 |
| 11:30 | 57903 | 20 | 3 |
| 12:00 | 42497 | 20 | 3 |
| 12:30 | 35233 | 20 | 3 |
| 13:00 | 35140 | 20 | 3 |
| 13:30 | 39415 | 10 | 3 |
| 14:00 | 38360 | 20 | 3 |
| 14:30 | 29468 | 20 | 3 |
| 15:00 | 28280 | 20 | 3 |
| 15:30 | 89635 | 20 | 3 |
| 16:00 | 574 | 20 | 3 |
| 16:30 | 272 | 20 | 3 |
| 17:00 | 151 | 100 | 11 |
| 17:30 | 50 | 10 | 9 |
| 18:00 | 168 | 20 | 5 |
| 18:30 | 263 | 20 | 8 |
| 19:00 | 270 | 20 | 100 |
| 19:30 | 306 | 10 | 22 |
the exact SQL behind every number
WITH (
SELECT max(toDate(sip_timestamp))
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL' AND sip_timestamp >= now() - INTERVAL 7 DAY
) AS last_session
SELECT
et_time,
quote_update_count,
round(100 * median_bid_size / max(median_bid_size) OVER (), 0) AS displayed_bid_pct_of_peak,
round(100 * median_ask_size / max(median_ask_size) OVER (), 0) AS displayed_ask_pct_of_peak
FROM (
SELECT
formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
count() AS quote_update_count,
quantileDeterministic(0.5)(toFloat64(bid_size), toUInt64(sip_timestamp)) AS median_bid_size,
quantileDeterministic(0.5)(toFloat64(ask_size), toUInt64(sip_timestamp)) AS median_ask_size
FROM global_markets.cache_stocks_quotes
WHERE ticker = 'AAPL'
AND sip_timestamp >= now() - INTERVAL 7 DAY
AND toDate(sip_timestamp) = last_session
AND bid_price > 0
AND ask_price > bid_price
AND bid_size > 0
AND ask_size > 0
GROUP BY et_time
)
ORDER BY et_time
Related queries
Top-of-book message rate, minute by minute (NVDA, one hour)
series 60×3
→
Level 1 top of book: quoted spread across a full session (AAPL, June 17 2026)
series 32×3
→
Executed volume by price level: the traded ladder (KO, 30 minutes)
table 63×3
→
Top-of-book spread and quote message count by name (10:00 to 11:00 a.m. ET)
ranking 5×3
→
See all 3,256 queries →