CancelReplace after Reject ? Allowed ?

Imported from previous forum

[ original email was from Richard Valk - rval@kempen.nl ]
Hi All,

We’re connecting an order entry system to our middleware using the FIX interface and coppelia. This works perfectly but I’m having some doubts about the FIX compliantness of the order entry system. If I send an execution report rejecting a new order it is rejected but then a trader can alter the rejected order to send it again. BUT the application send a Cancel/Replace message to modify the order I just rejected. Is this valid ? or should I expect a New Orderm message with a new CLOrdID.

Anyone care to enlighten me ?

Thanks,

Richard Valk
Kempen & Co
The Netherlands

[ original email was from Ryan Pierce - rpierce@taltrade.com ]
> We’re connecting an order entry system to our middleware using the FIX interface and coppelia. This works perfectly but I’m having some doubts about the FIX compliantness of the order entry system. If I send an execution report rejecting a new order it is rejected but then a trader can alter the rejected order to send it again. BUT the application send a Cancel/Replace message to modify the order I just rejected. Is this valid ? or should I expect a New Orderm message with a new CLOrdID.

I don’t see any language in the spec making a statement one way or the other on this issue, but I believe it is similar to a related issue.

The FIX Protocol allows for doing a Cancel/Replace on an order that is filled to increase its quantity, effectively re-opening the order. While this is legal FIX, firms get to choose what subset of the business functionality to support, and many firms will simply reject such a change request. Hence any buy-side contemplating doing such a thing should coordinate with their sell-side counterparties to determine whether such behavior is allowed. The sell-sides that don’t support this must send Cancel Rejects.

I believe that changing a rejected order may be similar. I seem to recall a discussion when drafting FIX 4.3 concerning Trade Along. In this scenario, the customer sends an order and the broker is trading a proprietary position in the instrument, hence rejects the customer order with OrdRejReason = Trade Along Required. The customer then decides whether or not to authorize the broker to execute the order in spite of the proprietary position, and if so, Cancel/Replaces the rejected order to add ExecInst=Trade Along. I don’t recall the outcome of this discussion, but
at first glance I don’t see anything in 4.3 that either allows or forbids it.

I would say that as the sell-side, you are not obligated to support the client changing an order that you rejected, but you ARE obligated to cancel-reject the change if the client sends it. This is how I’ve implemented FIX; we reject all changes for filled or rejected orders.