LOBSTER data is limit-order-oriented, as Level III message data, on which it is built. As a consequence, a market(able) order is represented as a sequence of limit-(or hidden-) order executions (and a limit order submission). Let’s take a buy marketable order email@example.com (buy 1000 shares at $20.01) as an example. The ask side of the current lit order book is firstname.lastname@example.org (2limit orders, email@example.com) and firstname.lastname@example.org, while there is also a hidden sell order email@example.com. When the marketable order is coming to the market, it matches with the limit-(hidden-) orders according to the price-display-time priority. That’s how LOBSTER messages look like:
- Sell limit order execution firstname.lastname@example.org , with event type 4 and side -1
2. Sell limit order execution email@example.com , with event type 4 and side -1
3. Hidden order execution firstname.lastname@example.org, with event type 5 and side 1 (NASDAQ Totalview masks the hidden order side by BUY)
4. Sell limit order execution email@example.com, with event type 4 and side -1
5. Buy limit order submission firstname.lastname@example.org, with event type 1 and side 1
When this happen, we expect that the time interval between those events are very small.However, the gaps could depend on the environment in the trading system. We have to set a threshold subjective. I usually suggest people to use a number between 10 – 100 ms.
Notice that because LOBSTER data trace all quote change, you need only construct one level order book for reconstructing market(able) orders.