Imported from previous forum
[ original email was from Igor Seleznev - selez@mail.ru ]
If an order that is being inserted got completely traded, and a sell-side wants to send an execution report (ER) with OrdStatus=NEW, is it allowed to set LeavesQty to 0 in this case?
That is,
-> add sell 10@100
<- ER NEW sell 10@100
-> add buy 10@100
<- ER NEW buy 0@100 <--------------- NOTE ZERO VOLUME
<- ER FILLED buy 0@100 (CumQty=10 LeavesQty=0)
<- ER FILLED sell 0@100 (CumQty=10 LeavesQty=0)
Or, the ER with OrdStatus=NEW should always have a LeavesQty non-zero?
So, in previous example it should have been:
-> add sell 10@100
<- ER NEW sell 10@100
-> add buy 10@100
<- ER NEW buy 10@100
<- ER FILLED buy 0@100 (CumQty=10 LeavesQty=0)
<- ER FILLED sell 0@100 (CumQty=10 LeavesQty=0)
[ original email was from Bernt Sandén - bernt.sanden@omxgroup.com ]
> If an order that is being inserted got completely traded, and a sell-
side wants to send an execution report (ER) with OrdStatus=NEW, is it
allowed to set LeavesQty to 0 in this case?That is, → add sell 10@100 ← ER NEW sell 10@100 → add buy 10@100 ←
ER NEW buy 0@100 <--------------- NOTE ZERO VOLUME ← ER FILLED buy
0@100 (CumQty=10 LeavesQty=0) ← ER FILLED sell 0@100 (CumQty=10
LeavesQty=0)Or, the ER with OrdStatus=NEW should always have a LeavesQty non-zero?
So, in previous example it should have been: → add sell 10@100 ← ER
NEW sell 10@100 → add buy 10@100 ← ER NEW buy 10@100 ← ER FILLED buy
0@100 (CumQty=10 LeavesQty=0) ← ER FILLED sell 0@100 (CumQty=10
LeavesQty=0)
The second scenario is the currently supported one. You must echo back en ER with OrdStatus=New and LeavesQty set to the originally entered volume and the the fill/partiall fill in a separate ER. However, the EEWG suggests these rules to be changed so it will be possible to send a single ER instead of two when an order is partially or completely filled upon order entry. EEWG suggest to use a single ER with ExecType=Trade and OrdStatus = Filled or Partially filled.
You can find the EEWG Best Practices here: http://www.fixprotocol.org/documents/3005/EEWG%20Recommended%20Best%20Practices%20-%20Phase%201%20V1.0.pdf
Regards, Bernt
[ original email was from Igor Seleznev - selez@mail.ru ]
> The second scenario is the currently supported one. You must echo back
en ER with OrdStatus=New and LeavesQty set to the originally entered
volume and the the fill/partiall fill in a separate ER.
Thanks, that’s what I have asked for.
However, the
EEWG suggests these rules to be changed so it will be possible to send a
single ER instead of two when an order is partially or completely filled
upon order entry. EEWG suggest to use a single ER with ExecType=Trade
and OrdStatus = Filled or Partially filled.You can find the EEWG Best Practices here:fixprotocol.org/documents/3005/EEWG%20Recommended%20Best%20Practices%20-
%20Phase%201%20V1.0.pdf
Would be nice to have it as a part of FIX standard, even if it is just best/recommended practices. Thank you for the great job!
Igor,
if I understand you correctly, the case is an immediate fill of the buy order upon order entry. The current FIX 5.0 specification requires you to send two messages, one with OrdStatus=NEW (LeavesQty=OrderQty=100) and another with OrdStatus=FILLED (LeavesQty=0).
The FPL Exchange&ECN Working Group (EEWG, http://www.fixprotocol.org/working_groups/exchwg) has recommended a best practice allowing message bundling. This has not been formally accepted by FPL yet but is quite common for legacy interfaces of exchanges. It recommends to send OrdStatus=FILLED together with LeavesQty=0. You left out the field ExecType in your description. This field should carry the information that it was an order that was immediately filled upon entry, i.e. ExecType=NEW. OrdStatus should always carry the most recent status of the order (completely traded) whereas ExecType can describe the type of transaction on the incoming side that caused the ER to be created (new order is inserted).
Regards,
Hanno.
If an order that is being inserted got completely traded, and a sell-
side wants to send an execution report (ER) with OrdStatus=NEW, is it
allowed to set LeavesQty to 0 in this case?That is, → add sell 10@100 ← ER NEW sell 10@100 → add buy 10@100 ←
ER NEW buy 0@100 <--------------- NOTE ZERO VOLUME ← ER FILLED buy
0@100 (CumQty=10 LeavesQty=0) ← ER FILLED sell 0@100 (CumQty=10
LeavesQty=0)Or, the ER with OrdStatus=NEW should always have a LeavesQty non-zero?
So, in previous example it should have been: → add sell 10@100 ← ER
NEW sell 10@100 → add buy 10@100 ← ER NEW buy 10@100 ← ER FILLED buy
0@100 (CumQty=10 LeavesQty=0) ← ER FILLED sell 0@100 (CumQty=10
LeavesQty=0)
[ original email was from Igor Seleznev - selez@mail.ru ]
> Igor,
if I understand you correctly, the case is an immediate fill of the buy
order upon order entry. The current FIX 5.0 specification requires you
to send two messages, one with OrdStatus=NEW (LeavesQty=OrderQty=100)
and another with OrdStatus=FILLED (LeavesQty=0).
Yes, the question was whether it is allowed to send two messages (one with OrdStatus=NEW and another with OrdStatus=FILLED), but both with LeavesQty=0.
Of course, the general rule “OrderQty<38> = CumQty<14> + LeavesQty<151>” wasn’t broken.
The FPL Exchange&ECN Working Group (EEWG,
http://www.fixprotocol.org/working_groups/exchwg) has recommended a best
practice allowing message bundling. This has not been formally accepted
by FPL yet but is quite common for legacy interfaces of exchanges. It
recommends to send OrdStatus=FILLED together with LeavesQty=0.
Yes, thanks!
You left out the field ExecType in your description. This field should carry the
information that it was an order that was immediately filled upon entry,
i.e. ExecType=NEW. OrdStatus should always carry the most recent status
of the order (completely traded) whereas ExecType can describe the type
of transaction on the incoming side that caused the ER to be created
(new order is inserted).
Yes, I left out ExecType, which could be ExecType=NEW and ExecType=FILL, but this shouldn’t affect my question a lot, I guess.
Thanks for you help!