· HEATMAPS
Why iceberg detection needs order-level data
Iceberg detection needs market by order data, because a price total cannot show which order refilled. One ES bid in Liquivue shows the gap in numbers.
SHORT ANSWER
Iceberg detection needs order-level data because a feed that sends one total per price cannot show which order refilled a level. Market by order data lists each resting order on its own, so software can follow one order as it refills after every fill. Liquivue lists iceberg detection as experimental, and it needs live CME order-level data.
Iceberg detection needs order-level data, because only order-level data shows which order refilled a price. An iceberg order is a limit order that shows part of its size and posts a new slice at the same price after each slice fills. The note on how iceberg orders show up measured the pattern from outside, as traded volume against displayed size. This note looks at the data underneath. It replays one invented ES bid twice, first as market by price messages and then as market by order messages. Then it shows the same bid in Liquivue and lists the platforms that sell order-level iceberg tools.
Two ways a feed describes one bid
Market by price data, or MBP, sends one total for each price level. Market by order data, or MBO, sends each resting order on its own, with an order ID and a place in the queue. The note on MBP and MBO covers both formats. For icebergs, one difference matters. When the size at a price rises after a fill, MBO data shows which order added it, and MBP data does not.
The bid as market by price messages
All numbers below are invented. ES is the E-mini S&P 500 future. At 10:20:00 the bid at 5,061.25 holds 35 contracts.
| Time | Event | Total at 5,061.25 |
|---|---|---|
| 10:20:00 | Start | 35 |
| 10:20:04 | Sells trade 35 | 0 |
| 10:20:04 | Size rises by 20 | 20 |
| 10:20:10 | Size rises by 15 | 35 |
| 10:20:16 | Sells trade 20 | 15 |
| 10:20:16 | Size rises by 20 | 35 |
| 10:20:23 | Sells trade 35 | 0 |
| 10:20:23 | Size rises by 20 | 20 |
| 10:20:30 | Sells trade 20 | 0 |
Sellers traded 110 contracts at 5,061.25, and the total never went above 35. That is a ratio of about 3.1 between traded volume and the largest size shown.
The size rose by 20 three times, each time right after a fill. That fits an iceberg with a display size of 20. It also fits a trader who types a new 20 lot after each fill. The rise of 15 at 10:20:10 adds a second question, because MBP gives no way to tell whether it came from the same order. The feed only says the total went from 20 to 35.
The same bid as market by order messages
Here are the same events with the orders named. Order A is an ordinary 15 lot. Order I is the iceberg, with a display size of 20. Order C is a 15 lot from a third trader.
| Time | Event | Queue at 5,061.25 after the event, front first |
|---|---|---|
| 10:20:00 | Start | A 15, I 20 |
| 10:20:04 | Sells trade 35, filling A 15 and I 20 | I 20 |
| 10:20:10 | Order C joins | I 20, C 15 |
| 10:20:16 | Sells trade 20, filling I 20 | C 15, I 20 |
| 10:20:23 | Sells trade 35, filling C 15 and I 20 | I 20 |
| 10:20:30 | Sells trade 20, filling I 20 | empty |
The order IDs settle both questions. Order I came back with 20 contracts after its first three fills, and in this example each new slice joined the back of the queue. Order C has its own ID, so the 15 lot belongs to another trader. Order I traded 80 contracts against a display of 20, a ratio of 4. Orders A and C traded 15 each and never came back.
How a feed links a refill to its parent order differs by exchange and by vendor processing. A detector still infers the iceberg from repeated refills. With MBO it infers from one named order. With MBP it infers from a price total that several traders share.
What detection still cannot see
Order-level data does not reveal the hidden reserve. Order I held 80 contracts, and the feed showed 20 at a time. Nobody outside the order could know the total was 80 until the last slice filled and no new one appeared at 10:20:30.
Detection also needs at least one refill. Before 10:20:04, order I looked like any other 20 lot. A flag can only appear after the first slice has traded and the second has posted.
The data shows that one order kept refilling. It does not show why the trader placed it. It says nothing about where price goes after the last slice fills.
The same bid in Liquivue
With live CME order-level data, Liquivue's experimental iceberg detection can flag the level at 5,061.25. The heatmap band at that price stays between 0 and 35 contracts, so Liquivue draws it as a faint line next to larger bands. The trade bubbles add up to 110 sell contracts at the price. The volume profile row grows by 110, and CVD falls by 110 while the bid holds. The Liquivue DOM shows the totals stepping through 35, 0, 20, 35, 15 and back to 35.
Without order-level data, Liquivue still draws the bubbles, the band and the DOM sizes. You can then work the MBP ratio of 3.1 by hand. Because Liquivue marks the detector as experimental, compare any flag with the DOM sizes and the bubble total before you write it in your notes.
Order-level iceberg tools on other platforms
Bookmap sells native stops and icebergs as paid MBO add-ons. They need BookmapData CME or Rithmic CME data and do not cover Nasdaq stocks. Live futures analysis in Bookmap starts with the Global tier at US$49 a month. ATAS lists an MBO bundle with icebergs as an Ultra plan bonus until 27 November 2026, with Rithmic required. Ultra costs €89.95 a month. Sierra Chart Package 12 adds MBO on Sierra feeds, and it has no historical MBO replay.
Liquivue includes iceberg detection in its workspace at €20 a month after a 7-day trial. The CME order-level data is a separate charge from your data provider. For a trader comparing Bookmap alternatives for iceberg work, add the platform price to the data the detector needs. The costs page keeps each price in its original currency.
A check you can run
Ask your data provider whether your CME subscription sends market by price or market by order data. Then find one level on today's chart where trade bubbles kept printing while price held. Write down each rise in displayed size that came right after a fill. If every rise is the same number, the level fits the iceberg pattern. Only order-level data can show whether one order made all of those rises.
Questions
What is order-level data?
Order-level data, also called market by order or MBO, lists each resting order in the book with its own ID, size and queue position. Market by price data, or MBP, adds those orders up and sends one total per price.
Can you detect iceberg orders with market by price data?
Not with certainty. MBP shows the total at a price falling and rising again, and a refill from an iceberg looks the same as a new order from another trader. You can measure that more traded at the price than the book showed, and nothing more.
Does Liquivue detect iceberg orders?
Liquivue lists native iceberg detection as experimental, and it needs live CME order-level data. Without that data, Liquivue still shows the trade bubbles, the heatmap band and the DOM sizes you need to work out the ratio by hand.
Which platforms sell order-level iceberg tools?
Bookmap sells stops and icebergs as paid MBO add-ons that need BookmapData CME or Rithmic CME data. ATAS lists an MBO bundle with icebergs as an Ultra plan bonus until 27 November 2026 on Rithmic. Sierra Chart Package 12 adds MBO on Sierra feeds.
Educational content about market data and charting software. It is not trading or investment advice. Trading involves risk.