API Support Forum
OEC API > FIX Support > Spread Execution report bugs
Author Topic: Spread Execution report bugs
(5 messages, Page 1 of 1)
Moderators: VPfau
PSturm
Posts: 12
Joined: Mar 15, 2017


Posted: Apr 26, 2017 @ 07:52 AM             Msg. 1 of 5
There's a couple of problems that we've come across while implementing support for your spread fills on your FIX API. Here is a sequence of Fix Messages for filling a BUY 1 ES FTS -M7,+U7 @MKT order:

MESSAGE 1 ->
8=FIX.4.4|9=250|35=8|34=294|49=OEC_TEST|52=20170426-12:27:54|56=PSturm|1=API003095|6=0.00|
11=CVS_56|14=0|17=OECFIX:204630687:407|31=2383.75|32=1|37=204630687|38=1|39=2|40=1|54=2|
55=ES FTS -M7,+U7|59=0|60=20170426-12:27:54.208|150=F|151=1|200=201706|442=3|461=FMXXXN|
10=019|

MESSAGE 2 ->
8=FIX.4.4|9=250|35=8|34=295|49=OEC_TEST|52=20170426-12:27:54|56=PSturm|1=API003095|6=0.00|
11=CVS_56|14=0|17=OECFIX:204630687:408|31=2381.25|32=1|37=204630687|38=1|39=0|40=1|54=1|
55=ES FTS -M7,+U7|59=0|60=20170426-12:27:54.224|150=F|151=1|200=201706|442=3|461=FMXXXN|
10=009|

MESSAGE 3 ->
8=FIX.4.4|9=236|35=8|34=296|49=OEC_TEST|52=20170426-12:27:54|56=PSturm|1=API003095|
6=-2.50|11=CVS_56|14=1|17=OECFIX:204630687:409|37=204630687|38=1|39=B|40=1|54=1|
55=ES FTS -M7,+U7|59=0|60=20170426-12:27:54.224|150=B|151=-1|200=201706|442=3|461=FMXXXN|
10=166|

MESSAGE1 + MESSAGE2 issues:
* 14=0 => This cumulative quantity should be 1 for each of the legs, not 0.
* 151=1 => LeavesQty should be 0 in this case, since legs are already filled
* 39=2 seems correct for MESSAGE1, however 39=0 for MESSAGE2 seems off (means new order), should also be 39=2 (or for larger lots/partial fills 39=1)
* 442=3 => seems incorrect should be 442=2, as far as we've discovered the first 2 messages are for individual legs (based on 31=2383.75 last price of ESM7)

MESSAGE3 issues:
* 151=-1 => LeavesQty should be 0 for filled order, not -1

Can you please advise? Should we ALWAYS expect 3 messages for any other partial fills on spread orders as well, and receive the last message only when the order is complete 150=B and 39=B? We tried to get partial fills in your demo environment but whatever large orders we placed we got an instant fill for the order, no partial fills.

Please let us know if you confirm these problems with FIX tag values on your end?
Edited by PSturm on Apr 26, 2017 07:53 AM
ETrifonov
Posts: 36
Joined: Feb 09, 2015


Posted: Apr 26, 2017 @ 10:01 AM             Msg. 2 of 5
Hello,

Thank you for your report.
We will fix issues you reported soon.

In case of partial fill you should always expect 39=B message after whole order filled.
Otherwise we won't send this message.
Also I can suggest to send iceberg order to test this.

Thank you.
Evgeny
PSturm
Posts: 12
Joined: Mar 15, 2017


Posted: May 15, 2017 @ 09:52 AM             Msg. 3 of 5
Thank you. Indeed I confirm all the issues are now fixed. However looks like your simulated matching engine does not support Icebergs for spreads? It's accepted by your gateway as pending new, but rejected at exchange level.

<- 8=FIX.4.4|9=181|35=D|34=174|49=PSturm|52=20170515-14:33:16.420|56=OEC_TEST|1=API003095|
11=CVS_88|38=4|40=2|44=-0.08|54=1|55=ZC FTS +N7,-U7|59=0|60=20170515-14:33:16.400|
111=2|200=201707|461=FMXXXN|10=209|

-> 8=FIX.4.4|9=251|35=8|34=234|49=OEC_TEST|52=20170515-14:33:15|56=PSturm|1=API003095|
6=0.0000|11=CVS_88|14=0|17=OECFIX:204674902:156|37=204674902|38=4|39=A|40=2|44=-0.08|54=1|
55=ZC FTS +N7,-U7|59=0|60=20170515-14:33:15.325|111=2|150=A|151=4|200=201707|442=3|
461=FMXXXN|10=057|

-> 8=FIX.4.4|9=293|35=8|34=235|49=OEC_TEST|52=20170515-14:33:15|56=PSturm|1=API003095|
6=0.0000|11=CVS_88|14=0|17=OECFIX:204674902:157|37=204674902|38=4|39=8|40=2|41=CVS_88|
44=-0.08|54=1|55=ZC FTS +N7,-U7|58=Unsupported order type|59=0|60=20170515-14:33:15.340|103=0|
111=2|150=8|151=4|200=201707|442=3|461=FMXXXN|10=254|


Can you please advise?
PSturm
Posts: 12
Joined: Mar 15, 2017


Posted: May 15, 2017 @ 03:39 PM             Msg. 4 of 5
Also can you please let us know if we should always receive groups of 3 messages for every spread partial fill, or only 2 messages are sent for the individual legs? (since we're unable to test Iceberg at this point as you suggested see the previous message with the reject we're receiving),

I understand that the order enters 39=B state when the whole quantity is filled, but shouldn't we receive any 150=F for each partial fill on the spread symbol with updated LeavesQty (tag 151 until it reaches 0)?
ETrifonov
Posts: 36
Joined: Feb 09, 2015


Posted: May 16, 2017 @ 08:29 AM             Msg. 5 of 5
Hello,

Our simulation fill server is not support iceberg for spreads, sorry for confusion.

We will send:
    ER_NEW (150=0, for spread)
    ER_TRADE (150=F, for individual legs)
    ER_CALCULATED (150=B, for spread)

So, we won't send partial fill reports with updated LeavesQty for spread, only for individual legs.
Thank you.
Evgeny

Edited by ETrifonov on May 16, 2017 08:30 AM