{"slug":"what-is-a-liquidity-heatmap","qid":"touch_by_half_hour","label":"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","post_title":"What Is a Liquidity Heatmap? How to Read One","post_url":"/blog/what-is-a-liquidity-heatmap#q-touch_by_half_hour","columns":["et_time","quote_update_count","displayed_bid_pct_of_peak","displayed_ask_pct_of_peak"],"rows":[{"et_time":"04:00","quote_update_count":576,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":4},{"et_time":"04:30","quote_update_count":240,"displayed_bid_pct_of_peak":43,"displayed_ask_pct_of_peak":4},{"et_time":"05:00","quote_update_count":157,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"05:30","quote_update_count":167,"displayed_bid_pct_of_peak":71,"displayed_ask_pct_of_peak":4},{"et_time":"06:00","quote_update_count":185,"displayed_bid_pct_of_peak":71,"displayed_ask_pct_of_peak":9},{"et_time":"06:30","quote_update_count":2069,"displayed_bid_pct_of_peak":14,"displayed_ask_pct_of_peak":9},{"et_time":"07:00","quote_update_count":692,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"07:30","quote_update_count":437,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"08:00","quote_update_count":1103,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"08:30","quote_update_count":598,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"09:00","quote_update_count":4220,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":4},{"et_time":"09:30","quote_update_count":92588,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"10:00","quote_update_count":76460,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":4},{"et_time":"10:30","quote_update_count":63134,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"11:00","quote_update_count":57109,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"11:30","quote_update_count":40110,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"12:00","quote_update_count":36562,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"12:30","quote_update_count":29945,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"13:00","quote_update_count":33069,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"13:30","quote_update_count":26416,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"14:00","quote_update_count":25150,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"14:30","quote_update_count":32164,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"15:00","quote_update_count":37989,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"15:30","quote_update_count":120615,"displayed_bid_pct_of_peak":43,"displayed_ask_pct_of_peak":9},{"et_time":"16:00","quote_update_count":1595,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"16:30","quote_update_count":317,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":35},{"et_time":"17:00","quote_update_count":285,"displayed_bid_pct_of_peak":100,"displayed_ask_pct_of_peak":39},{"et_time":"17:30","quote_update_count":231,"displayed_bid_pct_of_peak":57,"displayed_ask_pct_of_peak":57},{"et_time":"18:00","quote_update_count":88,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":9},{"et_time":"18:30","quote_update_count":90,"displayed_bid_pct_of_peak":71,"displayed_ask_pct_of_peak":100},{"et_time":"19:00","quote_update_count":145,"displayed_bid_pct_of_peak":29,"displayed_ask_pct_of_peak":22},{"et_time":"19:30","quote_update_count":334,"displayed_bid_pct_of_peak":43,"displayed_ask_pct_of_peak":13}],"shape":"series","sql":"WITH (\n  SELECT max(toDate(sip_timestamp))\n  FROM global_markets.cache_stocks_quotes\n  WHERE ticker = 'AAPL' AND sip_timestamp >= now() - INTERVAL 7 DAY\n) AS last_session\nSELECT\n  et_time,\n  quote_update_count,\n  round(100 * median_bid_size / max(median_bid_size) OVER (), 0) AS displayed_bid_pct_of_peak,\n  round(100 * median_ask_size / max(median_ask_size) OVER (), 0) AS displayed_ask_pct_of_peak\nFROM (\n  SELECT\n    formatDateTime(toStartOfInterval(toTimeZone(sip_timestamp, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,\n    count() AS quote_update_count,\n    quantileDeterministic(0.5)(toFloat64(bid_size), toUInt64(sip_timestamp)) AS median_bid_size,\n    quantileDeterministic(0.5)(toFloat64(ask_size), toUInt64(sip_timestamp)) AS median_ask_size\n  FROM global_markets.cache_stocks_quotes\n  WHERE ticker = 'AAPL'\n    AND sip_timestamp >= now() - INTERVAL 7 DAY\n    AND toDate(sip_timestamp) = last_session\n    AND bid_price > 0\n    AND ask_price > bid_price\n    AND bid_size > 0\n    AND ask_size > 0\n  GROUP BY et_time\n)\nORDER BY et_time","computed_at":"2026-09-20T02:25:35.343036+00:00","elapsed":1.246723899}