The Liquidity Heatmap — seeing where the orders rest
The footprint shows aggression that already happened. The heatmap shows intent that hasn't — the resting limit orders stacked in the book, painted as horizontal bands of heat. Bright bands are walls of liquidity; watch how price reacts to them, and watch them appear and vanish (spoofing, absorption) in real time.
- Brightness = depth. Each cell is a price level at a moment in time; the warmer/brighter it glows, the more size is resting there. Faint = thin, bright white-yellow = a wall.
- Horizontal bands are resting walls. A level that holds its glow as time scrolls is persistent liquidity — support below price, resistance above. Price often stalls or reverses into them.
- Vanishing bands — a wall that disappears as price approaches was either pulled (spoof) or eaten (absorption). Both are signal; the footprint tells you which.
- Pair it with the footprint. Heatmap = passive (limit orders waiting). Footprint = aggressive (market orders hitting). Reading both is reading both sides of every print.
- Sampling — the live order book is sampled once a second into a fixed price lattice (
perplog-core::orderflow::density::DensityGrid). Each column is a snapshot; the lattice spans ±2% of mid so resting bands stay put as price moves through them. - Depth in USD = price × size at each level, accumulated per lattice row.
- Quantization — depth is stored as
round(1024 · log2(1 + usd)), a log scale so a thin level and a wall both stay legible. Monotone: relative ordering survives the round-trip (≤1% error). - Archival — the recorder also persists these grids as
.pfttiles forever. Live L2 depth is unrecoverable if not recorded the moment it prints — so Perplog records it the moment it prints. That history is what makes session replay possible.
HL exposes top-of-book depth; the heatmap is as deep as the venue's book. CEX full-depth venues (Binance/Bybit) deepen the aggregate as they come online.
Every other heatmap is a wall you watch. Perplog's is a wall you traded into. Your fills sit on the same canvas as the liquidity that was resting when you clicked — so you can see whether you bought into a wall, faded one, or got absorbed. Then scrub the replay and watch the book rebuild around your decision.
Open the terminal -> · toggle HEATMAP and watch the book breathe.