AggressorIndicator(1057) versus LastLiquidityIndicator(851) on Execution Report


I am struggling to understand the difference between these two tags where they can both appear in the same Execution Report message. It sounds like both would only apply if ExecType=TRADE. Surely if one side of the book takes liquidity it is the aggressor and if it provides liquidity it is not the aggressor. Is there some subtlety that i’ve missed? What does AggressorIndicator do at auction uncrossings?


@danielmack you are right that the terms “aggressor” and “liquidity taker” have a semantic overlap. Btw AggressorIndicator is tag 1057 (not 1051). The field was added as a boolean which only allows two different values. It was added as part of extensions needed for FX and I believe the focus was on the TradeCaptureReport (TCR) which did not have a liquidity indicator at the time (came much later with SideLiquidityInd(1444) to repeat the content of this field from the ExecutionReport (ER)). Aggressive and passive can lead to different trade fees and tag 1057 allows a simple separation.

Over time, new business requirements came along where it is no longer black and white when it comes to the aggressor. Auction is one of them where “all orders are equal”, there is no incoming order that could be called the aggressor. Due to the choice of the boolean data type for 1057, we would have had to change this to int and break backward compatibility which is a big no-no. Hence tag 851 was extended with 4=Auction and additional values later on for resting orders that are not displayed and eventually triggered inside the matching engine.

If you only need a binary distinction then you can use tag 1057 in both the ER and the TCR. If you need additional flavors then you should use tag 851. It really depends what your business requirement is. I have seen billing models being related to liquidity indicators. Regulator often only require simple distinctions. ESMA (for MiFID II) only wants to know whether an order was passive or aggressive. You simply leave it (Field 44 in order record keeping reporting) blank if it was neither, e.g. for periodic auctions.


Thank you @hanno.klein for your clear answer. I have only ever seen LastLiquidityInd(851) in use to date, and had not realised the AggressorIndicator(1057) even existed until recently.