Imported from previous forum
What happens if an Execution occurs while an order is "Pending Cancel-Replace" ?
Client send me an order.
I accept (–> Execution Report - New) it
and start the Execution (–> Execution Report - "Partially Filled").
Client ask to amend the order.
I send him a Pending (–> Execution Report - "Pending Cancel-Replace").
Then, before I accept the amend request, a market execution occurs on the order.
What should I do ? Should I send him an execution report, what will be the value for tag "Order Status" ?
Regards,
Christophe
Refer to the “Order State Change Matrices” in FIX 4.2’s Appendix D or FIX 4.3’s Volume 4. Specifically look at the “execution occurs whilst order is pending replace” for “Replace to increase qty” and “Replace to decrease qty” entries.
> What happens if an Execution occurs while an order is "Pending Cancel-Replace" ?
>
>
> Client send me an order.
> I accept (–> Execution Report - New) it
> and start the Execution (–> Execution Report - "Partially Filled").
>
> Client ask to amend the order.
> I send him a Pending (–> Execution Report - "Pending Cancel-Replace").
>
> Then, before I accept the amend request, a market execution occurs on the order.
>
>
> What should I do ? Should I send him an execution report, what will be the value for tag "Order Status" ?
>
>
> Regards,
> Christophe
>
>
Do you mean that the “Order State Change Matrices” in FIX 4.2’s Appendix D, is also available for FIX 4.0.
In Fix 4.2, this State change is managed by TAG 150 ("ExecType"). What should I send to th client ?
Thanks,
Christophe
> Refer to the “Order State Change Matrices” in FIX 4.2’s Appendix D or FIX 4.3’s Volume 4. Specifically look at the “execution occurs whilst order is pending replace” for “Replace to increase qty” and “Replace to decrease qty” entries.
>
>
> > What happens if an Execution occurs while an order is “Pending Cancel-Replace” ?
> >
> >
> > Client send me an order.
> > I accept (–> Execution Report - New) it
> > and start the Execution (–> Execution Report - “Partially Filled”).
> >
> > Client ask to amend the order.
> > I send him a Pending (–> Execution Report - “Pending Cancel-Replace”).
> >
> > Then, before I accept the amend request, a market execution occurs on the order.
> >
> >
> > What should I do ? Should I send him an execution report, what will be the value for tag “Order Status” ?
> >
> >
> > Regards,
> > Christophe
> >
> >
>
[ original email was from Ryan Pierce - rpierce@taltrade.com ]
> Do you mean that the “Order State Change Matrices” in FIX 4.2’s Appendix D, is also available for FIX 4.0.
>
> In Fix 4.2, this State change is managed by TAG 150 (“ExecType”). What should I send to th client ?
This situation isn’t exactly well defined in FIX 4.0, although what to do is explicitly defined in FIX 4.1 and later.
There are generally two lines of thought on the matter:
-
Send OrdStatus=Pending Cxl/Replace. The other side can see LastShares and LastPx are non-zero, and infer that this is a trade.
-
Send OrdStatus=Partially Filled.
It is my feeling that #1 is preferable to #2, as it is in line with future spec versions, and is more descriptive of the state of the order at that point in time, but #2 is compatible with the 4.0 specification as well.
In the Archipelago FIX implementation, for 4.0 clients, we default to #1, and require all clients take a certification test to check that they will recognize OrdStatus=Pending Cxl/Replace, LastShares/LastPx=non-zero as a trade. For clients that fail this test, we explain why we believe #1 is better, but in cases where it is impossible to change their implementation, we can switch their port configuration to do #2 instead.
For FIX 4.1, we only offer one option. OrdStatus=Pending Cxl/Replce, ExecType=Partial Fill is explicitly stated in the spec, hence it is the only thing we’ll send.
I remember a document used to be posted to the FIX web site elaborating the differences in interpretation of FIX 4.0 as a result of spec ambiguities, but I can’t seem to find it. Fortunately, most different “flavors” of basic order handling semantics go away in FIX 4.1 and later, which is an excellent reason to upgrade.
[ original email was from Ian Orford - ian.orford@drkw.com ]
> There are generally two lines of thought on the matter:
>
> 1. Send OrdStatus=Pending Cxl/Replace. The other side can see LastShares and LastPx are non-zero, and infer that this is a trade.
>
> 2. Send OrdStatus=Partially Filled.
>
> It is my feeling that #1 is preferable to #2, as it is in line with future spec versions, and is more descriptive of the state of the order at that point in time, but #2 is compatible with the 4.0 specification as well.
>
Just to give an argument in favour of #2, we prefer this and argue that the recipient should know the state because we’re still sending the original ClOrdID tag.
This does of course mean that the recipient needs to combine the information in the ExecReport with other state information to get the full picture.
Regarding Ryan’s comment: “I remember a document used to be posted to the FIX web site elaborating the differences in interpretation of FIX 4.0 as a result of spec ambiguities, but I can’t seem to find it.”
This document "Clarification of FIX 4.0 Order Flow" (drafted July 1999) can now be found under "Specifications", "App Notes" on the FIX website.
> > Do you mean that the “Order State Change Matrices” in FIX 4.2’s Appendix D, is also available for FIX 4.0.
> >
> > In Fix 4.2, this State change is managed by TAG 150 (“ExecType”). What should I send to th client ?
>
> This situation isn’t exactly well defined in FIX 4.0, although what to do is explicitly defined in FIX 4.1 and later.
>
> There are generally two lines of thought on the matter:
>
> 1. Send OrdStatus=Pending Cxl/Replace. The other side can see LastShares and LastPx are non-zero, and infer that this is a trade.
>
> 2. Send OrdStatus=Partially Filled.
>
> It is my feeling that #1 is preferable to #2, as it is in line with future spec versions, and is more descriptive of the state of the order at that point in time, but #2 is compatible with the 4.0 specification as well.
>
> In the Archipelago FIX implementation, for 4.0 clients, we default to #1, and require all clients take a certification test to check that they will recognize OrdStatus=Pending Cxl/Replace, LastShares/LastPx=non-zero as a trade. For clients that fail this test, we explain why we believe #1 is better, but in cases where it is impossible to change their implementation, we can switch their port configuration to do #2 instead.
>
> For FIX 4.1, we only offer one option. OrdStatus=Pending Cxl/Replce, ExecType=Partial Fill is explicitly stated in the spec, hence it is the only thing we’ll send.
>
> I remember a document used to be posted to the FIX web site elaborating the differences in interpretation of FIX 4.0 as a result of spec ambiguities, but I can’t seem to find it. Fortunately, most different “flavors” of basic order handling semantics go away in FIX 4.1 and later, which is an excellent reason to upgrade.
>