Guide · Liquidity Heatmap
Liquidity heatmaps and Level II depth: what they show and what they can't
A liquidity heatmap paints Level II market depth over time: price runs up the side, time runs across, and the colour of each cell is the size resting at that price at that moment, with executed trades drawn on top. It shows where size waited, how long it stayed and whether it traded or was pulled before price arrived. It cannot show individual orders, who placed them or why, and in NinjaTrader 8 it cannot show depth from before your chart started receiving it.
Updated · 5 min read · TapeCrest
What is Level II market depth?
Level I is the front of the book: the inside bid and ask, their sizes and the last trade. Level II, also called market depth, adds the limit orders resting at the prices behind them, several levels on each side. NinjaTrader's SuperDOM (its depth-of-market ladder) shows this book in real time, and it changes many times a second.
Two details shape everything that follows:
- Depth by price, not by order. NinjaTrader 8 gives indicators the total size resting at each price, known as market-by-price data, without individual order IDs, which is market-by-order data. You see, for example, that 300 contracts rest at a price, not whether that is one order or sixty.
- A depth window. Many connections send about ten levels per side for CME futures, and some send more. Size beyond that window is not visible.
On some broker and prop-firm accounts, Level II depth is a separate market data add-on.
What does a liquidity heatmap show?
The SuperDOM shows the book now; a second later it has changed. A liquidity heatmap keeps the history. In TapeCrest Liquidity Heatmap, an indicator for NinjaTrader 8, each column is a slice of time, 250 milliseconds by default, each row is a price, and brighter cells hold more contracts. By default a cell shows the size that stood there on average during its slice, so an order that flashes for a few milliseconds barely shows. Executed trades sit on top as bubbles: green where buyers lifted the offer, red where sellers hit the bid.
Read together, heat and bubbles turn a few situations into pictures. A wall is a level holding much more size than the levels around it. An iceberg is a limit order that shows only part of its size and refills as it trades. A sweep is a burst of aggressive orders that takes several price levels at once.
| Situation | What the Heatmap shows | What it cannot tell you |
|---|---|---|
| Wall | A level several times the typical size, 4 times by default, larger than its neighbours, with a 0–100 score | Whether it stays: resting size can be cancelled at any moment |
| Pulled size | A large level that disappears as price comes near without trading through, marked with a red × | Why it left or who placed it |
| Probable iceberg | More traded at a price than the book showed, or size refilling within milliseconds of trades | The hidden size for certain |
| Absorption | One of the rarest bursts of aggressive volume into a single price, with the price still holding three seconds later | What price does next |
| Sweep | One aggressive burst that took several price levels, 3 by default, within milliseconds | The reason behind it |
| Liquidity level | A price that held large size for most of the last 20 minutes | Whether the size is still there when price returns |
How should you read the score?
Each wall carries a score from 0 to 100. A score of 50 means no evidence either way, and a wall that price has not reached stays close to 50. Time on the book, trades absorbed, refills and hidden size raise the score; a large part of the wall disappearing without trades while price is within the approach distance, 2 ticks by default, lowers it. Labels are green at 65 and above (tested and holding), amber from 35 (not yet tested, or mixed evidence) and red under 35. A level that only scrolled out of your feed's depth window is never counted as pulled. A score is a likelihood, not a verdict: read it together with the price action around it.
What can't a heatmap show?
- Single orders and queue position. With depth by price, each level is one number.
- Depth beyond your feed's window. Levels that leave it keep their last known size, drawn fainter, and are dropped after 10 minutes by default.
- The book before you started. NinjaTrader 8 keeps no historical market depth, so the heatmap starts when your chart starts receiving depth and records from then on.
- Intent. A pulled wall shows that size left before price arrived, not whether that size was ever meant to trade.
- The next move. Detections describe what the book did; they do not forecast price.
How do you set up a liquidity heatmap in NinjaTrader 8?
- Check that depth arrives. Open a SuperDOM on the instrument: sizes on several price levels mean Level II arrives, while sizes only at the inside bid and ask mean it does not.
- Open a fast chart. Use 5- to 15-second bars or a tick chart with 10 to 30 minutes on screen, for example ES or NQ on 15-second bars.
- Add TapeCrest Liquidity Heatmap (right-click the chart, Indicators..., Ctrl+I), click Heatmap access in the chart toolbar and select Paste key & verify. The status line reads
calibratingfor the first seconds while the indicator measures the typical book size. - Read the status line. For example,
depth 10/10 - recordingmeans your feed sends ten levels per side and the book is being recorded. - Let it run. The heatmap fills in from that moment and is written to disk, about 5 to 20 MB per instrument and day, so a reload, a timeframe change or a restart brings it back. Charts of the same instrument share one heatmap.
- Pick a style. FullHeatmap paints a dark price panel and draws price as the inside bid and ask lines; OverCandles puts the heat under your usual candles. The TapeCrest Light template suits white charts.
- Calm the picture. Raise Market-maker cloud filter to Medium or Strong and raise Auto: lower cutoff (percentile), and keep Value shown on TimeAverage so orders that only flash fade out.
- Alert at your own levels. Draw horizontal lines at your key prices and tick Only near my horizontal lines to hear about detections there and nowhere else.
The Heatmap needs Level II depth for the instrument you chart. Order Flow+ and Tick Replay are not needed: it reads the real-time book and trades, and trades loaded through Tick Replay carry no book.
Heatmap or footprint?
They answer different questions on the same chart. The heatmap shows what was waiting in the book before it traded; a footprint shows what traded inside each bar. For the traded side, read how to read a footprint chart and absorption in order flow.
Try it
TapeCrest Liquidity Heatmap comes with a 7-day free trial without a card, then a one-time lifetime licence (pricing). The Liquidity Heatmap page plays four book situations on a simulated order book, and the Footprint page shows the traded side inside each bar.