Splitting orders

Imported from previous forum

We have a problem with a certain flow of events that perhaps someone could help us with.
The systems that we use in this case implements FIX 4.0 & 4.1

When our system receive an incoming order we sometimes want to split this order into several small orders and send these smaller orders into the market.
When all of these small orders has been traded we report back to the ordering party that the order has been traded.
The problem occurs when we get an error on one of the small orders as in

New Order – Single received by FIX System
----------------------->

Split order and send each small 
order into market
InsertOrder ----------------------->
InsertOrder ----------------------->
InsertOrder ----------------------->
InsertOrder ----------------------->
InsertOrder ----------------------->

Trade occurs on some of the small orders
and is reported back to system from market
<---------------------- Trade
<---------------------- Trade
<---------------------- Trade

An ERROR occurs on one of the small orders
<---------------------- ERROR

When this error occurs we have traded part of the original order but not all of it.
So, the problem is how to report this over FIX since we only have one ClOrdId?!

The worst case scenario for us is to do this by stepping outside of the FIX spec and make an agreement with each customer client that we will report this in a special message or with dummy clOrdID’s. As we can’t find any other solution we thought that we would send out this question and see if any other firm have had this problem and see how they solved it.

/Benny Kellner
Progranet AB

[ original email was from Ryan Pierce - rpierce@taltrade.com ]
I think this is identical to the SelectNet partial decline problem, which has been solved in FIX 4.2.

So what you are saying is that part of the order has been rejected, and rather than re-route those shares elsewhere, you just want to tell the user that those shares will not trade?

If so, then it works as follows. Assume a 1000 share order split up into 5 200-share blocks. The first 200 shares trade, and the second block gets declined. The sell side reports this to the client by sending an Execution Report with ExecType = Restated, ExecRestatementReason = Partial Decline of Order!Qty(5), OrdStatus = Partially Filled, OrderQty=800, LeavesQty = 600. In other words, the sell side is lowering the quantity of the buy side’s order because part of the order cannot be traded. At this point, the remaining 600 can trade, and the order finally becomes filled.

This is documented in Appendix D, case D21.

Hi
How about the case when we amend the original order to high qty

> New Order(10000) ?Single received by FIX System
> ----------------------->
>
> Split order and send each small
> order into market
> InsertOrder --------> 2000
> InsertOrder --------> 2000
> InsertOrder --------> 2000
> InsertOrder --------> 2000
> InsertOrder --------> 2000
>
> Trade occurs on some of the small orders
> and is reported back to system from market
> <---------------------- Trade 2000
> <---------------------- Trade 2000
> <---------------------- Trade 2000
>
Amend Original Order to a higher qty (12000)
How can we do ?

Regards
Terence

> We have a problem with a certain flow of events that perhaps someone could help us with.
> The systems that we use in this case implements FIX 4.0 & 4.1
>
> When our system receive an incoming order we sometimes want to split this order into several small orders and send these smaller orders into the market.
> When all of these small orders has been traded we report back to the ordering party that the order has been traded.
> The problem occurs when we get an error on one of the small orders as in
>
> New Order ?Single received by FIX System
> ----------------------->
>
> Split order and send each small
> order into market
> InsertOrder ----------------------->
> InsertOrder ----------------------->
> InsertOrder ----------------------->
> InsertOrder ----------------------->
> InsertOrder ----------------------->
>
> Trade occurs on some of the small orders
> and is reported back to system from market
> <---------------------- Trade
> <---------------------- Trade
> <---------------------- Trade
>
> An ERROR occurs on one of the small orders
> <---------------------- ERROR
>
> When this error occurs we have traded part of the original order but not all of it.
> So, the problem is how to report this over FIX since we only have one ClOrdId?!
>
> The worst case scenario for us is to do this by stepping outside of the FIX spec and make an agreement with each customer client that we will report this in a special message or with dummy clOrdID’s. As we can’t find any other solution we thought that we would send out this question and see if any other firm have had this problem and see how they solved it.
>
> /Benny Kellner
> Progranet AB
>
>
>

[ original email was from Ryan Pierce - rpierce@taltrade.com ]
> Hi
> How about the case when we amend the original order to high qty
>
> Amend Original Order to a higher qty (12000)
> How can we do ?

"Unsolicited" increases to order quantities generally happen in two scenarios.

  1. The broker gets a verbal or other out-of-band request from the client to increase the order quantity. See FIX 4.3 vol 4 Order State Change Matrix 24.

  2. The stock splits, and a GTC order needs to be adjusted. See FIX 4.3 vol 4 Order State Change Matrix 33.