I am working on a system where we would like to implement a rule that if an execution “trade bust” occurs then we cancel both the partial fill in question and the equivalent portion of the order. We were thinking this is best captured by setting a nonzero value for CxlQty(84) on the Order and sending this in the Execution Report that reports the “trade bust” event (i.e. the one that has ExecType=Trade Cancel). So for example, we want to bust a partial fill of size 2 from a fully filled order of size 10. The order state information changes from e.g. OrderQty=10, LeavesQty=0, CumQty=10, CxlQty=0, OrdStatus=Filled to OrderQty=10, LeavesQty=0, CumQty=8, CxlQty=2, OrdStatus=Filled. Does this make sense? Or should we only use CxlQty with the OrdStatus of “Cancelled” ?
I have been a little confused as to whether I can do this in cases where the Order is still working (i.e. it is partially filled and working, we bust one of the partial fills, and wish the working quantity (LeavesQty) of the order to remain constant. E.g. once again assuming we’re busting a partial fill of size 2, we’d like order state information to change from OrderQty=10, LeavesQty=5, CumQty=5, CxlQty=0, OrdStatus=Partially Filled to OrderQty=10, LeavesQty=5, CumQty=3, CxlQty=2, OrdStatus=Partially Filled. Is this a legitimate use case or should we instead send two Execution Reports: a Trade Cancel which reduces CumQty and increases LeavesQty followed (atomically) by a “Restated” Execution Report with ExecRestatementReason “Partial decline of OrderQty” which reduces OrderQty to 8 and LeavesQty to 5?