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.