Verifix issue with multiple cancels using a pause time between each one

Hello,
Not sure if this is the right place to ask but I’m giving it a shot :slight_smile:
I’m currently having an issue using verifix where I’m getting the wrong tag 11-ClOrdId for cancel request confirm message if it’s preceded by a pause time.
The 1st cancel confirm goes fine but the 2nd one is either taking the 1st cancel CIOrdId or generating a new one !!

Any idea about what could have been went wrong here ? or any reference to check.

Thanks in advance.
Ghada.

Hi Ghana, if it is a tool (VeriFIX) issue, you will probably not find an answer here and need to contact the vendor supporting the tool. Are you trying to cancel the same order twice or why is there a 1st cancel confirm and a 2nd one? Or are you using the same ClOrdID(11) value to cancel two different orders? This is not clear to me from your description and it would help if you show the FIX messages and their key fields (mainly ClOrdID(11)) going back and forth.

Hi Ghada,

You can send your inquiry to: fixsupport@itiviti.com.

Cheers,

Thanks, actually I couldn’t find any contact or info so I was hoping that maybe someone here already used Verifix and might have an idea.
.
I’m working on the below test:

  1. Send a placement (qty=5000)// 11-ClOrdId = Val1

  2. Ack

  3. Accept

  4. 4 Partial fills

  5. Changed variables : ExecId <17> is stored into a variable ‘execution6’

  6. Send A Cancel from trading// 11-ClOrdId = Val2 and 41-ClOrdId = Val1

  7. Change variables : ClOrdId <11> is stored into the variable ‘client1’ // ‘client1’= Val2

  8. Pending Cancel (ClOrdId = client1) // ‘client1’= Val2

  9. Cancel Confirm (ClOrdId = client1) // ‘client1’= Val2

  10. Bust latest execution based on the variable changed( ExecRefId = execution6)

  11. Send a second placement (qty=4999) )// 11-ClOrdId = Val3

  12. Ack

  13. Accept

  14. 1 Partial fill

  15. Changed variables : ExecId <17> is stored into a variable ‘execution6’

  16. Send A Cancel from trading// 11-ClOrdId = Val4 and 41-ClOrdId = Val3

  17. Change variables : ClOrdId <11> is stored into the variable ‘client2’ // ‘client2’= Val4

  18. Pending Cancel (ClOrdId = client2) // ‘client2’= Val4

  19. Cancel Confirm (ClOrdId = client2) // ‘client2’= Val4

  20. Bust latest execution based on the variable changed( ExecRefId = execution6)

As a logic the above is correct yet for the 2nd Pending Cancel(row 18) and Cancel Confirm(row 19) I do have the same ClOrdId as the one for the 1st cancel request(row 6) while a new ClOrdId was generated for the 2nd cancel request (row 16).
I tried to use variables to make sure that the correct ClOrdId is picked up but this didn’t work.

Thanks, I’ll try to reach out to them :slight_smile:

Ghada,
I cannot tell whether your VeriFIX engine is standing in as sender or receiver from your narrative or the log but I assume VeriFIX is simulating the ‘fill’ platform. And I assume the log appears in reverse order. Are those correct? The logical handling of ClOrdID(11) and OrigClOrdID(41) appear to correspond to the standard usage from your narrative but we cannot see OrigClOrdID(41) from the log. Examine the message content of the second OrderCancelRequest and see what the value of OrigClOrdID(41) is. If it is +5Gz8kkC then the Sender of ExecutionReport (your row 18) has a bug - returning ‘client1’ instead of ‘client2’. If it is oYgb8xqy then the Sender of the second OrderCancelRequest has a bug.
Regards,
Dean