Ok, I know what's the difference are between them but still have some question. Let's say that the exchange's limit order book looks like this: (order depth of LOB)

enter image description here

Now, let's say I send a buy FOK order with lmt price $1.12 and size 10. It will be executed? or will be cancelled?

What about if I sent same order but as IOC?

Just in case, I'm targeting forex market with most common venues (Currenex, EBS, Hotspot, etc)


  • $\begingroup$ @BehrouzMaleki I'm sure you can't $\endgroup$ Jul 12, 2016 at 19:22
  • $\begingroup$ Just I wanted to say, in this Community everything is free and voluntary.Good luck -:) $\endgroup$
    – user16651
    Jul 12, 2016 at 21:27
  • $\begingroup$ Especially in the FX markets you should check with the venue, there are too many subtleties: FASTmatch for instance has a fine-grained "FOK", you can specify a minimum quantity to be filled (FIX MinQty) and the TimeInForce field determines what happens to the rest. $\endgroup$
    – hroptatyr
    Jul 13, 2016 at 5:51

1 Answer 1


I don't understand the order book you've set up there: available size at 1.12 is 15 so your FOK (Fill Or Kill) order as defined to fill all, at size 10, will be filled not cancelled. It would be the same for the IOC (Immediate or Cancel) at 1.12 and all 10 will be filled.

If you're FOK or IOC order was for size 20 then the FOK would be cancelled and the IOC filled at 15 and the remaining 5 cancelled.

What you're really asking is how an exchange aggregates separate customer orders together and sets out which orders will be filled with which. First of all what does it matter with whom your order is filled? You're not offering credit, right? It's the exchange who handles the credit checks. Secondly, the exchange is likely to use a FIFO execution so that your 10 mio order will be filled with customer 1 at size 5 and then customer 2 at another 5 of their size 10. Then customer 2 still has an order at size 5 on the order book waiting for someone else to fill, or be cancelled.

It's up to the exchange to confirm and settle payments for the orders. On value date you will send them payment of your size 10 just like the 2 customers you executed with send payment for their size 5's. The exchange back office typically uses DvP (delivery versus payment) to match deliveries of funds then makes the payments out. So they handle credit or late delivery issues, not you...

  • $\begingroup$ Thanks for your answer! The question with the order book I've shown is to have same prices with different sizes (coming from different market makers)... so in that case, from what you said, I assume that the ECN/Exchange matching engine will fill my order even though they must to match it against several mm's orders. Is that correct? Is my question clear? Thanks! $\endgroup$ Jul 14, 2016 at 15:28
  • $\begingroup$ Yes that's correct. The exchange will use an aggregate order book to match all trades then work out the separate orders, partial fills, netting, etc... $\endgroup$
    – rupweb
    Jul 14, 2016 at 15:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.