Imported from previous forum
Hi,
I have a question.
If I send out a cancel for a order, and the cancel order message is acknoleged with a cumQTY of 500000, however the fills on that 500000 come after the cancel is sent. Is that allowed within the FIX spec?
Thanks
-jeremy
[ original email was from Xinyu Xiang - xxiang@bloomberg.net ]
> Hi,
I have a question.
If I send out a cancel for a order, and the cancel order message is
acknoleged with a cumQTY of 500000, however the fills on that 500000
come after the cancel is sent. Is that allowed within the FIX spec?Thanks
-jeremy
Absolutely. It’s common that your cxl request and your counterparty’s fill cross paths. So you need to be able to handle any fills before your cxl request is accepted. Most likely, you will receive a cxl reject later with 58=Too_Late_to_cancel. From broker perspective, a cxl pending msg is just an acknowledgement. There’s no gurantee that it’ll be able to cxl the order, e.g. when the order was routed to exchange and could not be pulled in time.
-Xinyu
Hi,
I have a question.
If I send out a cancel for a order, and the cancel order message is
acknoleged with a cumQTY of 500000, however the fills on that 500000
come after the cancel is sent. Is that allowed within the FIX spec?Thanks
-jeremy
Absolutely. It’s common that your cxl request and your counterparty’s
fill cross paths. So you need to be able to handle any fills before your
cxl request is accepted. Most likely, you will receive a cxl reject
later with 58=Too_Late_to_cancel. From broker perspective, a cxl pending
msg is just an acknowledgement. There’s no gurantee that it’ll be able
to cxl the order, e.g. when the order was routed to exchange and could
not be pulled in time.-Xinyu
Thanks Xinyu,
Just so i am clear on what I am asking. We but in a order to buy 1M shares of XYZ. And we get this.
D (ORDER_SINGLE) US 1000000
8 (EXECUTION_REPORT) BRKR 0 (NEW) 1000000 0
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 500
F (ORDER_CANCEL_REQUEST)US 1000000
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 1000
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 10000
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 100000
8 (EXECUTION_REPORT) BRKR 4 (CANCELED) 1000000 500000
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 200000
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 300000
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 400000
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 500000
Does that make sence for the cacel to come before the fills?
[ original email was from Xinyu Xiang - xxiang@bloomberg.net ]
> > > Hi,
I have a question.
If I send out a cancel for a order, and the cancel order message is
acknoleged with a cumQTY of 500000, however the fills on that 500000
come after the cancel is sent. Is that allowed within the FIX spec?Thanks
-jeremy
Absolutely. It’s common that your cxl request and your counterparty’s
fill cross paths. So you need to be able to handle any fills before
your cxl request is accepted. Most likely, you will receive a cxl
reject later with 58=Too_Late_to_cancel. From broker perspective, a
cxl pending msg is just an acknowledgement. There’s no gurantee that
it’ll be able to cxl the order, e.g. when the order was routed to
exchange and could not be pulled in time.-Xinyu
Thanks Xinyu,
Just so i am clear on what I am asking. We but in a order to buy 1M
shares of XYZ. And we get this.D (ORDER_SINGLE) US 1000000 8 (EXECUTION_REPORT) BRKR 0 (NEW) 1000000 0
8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 500 F
(ORDER_CANCEL_REQUEST)US 1000000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 1000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 10000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 100000 8 (EXECUTION_REPORT) BRKR 4 (CANCELED)
1000000 500000 8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000
200000 8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 300000 8
(EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 400000 8
(EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 500000Does that make sence for the cacel to come before the fills?
It does NOT make sense. Your broker seems to have a problem. You will have to treat them as unsolicited trades and call your broker up… you sure these are not trade busts&corrections?
Hi,
I have a question.
If I send out a cancel for a order, and the cancel order message
is acknoleged with a cumQTY of 500000, however the fills on that
500000 come after the cancel is sent. Is that allowed within the
FIX spec?Thanks
-jeremy
Absolutely. It’s common that your cxl request and your
counterparty’s fill cross paths. So you need to be able to handle
any fills before your cxl request is accepted. Most likely, you will
receive a cxl reject later with 58=Too_Late_to_cancel. From broker
perspective, a cxl pending msg is just an acknowledgement. There’s
no gurantee that it’ll be able to cxl the order, e.g. when the order
was routed to exchange and could not be pulled in time.-Xinyu
Thanks Xinyu,
Just so i am clear on what I am asking. We but in a order to buy 1M
shares of XYZ. And we get this.D (ORDER_SINGLE) US 1000000 8 (EXECUTION_REPORT) BRKR 0 (NEW) 1000000
0 8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 500 F
(ORDER_CANCEL_REQUEST)US 1000000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 1000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 10000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 100000 8 (EXECUTION_REPORT) BRKR 4
(CANCELED) 1000000 500000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 200000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 300000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 400000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 500000Does that make sence for the cacel to come before the fills?
It does NOT make sense. Your broker seems to have a problem. You will
have to treat them as unsolicited trades and call your broker up… you
sure these are not trade busts&corrections?
Yes, but then let me ask you what is the correct behavior on this order. If you get a partial fill of 100K and then a cancel of 500K w/o the fills for it. Do you go by the last fill amount or the amount of the cancel ticket. (the broker sends you a cancel w/ a cumqty=500K
[ original email was from Xinyu Xiang - xxiang@bloomberg.net ]
> > > > > Hi,
I have a question.
If I send out a cancel for a order, and the cancel order message
is acknoleged with a cumQTY of 500000, however the fills on that
500000 come after the cancel is sent. Is that allowed within the
FIX spec?Thanks
-jeremy
Absolutely. It’s common that your cxl request and your
counterparty’s fill cross paths. So you need to be able to handle
any fills before your cxl request is accepted. Most likely, you
will receive a cxl reject later with 58=Too_Late_to_cancel. From
broker perspective, a cxl pending msg is just an acknowledgement.
There’s no gurantee that it’ll be able to cxl the order, e.g. when
the order was routed to exchange and could not be pulled in time.-Xinyu
Thanks Xinyu,
Just so i am clear on what I am asking. We but in a order to buy 1M
shares of XYZ. And we get this.D (ORDER_SINGLE) US 1000000 8 (EXECUTION_REPORT) BRKR 0 (NEW)
1000000 8 (EXECUTION_REPORT) BRKR 1 (PARTIALLY_FILLED) 1000000 500 F
(ORDER_CANCEL_REQUEST)US 1000000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 1000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 10000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 100000 8 (EXECUTION_REPORT) BRKR 4
(CANCELED) 1000000 500000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 200000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 300000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 400000 8 (EXECUTION_REPORT) BRKR 1
(PARTIALLY_FILLED) 1000000 500000Does that make sence for the cacel to come before the fills?
It does NOT make sense. Your broker seems to have a problem. You will
have to treat them as unsolicited trades and call your broker up…
you sure these are not trade busts&corrections?Yes, but then let me ask you what is the correct behavior on this order.
If you get a partial fill of 100K and then a cancel of 500K w/o the
fills for it. Do you go by the last fill amount or the amount of the
cancel ticket. (the broker sends you a cancel w/ a cumqty=500K
cumqty should be the total filled at the time of cxl. So it should be 100K.
Either way you are stuck with an inconsistency of data across all messages you receive.
Receiving a Cancel confirmation with the (from your point of view) correct amount of 100K should imply that the order was canceled at a point in time when 100K had been executed. Additional fills would no longer be possible.
Receiving a Cancel confirmation with the (from the broker point of view) correct amount of 500K should imply that the order was canceled at a point in time when 500K had been executed. As you expected a value of 100K you should deduct that you must have missed some fills. If this all happens across a single FIX session and the fills come with message sequence numbers higher than the one used for the cancel confirmation, I would talk to the broker about his application logic which seems to make life harder for his customers.
Maybe his system queues the fills somewhere, adds information to them etc. which takes much longer than cancel confirmations which might be sent directly. The cancel confirmation compiled by the broker probably has no chance but to use the current cumQty of 500K if it is not synchronized with previous fills. The broker would need to keep track of outstanding Execution Reports for fills and ensure a consistent delivery of messages, i.e. queuing things in a way that reflect the sequence of events on his side.
As a workaround you could set a flag for outstanding fills. You clear the flag once you have received the missing Execution Reports and throw an exception if this does not happen within x amount of time.
Regards,
Hanno.
Does that make sence for the cacel to come before the fills?
It does NOT make sense. Your broker seems to have a problem. You
will have to treat them as unsolicited trades and call your broker
up… you sure these are not trade busts&corrections?Yes, but then let me ask you what is the correct behavior on this
order. If you get a partial fill of 100K and then a cancel of 500K w/o
the fills for it. Do you go by the last fill amount or the amount of
the cancel ticket. (the broker sends you a cancel w/ a cumqty=500Kcumqty should be the total filled at the time of cxl. So it
should be 100K.