The specifiers mentioned previously are normally called time in force conditions, although, as you will see a bit later in this lesson, for some of them, it is not really obvious or intuitive.
Important disambiguation
More often than not, these execution method specifiers are referred to as the type of order. This can be found not only in some brokers’ documentation but also in apps on trading, and even academic research. So, be very careful when you encounter type of order or time in force in any documentation, and make sure you understand what exactly the author had in mind: the type of order as such (market, limit, stop, etc.), the time during which it is valid, or how the order should be executed liquidity-wise!
In the following subsections, we will consider different order specifiers in detail.
Immediate or cancel
An Immediate-or-Cancel (IOC) instruction attached to a market order means: I want to buy or sell at most X euros, dollars, lots, contracts, whatever, at the market price (that is, current best bid/ask), but no worse than this price, and I don’t care if I do not get the entire X euros, dollars, and so on, but only a smaller amount. If there’s not sufficient liquidity to fill my order, then fill in what is available and cancel the rest.
In other words, with IOC, I prioritize price over size.
For example, I send an IOC market order to buy 1,000,000 EUR USD. The current ask price is 1.01234 and the currently available amount at ask is 500,000. Then, I will get 500,000 EURUSD bought at 1.01234 and the rest of my order (another 500,000) will be canceled.
Using IOC orders is probably the best way to prevent execution at an unwanted price, but you should remember that using it may lead to partial fills – so, your trading algorithm should somehow account for situations of this sort.
Fill or kill
A fill-or-kill (FOK) instruction means: I want to buy or sell exactly X euros, dollars, lots, contracts, and so on at the market price, but if there is insufficient liquidity at the best bid/ask to fill the entire order, then do not execute this order at all (or kill the order).
In other words, with FOK, I prioritize the integrity of the order over its execution.
In the same example, if I send a market buy FOK order for 1,000,000 EURUSD but there’s only 500,000 at the best ask, then the entire order will be killed (canceled) and no partial fill will be executed.
You may wonder why both IOC and FOK are considered time-in-force specifiers: both assume immediate, instant execution of the order. Well, the answer is probably in the question: with IOC or FOK, we specify that the order should be executed as quickly as possible; this way, we specify its time in force.
Most execution venues support IOC or FOK only for market orders, but there are some that allow adding IOC or FOK to limit orders as well. This makes sense because some execution venues just convert a limit order into a market one when the limit order’s price is touched by the market, so the market order’s time-in-force specifiers become absolutely valid in such a scenario.
Of course, there are other time-in-force specifiers that give an order a much longer life than IOC or FOK. The most common are good for a day and good till canceled.
Good for a day (GTD) and good till canceled (GTC)
Both specifiers assume that the order can be filled in parts and set the time frame during which it can be filled.
A GTD order tries to fill what is available at the best bid/ask and the remaining will reside in the venue’s order app till the end of the day (that is, 5 P.M. New York time in most cases). Any moment the price returns to the order level, another portion of the order is executed.
A GTC order behaves in a similar way, but there’s no explicitly specified time until which the order remains actual. The trader should take care of all GTC orders, manually or automatically.
In reality, both specifiers are used with limit orders and simply mean the time during which such an order will remain in force, because if we take all appropriate measures by checking the liquidity, then in most cases, a limit order will be executed instantly.
Now that we are familiar with time-in-force specifiers, it’s time to update our proposed order ticket structure:

Figure 10.7 – Time in force attribute added
So far, we have discussed market (I buy now) and limit (I buy at this price or better) orders. But it would be quite logical to suppose that if we have an at this price or better order, then there should exist an at this price or worse order, wouldn’t it? Yes, such an order type does exist, and it’s called the stop order.
Leave a Reply