Skip to content
All library documents

Interpreting Simultaneous Maker Orders and Taker Trades in Exchange Feeds

Article Quant Q&A · Author: zer0hedge

Summary

The document examines exchange feed timestamps that make a newly displayed maker order appear to coincide with a taker order consuming several resting orders at the same price. The example shows maker orders appearing earlier in the feed and then being depleted by trades attributed to one taker order. The question is whether the matching events indicate high-frequency activity or an unusual exception.

The accepted explanation proposes a stop-limit order as one possibility: a trade could trigger a hidden stop, causing its resulting limit order to appear while the triggering taker order is executing. Otherwise, identical timestamps may arise from how an exchange timestamps messages, particularly when multiple front-end servers feed a matching engine. The example alone cannot establish which occurred; given its stated timestamp precision and order sequence, the answer considers simultaneous processing possible but unlikely. Exchange-specific stop and timestamp behavior limits how broadly to apply the explanation.

Key ideas

  • A trade can trigger a stop-limit order that then becomes visible in the order book.
  • Matching-engine timestamps may not reveal the exact order of events.
  • Exchange server architecture can cause distinct messages to share a timestamp.
  • A feed example alone cannot identify why an order appeared alongside a taker trade.

Tags

Full text
# How often do maker orders arrive together with matching taker orders on modern exchanges?


# How often do maker orders arrive together with matching taker orders on modern exchanges?












Table below shows messages that were recently collected from the Full channel of the websocket feed of the well-known cryptocurrency exchange:

> The full channel provides real-time updates on orders and trades. These updates can be applied on to a level 3 order book snapshot to maintain an accurate and up-to-date copy of the exchange order book.

maker and taker columns contain truncated UUIDs of maker and taker orders respectively, trade column contains an unique identification of trade.

Rows 1-6 in the table below shows how maker orders were placed in the order book and rows 7-11 shows trades produced by taker (market order) 442419b35ec9.

| # | maker | timestamp | price | remaining volume | volume change | trade | taker |
| 1 | fb9f830fafd6 | 2022-01-21T01:53:09.608467Z | 39525 | 0.0001265 |  |  |  |
| 2 | 26ef9547d740 | 2022-01-21T01:53:09.608467Z | 39525 | 0.0005 |  |  |  |
| 3 | fa5031014cd0 | 2022-01-21T01:53:09.608467Z | 39525 | 0.00008 |  |  |  |
| 4 | 2d182ea2bc89 | 2022-01-21T01:53:09.608467Z | 39525 | 0.05 |  |  |  |
| 5 | aab77e59743b | 2022-01-21T02:16:04.586531Z | 39525 | 0.02515865 |  |  |  |
| 6 | 461cafbfb0bd | 2022-01-21T02:21:02.616013Z | 39525 | 0.0252 |  |  |  |
| 7 | fb9f830fafd6 | 2022-01-21T02:21:02.616013Z | 39525 | 0 | -0.0001265 | 266641216 | 442419b35ec9 |
| 8 | 26ef9547d740 | 2022-01-21T02:21:02.616013Z | 39525 | 0 | -0.0005 | 266641217 | 442419b35ec9 |
| 9 | fa5031014cd0 | 2022-01-21T02:21:02Z,616013 | 39525 | 0 | -0.00008 | 266641218 | 442419b35ec9 |
| 10 | aab77e59743b | 2022-01-21T02:21:02.616013Z | 39525 | 0 | -0.02515865 | 266641219 | 442419b35ec9 |
| 11 | 461cafbfb0bd | 2022-01-21T02:21:02.616013Z | 39525 | 0 | -0.0252 | 266641220 | 442419b35ec9 |

So it appears that maker order 461cafbfb0bd in row 6 has been placed simultaneously with taker order 442419b35ec9.

Do such situations happen often (due to HFT etc) or it is a kind of exception?

Please note that 442419b35ec9 order touched several other maker orders with prices higher and lower than 39525 (I removed them for clarity), the exchange does not allow to place hidden orders and has the following matching engine and order priority rules:

> 1.71 Exchange Markets matches Taker Orders with Open Maker Orders on each Order Book based on Price-Time Priority. 1.72 Price-Time Priority means that each time a Taker Order is posted: The Taker Order is matched with the earliest in time Maker Order at the best price on the Order Book; and To the extent that the Taker Order is not completely Filled by that Maker Order, it is matched with any subsequent Maker Orders at that price, in the sequence those Maker Orders were posted; and To the extent that the Taker Order is not completely Filled by one or more Maker Orders described above, it is matched with one or more Maker Orders at the next best price, in the sequence those Maker Orders were posted, and this process is repeated until the Taker Order is completely Filled. 1.73 All Traders on accessing Exchange Markets are subject to the same Price-Time Priority. 1.74 Subject to Time in Force Instructions, an Order may be matched with a number of corresponding Orders at the same price. 1.75 Taker Orders are matched with the best available existing Maker Orders. This means that a Limit Order placed outside the market (i.e. a sell Order below the highest existing buy Order, or a buy Order above the lowest existing Sell Order) will be Filled by the best available existing Order rather than an existing Order with the same price as the Limit Order.

and self-trade prevention rules:

> 2.41 Traders are not able to place an Order which would result in self-execution—i.e., where the same Trader would act as both the maker and taker for the trade. 2.42 If two Orders of the same quantity would result in self-execution, both Orders are canceled. 2.43 If two Orders of different quantities would result in self-execution, the smaller Order is canceled and the larger order is decremented by an amount equivalent to the smaller quantity. The remainder of the larger order remains Open.

## Answer by Bob Jansen (score 1, accepted)

https://quant.stackexchange.com/a/69607

Maybe 461cafbfb0bd posted a stop order with the stop price equal to the limit price which got activated by 442419b35ec9's selling. In that case I would expect a new limit order to appear on the buy side (the remaining size of the stop order).

> 1.5 Stop Orders 1.51 A Stop Order is an instruction to post an Order to buy or sell a specified quantity of an Asset but only if and when the last trade price on the Order Book equals or surpasses the Stop Price. 1.52 Once a Stop Order has been placed, it is considered ‘active’ until it executes by posting the relevant Order when the Stop Price is triggered. 1.53 A Stop Order is not posted to the Order Book and is not visible to other Traders, but any resulting Order is posted and visible. All Stop Orders are placed without 'post-only' enabled. 1.54 A Stop Order must be placed as a Stop Limit Order which posts a Limit Order when the Stop Price is triggered. 1.55 A Stop Limit Order is not guaranteed to Fill. The Web Interface will display a warning each time a Trader attempts to place a Stop Order. 1.56 Stop Orders may be placed with one of the following Time in Force Instructions. Good til canceled: if posted, the Order will remain on the Order Book until canceled by the Trader. This is the default Time in Force Instruction. Good til time: if posted, the Order will remain on the order book until a certain time is reached or the Order is canceled by the trader.

Otherwise it's not impossible that an order is processed in the exact same microsecond (but unlikely given the number of incoming orders you're showing) even when processing an order takes more than the granularity of the timestamp:

If the exchange has multiple servers in front of the matching engine and these servers generate the timestamp you see multiple orders can have the same timestamp. With the infrequent orders and and high granularity shown that is unlikely to be the case here.

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.