How L2 Aggregation Loses Order-Level and Queue Information
Summary
The note distinguishes market-by-price data from market-by-order data. L2 typically reports aggregate quantity at each price level, sometimes with the number of orders, and may cover only a limited number of levels or arrive as periodic snapshots. L3 reports individual order-book updates in real time, preserving order sizes and the history needed to identify queue positions.
Observing every change in L2 does not generally reconstruct L3. The example tracks aggregate quantity as orders arrive and one order is removed; the same visible totals can correspond to different sets of resting order sizes. L3 distinguishes these underlying configurations, while L2 has already combined them into totals. This information loss matters when studying queue priority, order flow, or execution behavior. Exact fields and update frequency vary by feed, so the descriptions are typical rather than a universal specification for every venue or data provider.
Key ideas
- L2 data usually aggregates quantity by price, while L3 identifies individual orders.
- Some L2 feeds provide only selected price levels or periodic snapshots.
- A complete sequence of aggregate L2 updates still cannot uniquely reveal resting order sizes.
- L3 can preserve order identity and queue-position information that aggregation removes.
- Feed contents and update timing depend on the market data provider.
Tags
Full text
# Difference between L2 and L3 market data # Difference between L2 and L3 market data L2 market data is described as having access to the full orderbook (so all price levels and size). Yet this access is given as a snapshot? So every 1s for example? Or is it given every time there's an update? L3 gives tick by tick data, so all the updates of the orderbook like cancellation and so on. What I don't get is that if L2 is all updates to the orderbook then can't you retrieve all the information given by L3 from L2? I guess the only problem is making the difference between someone bought at this level or someone cancell at this level. But in that case can we just say that L3 is basically L2 + cancelled orders? ## Answer by Chris Taylor (score 4, accepted) https://quant.stackexchange.com/a/82271 L2 market data typically has (price, total quantity) and perhaps also number of orders for each level. It may have only the top N levels (N = 5 and N = 10 are quite common) and you may get a snapshot every X milliseconds, rather than continuous updating. L3 market data has every update to the order book in real time, so you can infer, for example, that the price level 102.3 has five orders with quantities (1, 3, 7, 4, 3) along with the exact age of each order, whereas the L2 market data only tells you that there are five orders with a total quantity of 18. You might think that since you can observe the time evolution of the L2 order book, you can deduce all the information contained in the L3 order book (maybe except that you can't tell the difference between a trade matching event and a cancellation). But this is not true! You still lose information about specific orders in the book if all you can observe is the time evolution of the number of orders and the total quantity. To give a concrete example - say that the quantity at a particular price level in the order book evolves over time as 1, 3, 6, 8, 11, 9 and assume that you got every update in real time. So you know that an orders of size 1, 2, 3, 2, 3 arrived, and then that an order of size 2 was removed. What are the sizes of the resting orders in the book? With L2 data you can't tell the difference between (1, 3, 2, 3) and (1, 2, 3, 3) whereas with L3 data you would know the exact sizes of all orders in the book, and their queue positions.
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.