· HEATMAPS
How trade bubbles sit on top of a liquidity heatmap
Trade bubbles mark where contracts traded on a liquidity heatmap. One ES offer in Liquivue shows how platforms place, size and group each bubble.
SHORT ANSWER
A trade bubble is a circle drawn at the price and time where contracts traded, and its size grows with the number of contracts. It sits on the same axes as the heatmap's resting orders, so you can compare traded size with displayed size at one price. Liquivue draws trade bubbles over its futures heatmap, with absorption and sweep markers.
A trade bubble on a liquidity heatmap is a circle drawn at the price and time of a trade, and it grows with the number of contracts traded. This note shows how trade bubbles sit on top of a liquidity heatmap, using one offer in the E-mini S&P 500 future, ES. A liquidity heatmap colours each price by the size of the limit orders resting there over time. The note on how to read a liquidity heatmap for the first time covered the colour. This note covers the bubbles drawn over it.
Two layers on one set of axes
The heatmap and the bubbles share axes. Time runs left to right and price runs bottom to top. The heatmap layer draws resting orders, which have not traded yet. The bubble layer draws trades. A bright band with no bubbles on it is size that has not traded. A bubble on a dark row is a trade at a price where little size was showing.
Each layer comes from a different message. The exchange sends a book update when a trader adds, changes or cancels an order. It sends a trade message when two orders match. The platform draws book updates as colour and trade messages as bubbles.
The example offer
The numbers below are an invented example of the drawing, not a trade plan. ES moves in ticks of 0.25 points.
At 10:15:00 the best offer is 5,050.00 with 600 contracts resting. The heatmap draws that row as a bright band. Over the next 4 seconds the exchange reports these trades.
| Time | Price | Contracts | Aggressor |
|---|---|---|---|
| 10:15:00.2 | 5,050.00 | 40 | Buyer |
| 10:15:00.9 | 5,050.00 | 15 | Buyer |
| 10:15:01.4 | 5,049.75 | 30 | Seller |
| 10:15:02.1 | 5,050.00 | 220 | Buyer |
| 10:15:02.6 | 5,050.00 | 180 | Buyer |
| 10:15:03.8 | 5,050.00 | 145 | Buyer |
The aggressor is the side whose order crossed the spread. The buyers lifted the offer at 5,050.00, and the seller hit the bid one tick lower at 5,049.75. The buys at 5,050.00 add up to 600 contracts, the size the band showed at 10:15:00.
How a platform sizes and groups bubbles
Most platforms do not draw one bubble per trade message. They group the trades at each price inside a short time slice into one bubble. Suppose the platform uses one-second slices. The table then becomes three bubbles at 5,050.00 and one at 5,049.75.
- The 10:15:00 slice at 5,050.00 holds 55 contracts.
- The 10:15:01 slice at 5,049.75 holds 30 contracts.
- The 10:15:02 slice at 5,050.00 holds 400 contracts.
- The 10:15:03 slice at 5,050.00 holds 145 contracts.
Bubble size scales with contracts. If the platform scales the area of each bubble, the 400-lot bubble has about 7 times the area of the 55-lot bubble and about 2.7 times its width. A platform that scales the width instead draws the 400-lot bubble about 7 times wider. Check the scale setting before you compare screenshots from two platforms.
The slice length changes the picture. With five-second slices, all five buys at 5,050.00 merge into one 600-contract bubble. The trades are identical under both settings. The note on why the tape prints the same price many times in a row explains why one order can show up as several prints.
What the band does under the bubbles
The band shows what is resting and the bubbles show what traded. At 10:15:02 the band at 5,050.00 drops from 545 to 145 contracts as 400 contracts trade. At 10:15:03.8 the last 145 trade and the band ends. Traded size matched displayed size, so the offer filled.
Two other outcomes look different on screen. If the band ends with only 55 contracts of bubbles beside it, the sellers cancelled most of the offer. If the bubbles add up to 1,500 contracts while the band stays near 600, new orders kept joining the offer as it traded. The heatmap layer alone cannot tell these three cases apart.
The same offer in Liquivue
Liquivue draws trade bubbles over its liquidity heatmap for futures connected through Rithmic or the NinjaTrader bridge. In this example the Liquivue heatmap shows the 600-contract band at 5,050.00, and the bubbles print along it between 10:15:00 and 10:15:03. The band ends at the same moment as the last bubble, so one chart shows both the offer and its fill.
Liquivue also marks absorption and sweeps on the chart. Absorption means more contracts trade at a price than the book showed there, while price holds. In the refill case, where 1,500 contracts trade against a band near 600, Liquivue draws an absorption marker at the level, so you do not have to add up every bubble by hand.
The Liquivue CVD study counts the same trades. The five buys add 600 and the sell subtracts 30, so CVD rises by 570 over these 4 seconds. If you need a list of every print with its timestamp, a time and sales window does that job, and Liquivue has no verified standalone one.
Bubbles on other platforms
Bookmap lists volume bubbles on its desktop heatmap and a Time & Sales window. TensorCharts lists a trade heatmap next to its order book heatmap. Each platform sets its own slice length and size scale, so the same session can draw different bubbles. The glossary defines the terms used here.
A check you can run
Pick one price where a band ended during a session. Add up the bubbles printed at that price in the seconds before the band ended. If the total is close to the band's last size, the orders filled. If it is far below, the traders cancelled most of the orders. Then change the bubble grouping setting and look at the same moment again to see how much the bubbles change.
Questions
What is a trade bubble on a heatmap?
A trade bubble is a circle drawn at the price and time where contracts traded. Its size grows with the number of contracts in that print or group of prints.
Why are some trade bubbles bigger than others?
The platform scales each bubble by the contracts it holds. Grouping matters too, because a longer time slice merges several prints at one price into one larger bubble.
Can trade bubbles show whether a heatmap level filled or was cancelled?
Yes, when you compare them with the band. If the bubbles at a price add up to the band's size before it ends, the orders filled. If they add up to much less, the traders who placed most of the orders cancelled them.
Does Liquivue draw trade bubbles on its heatmap?
Yes. Liquivue draws trade bubbles over its liquidity heatmap, with absorption and sweep markers and a CVD study, for futures connected through Rithmic or the NinjaTrader bridge.
Educational content about market data and charting software. It is not trading or investment advice. Trading involves risk.