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
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 →