FIX 4.2 - In flight Full Fill

Hi all,

Been a while since I have had to think of this and can’t see a specific example in the 4.2 spec but am having trouble to determine correct Order Status for a sequence of messages.

Order was partially filled, Cancel-request for price adjustment sent, next execution report was 150=2 (full fill) with 39=E (Pending replace), followed by a subsequent execution report of 150=0 and 39=5 (replaced).

This seems at least partially incorrect, although I have previously seen in-flight executions for a partially filled order with the Order Status 39=E so I am having doubts.

Can anyone help clarify this situation? (I also wish people would just upgrade to 4.4 and beyond)

Thanks

The second OrdStatus(39) is incorrect based on the FIX 4.2 precedence table. The first one is correct since E=Pending Replace has the second highest priority and comes before 2=Filled. The order is in both states at the time of the first ExecutionReport(35=8). However, the order is also in two states at the time of the second ExecutionReport(35=8), i.e. 5=Replaced and 2=Filled. The latter has a higher priority and needs to be provided.

The other question is why a replacement is made when the order has already been fully filled. Sending E=Pending Replace is ok (simply confirms receipt of the request) but it should then rather be rejected. See also the note “DOES NOT INDICATE THAT THE ORDER HAS BEEN REPLACED.” in the precedence table shown with the ExecutionReport(35=8) message in the FIX 4.2 Specification.