Resolved Markets logoResolved Markets logo
Abstract blue gradient background with a soft light streakAbstract blue gradient background with a soft light streak
Analytics

BTC order book heatmaps from depth

A heatmap turns the full bid/ask ladder over time into a picture of where liquidity sits, and where it vanishes. Here is how to build one from historical depth snapshots.

8 min read · Updated Jun 22, 2026

  • Full bid / ask ladderInput
  • Price × timeAxes
  • ~20 HzSnapshot rate
  • BTC / ETH / SOL / XRPMarkets

Charts of best bid and ask tell you where the touch is. A heatmap tells you where the weight is, which price levels hold real resting size, and how that wall builds or melts as the market moves. Because each snapshot carries the full ladder, you can render that picture directly.

A depth heatmap puts price on one axis and time on the other, shading each cell by the resting size at that level. Bright bands are liquidity walls; fading bands are liquidity being pulled. It is the clearest way to see support and resistance form on a prediction market.

What the picture reveals

Liquidity walls

Persistent bright bands mark price levels where size keeps resting, the book’s self-declared support and resistance.

  • Resting-size clusters
  • Support / resistance
  • Where price tends to pause

Liquidity pulls

A wall that fades just before a move is makers stepping back, often the precursor to a fast repricing.

  • Vanishing depth
  • Pre-move warning
  • Thinning into events

Imbalance over time

Brighter bids than asks (or vice versa) across the map shows persistent directional pressure, not a single tick.

  • Bid vs ask weight
  • Sustained pressure
  • Regime, not noise

Building it from snapshots

Request the snapshots with the full book over your window, bucket the price levels into a fixed grid, and aggregate resting size per bucket per time slice. The high capture rate matters here, at roughly 20 Hz on BTC, the heatmap is smooth enough to see walls form and dissolve rather than jump between sparse frames.

  1. 1Pull the snapshots for the market and window with the book included, set include_book so each row carries its bids and asks arrays, not just the touch.
  2. 2Bucket prices into a fixed grid (these are 0-1 probability units, so a uniform tick grid is natural) and sum resting size into each price bucket.
  3. 3Slice time into even columns and aggregate within each slice, so capture jitter doesn’t leave gaps in the picture.
  4. 4Shade each cell by size, and decide whether to clip or log-scale the brightest cells so one giant wall doesn’t wash out everything around it.

The fields the picture is built from

  • bids[] · asks[]Full ladder when include_book is set
  • bid_depth_totalResting size on the bid side
  • ask_depth_totalResting size on the ask side
  • limit ≤ 5000Snapshots per request, paginate long windows

The depth totals give you a fast one-row-per-snapshot summary if you only want the imbalance band; the full bids and asks arrays are what you bucket when you want the whole ladder shaded. Most heatmap pipelines pull the arrays once, then derive everything else from them.

Reading it without fooling yourself

  • A bright band is resting size, not executed volume, it shows intent to trade at that level, which can be pulled before anyone hits it.
  • Spoofy walls fade the instant price approaches; persistence across many slices is what separates a real level from a placed-and-pulled one.
  • Choose your colour scale deliberately, a linear scale buries small structure under one large wall, a log scale surfaces it.
  • Sparse categories sample slower (sports near ~2 Hz), so widen the time slices there or the map turns blocky and misleading.
Only with full depth

Top-of-book can’t draw this

A heatmap needs the whole ladder, not just the best bid and ask. Polymarket exposes the live book but not its history; the full-depth snapshots are what let you reconstruct the picture for any past window, not just right now.

Best bid and ask tell you where the touch is. The heatmap tells you where the weight is, and weight, not the touch, is what price has to push through.

Get the depth data

The historical guide shows how to request the full book per snapshot; the crypto data page shows coverage.

Frequently asked questions