· HEATMAPS

Why a liquidity heatmap shows orders that never trade

A heatmap draws resting limit orders, and many are cancelled before price arrives. How to tell filled levels from pulled ones in Liquivue.

SHORT ANSWER

A liquidity heatmap shows displayed limit orders, not trades, and many of those orders are cancelled before price reaches them. To tell a filled level from a pulled one, compare the band with the trades that printed at that price. Liquivue draws trade bubbles and absorption markers on the same heatmap for this purpose.

A liquidity heatmap draws the order book over time. Price runs up the vertical axis and time runs along the horizontal axis. The colour of each cell shows how many contracts were resting at that price at that moment. A bright horizontal band at 4,980 means a large amount of size sat on the bid at 4,980 for as long as the band lasts.

The heatmap only shows displayed limit orders. It shows what participants offered to trade. It does not show what traded.

What the colour measures

The platform records the book on every update or on a fixed interval and maps each level's size to a colour scale. Two settings change what you see.

The first is the colour scale. If the scale is relative to the largest level on screen, a 300-lot looks bright in a quiet overnight session and dim next to a 3,000-lot during the open. The same order can look important or invisible depending on what else is on the chart. A fixed scale avoids this but needs adjusting for each instrument.

The second is depth. A heatmap can only draw the levels the data feed sends. A market-by-price feed that sends ten levels on each side gives the platform ten levels to draw. A price twelve ticks away is blank on that chart because the feed did not report it. The blank area does not mean nobody was bidding there. The guide explains depth and market-by-order data in more detail.

Most resting orders do not trade

Placing a limit order costs nothing on most futures exchanges, and cancelling it costs nothing either. Market makers move their quotes every time price moves, so many orders exist for seconds. Larger resting orders also move. An 800-lot sitting twelve ticks below the market can be gone one tick before price arrives.

On the heatmap, a cancelled order looks like a band that ends. A filled order also looks like a band that ends. The only way to tell them apart is to compare the book with the trades that printed at that price.

A worked example

Take an invented case. An index future shows 900 contracts on the bid at 4,980 for four minutes. Price falls to 4,980.25, one tick above. The table shows three things that can happen next.

OutcomeBook at 4,980Trades at 4,980What happened
AFalls from 900 to 100About 800 contracts sellAggressive sellers filled the bid
BFalls from 900 to 10020 contracts sellThe bidders cancelled most of the size
CStays near 9002,400 contracts sellThe bid kept refilling, which may be an iceberg order

All three outcomes look similar on a heatmap with the trades hidden. With the trades shown, they are easy to tell apart. In outcome A, sellers filled most of the bid. In outcome B, the bidders cancelled before price reached them. Outcome C shows more size traded than was ever displayed, which means some size was hidden or replaced as it filled.

Here is how the three outcomes look in Liquivue. The 900-lot is a bright band on the heatmap layer at 4,980. Trade bubbles appear at 4,980 as sellers hit the bid. In outcome A the bubbles add up to roughly the 800 contracts the band lost. In outcome B the band fades with almost no bubbles beside it. In outcome C the bubbles keep printing while the band stays bright. Liquivue includes absorption markers for this pattern. On live CME order-level data, Liquivue's experimental iceberg detection can also mark outcome C.

This is why heatmap platforms draw executed trades on top of the book. On this site, Bookmap lists volume bubbles next to its liquidity heatmap, Liquivue lists trade bubbles, and TensorCharts lists a trade heatmap next to its order book heatmap. Each of these draws the trades on the same price axis as the resting orders, so you can see outcome A, B or C directly.

Spoofing means placing orders with the intent to cancel them before they execute. The Dodd-Frank Act made spoofing a violation of the Commodity Exchange Act in US futures markets. The legal test is intent. A heatmap shows cancellations, and it cannot show intent. A band that disappears before price arrives is outcome B, and outcome B happens thousands of times a day for ordinary reasons.

A check you can run

Pick ten bright bands from yesterday's session that price later reached. For each band, note the displayed size just before price arrived and the volume that traded at that price. Sort the ten into outcomes A, B and C. The count tells you how often displayed size in your instrument, at that time of day, turned into trades. Use that count instead of a general rule about bright bands, because it comes from your market and your data feed.

Questions

Why do orders on a heatmap disappear before price reaches them?

Most of them are cancelled. Placing and cancelling a limit order costs nothing on most futures exchanges, so market makers and other traders move their quotes as price moves.

How can you tell if a heatmap level was filled or pulled?

Compare the drop in displayed size with the volume that traded at that price. If the trades roughly match the drop, the level filled. If few trades printed, the orders were cancelled.

Does Liquivue show trades on its heatmap?

Yes. Liquivue draws trade bubbles over its liquidity heatmap and marks absorption and sweeps. It runs in a desktop browser with WebGPU and connects to futures data through Rithmic or the NinjaTrader bridge.

Is a pulled order on a heatmap evidence of spoofing?

No. Spoofing requires intent to cancel before execution, and a heatmap cannot show intent. Ordinary cancellations happen thousands of times a day.

Educational content about market data and charting software. It is not trading or investment advice. Trading involves risk.

MORE NOTES