2
$\begingroup$

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.

$\endgroup$
4
  • $\begingroup$ Was 39525 a new level? If so, could it have been a stop order with limit price = stop price = 39525 ? $\endgroup$
    – Bob Jansen
    Jan 24, 2022 at 18:16
  • $\begingroup$ @BobJansen Yes, it was. Agree, it could be a stop order. I would accept this as the answer $\endgroup$
    – zer0hedge
    Jan 24, 2022 at 18:21
  • $\begingroup$ @zer0hedge What happened to maker 2d182ea2bc89 (row #4) as it was never hit by the taker, was it cancelled? $\endgroup$ Jun 14, 2022 at 2:26
  • $\begingroup$ @PontusHultkrantz It has been canceled at 2022-01-21T01:58:57.158260Z. I haven't removed it from the table by mistake (I removed all events that were processed properly). $\endgroup$
    – zer0hedge
    Jun 16, 2022 at 11:28

1 Answer 1

1
$\begingroup$

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.

$\endgroup$
2
  • $\begingroup$ Thanks's Bob - I've updated the question to answer your questions $\endgroup$
    – zer0hedge
    Jan 24, 2022 at 13:45
  • $\begingroup$ Hi Bob. It appears that we are wrong: an stop order, activated by market sell order should produce a sell order, but 461cafbfb0bd is a buy order... Aren't we? $\endgroup$
    – zer0hedge
    Mar 1, 2022 at 8:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.