I see a few papers using the following tick test to classify a trade as buy/sell initiated trades: compare a trade price to the previous differing trade price, if the current price is higher/lower, then it is a buy/sell.

This method is easy to implement but I do not understand the reason behind it: is there any fundamental mechanism that makes it more likely to be correct?


2 Answers 2


This is a quantifiable way to infer some understanding of the trade direction under very short time horizons (market microstructure). There exists a couple of other trade direction algorithms, which is neatly described in this paper.

  • $\begingroup$ I understand this is one of the methods to classify trade direction, but I'm interested in understanding why this is a reasonable method just from its mechanism/hypothesis instead of "it just works". $\endgroup$
    – DiveIntoML
    Jan 6, 2021 at 14:16
  • $\begingroup$ In general, a stock is based around buyers and sellers, where the bid and ask are the best potential prices that buyers and sellers are willing to transact at: the bid for the buying side, and the ask for the selling side. However, transaction prices (which the tick rule is based on) is the last trade that happened: either a potential buyer is willing to pay the asking price, or a potential seller is willing to accept the bid price (they can also meet in the middle if both change their orders). If you only have access to trade-data, you cannot see who initialized the trade. $\endgroup$
    – Pleb
    Jan 7, 2021 at 11:50
  • $\begingroup$ From a perspective of providing empirical research, we need to observe whether the transactions was buyer-initiated or seller-initiated, in order to model the "order-flow dynamics" (eg. order imbalances). The tick-rule is one way of assigning trades (which you have defined above). The trade direction overall tells us whether we are in a "buyers market" or "sellers market" where both markets have differing order-flow dynamics. I'm not completely sure if this answers your question. $\endgroup$
    – Pleb
    Jan 7, 2021 at 12:01
  • $\begingroup$ I'll elaborate a bit more on the tick rule. Based on intuition, the mechanism of tick rule can be described as follows: The transaction price is between the bid and ask price, and if a buyer places a market order he would get filled by the best asking prices, thus driving the price of the stock up (and the transaction price), and vice versa if he was a seller. Therefore, checking the current transaction price with the former is a good way to indicate whether the transaction was performed by a buyer (current $>$ previous) or a seller (current $<$ previous). $\endgroup$
    – Pleb
    Jan 7, 2021 at 12:42
  • $\begingroup$ so basically you mean: suppose we have a fixed quote, then the buy trade will be at ask and the sell trade will be at bid, hence under this simplified case the buy trade price > sell trade price. Therefore a buy trade price is more likely to be higher than the last trade price, and the sell trade price is more likely to be lower than the last trade price. $\endgroup$
    – DiveIntoML
    Jan 10, 2021 at 2:47

In an order-by-order depth-of-book feed, the trade direction is based on the taking order. If an incoming BUY order is immediately matched with a standing SELL order, the direction is BUY.

Things get a bit more interesting with icebergs and auction orders, in which case the trade direction is typically opposite of the earliest of the two originating orders.

Iceberg example:

.001,001,20.00,100,B (100 display of 300 iceberg order, 200 hidden)
.002,003,15.00,100,B (100 display of 300 iceberg order, 100 hidden)
.002,004,15.00,100,B (100 display of 300 iceberg order, 0 hidden)

The trade direction of all three trades above is SELL.

I don't think comparing prices of consecutive trades is a meaningful indicator of direction. But I have the feed available where the direction (aka side) is classified by the exchange itself and I could run some tests on empirical data.

  • $\begingroup$ thanks for your opinion, I'm interested in the part "for iceberg orders, the trade direction is typically opposite of earliest of the originating orders", why do you think is that the case? $\endgroup$
    – DiveIntoML
    Jan 22, 2021 at 1:57
  • $\begingroup$ I added the iceberg example to the answer $\endgroup$ Jan 22, 2021 at 6:30
  • $\begingroup$ thanks for the example, do you mind giving me some more illustration? One thing I don't understand is if this is your own iceberg order, then you know it's a sell anyway; if this is other people's iceberg order, you will not know the information in parenthesis. And I do not understand how it shows " the trade direction is typically opposite of the earliest of the two originating orders". Any more illustration is greatly appreciated. $\endgroup$
    – DiveIntoML
    Jan 23, 2021 at 2:45
  • $\begingroup$ Obviously icebergs are not identified as such in the integrated feed, however it can be inferred that the orders that were produced at the same timestamp (nanoseconds) with consecutive numbers have been generated by the exchange. The originating orders in the above example are order 001 and 002 (003 and 004 are derived). Of these two orders, order 001 BUY was placed first, hence all three trades have opposite direction - hence SELL. $\endgroup$ Jan 23, 2021 at 9:20

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.