Detecting Iceberg Orders from Order-by-Order Market Data
Summary
The document distinguishes a visible order-book pattern from confirmed iceberg detection. A rising count of buys at a bid that does not advance may indicate that incoming buying is being absorbed by sell liquidity, but the answer says this is better described as absorption because the pattern alone does not prove an iceberg order is present. Price, displayed size, and aggregate volume from many broker feeds may not provide enough detail to count individual orders.
For more direct detection, the answer recommends reliable, granular market data and processing order-by-order book events, including new orders, cancellations, and replacements. It notes that certain exchange data, when complete and unaltered by vendors, can support accurate identification of icebergs and stop orders. This capability depends on the venue and data quality; the claim is not established for all markets. The excerpt gives no detection algorithm or performance evaluation, and its code is only an event-listener interface sketch.
Key ideas
- A stationary bid despite increasing buying may signal absorption, but does not by itself confirm an iceberg.
- Aggregate quotes, displayed size, and volume may omit the individual-order details needed for direct detection.
- Order-by-order market data can be processed through new, cancel, and replace events to maintain the book.
- Detection accuracy depends on the exchange and receiving complete, unaltered market data.
- The document says stop-order information may also be detectable from suitable data, but provides no algorithm or evaluation.
Tags
Full text
# how to calculate/retrieve the number of sell orders (and buys orders as well) to detect iceberg orders
# how to calculate/retrieve the number of sell orders (and buys orders as well) to detect iceberg orders
As a manual trader, i could identify the iceberg orders because my interface provided me in real time the number of buys and the number of sells at best ask and best bid.
For instance, when the number of buys keep increasing but the bid price doesn't go up (or keep reverting to the same level), i could say there was a sell iceberg order at this level.
From an algo perspective, i don't know how to compute/retrieve number of buys order as most brokers only deliver bid/ask price, bid/ask size and volume (and that's all to my knowledge). If anyone has an idea how to find/compute number of buys (and sells), that would be highly appreciated.
## Answer by Serg (score 1)
https://quant.stackexchange.com/a/54731
A short answer is to use reliable market data and a trading platform which doesn't wrap precious details in the market data into candles. Your algorithm is a reasonable, but is an approximation. A better name for it would be absorption because it doesn't necessarily detects actual iceberg orders. With some exchanges, e.g. CME, (and given undamaged by data vendors market data) it's possible to detect icebergs and stop orders (bonus) with 100% accuracy. Personally, I think Stops is a more valuable information than icebergs. If you want to develop your own algorithm, you can use its API and process yourself thousands of price levels with many individual orders at each level. The interface is as simple as it can be:
```
public class MyOrderByOrderDataListener implements MarketByOrderDepthDataListener {
// manage the orders yourself or use included order book class
@Override
public void cancel(String orderId) {
}
@Override
public void replace(String orderId, int price, int size) {
}
@Override
public void send(String orderId, boolean isBid, int price, int size) {
}
}
```Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.