By Crypto Loop · Updated 2026-10-06T20:48:28.869Z
What execution means in practice
An order is not just an instruction to trade; it is also a request for a specific kind of execution. The same economic decision can produce very different outcomes depending on whether the order is passive or aggressive, whether it can rest on the book, and how long it remains valid. For that reason, a useful way to think about execution is not only price, but also timing, fill certainty, and the chance of interacting with other orders before the market moves.
A limit order states the worst price you are willing to accept. A market order states that you want the trade executed as quickly as possible against available liquidity, accepting whatever prices are available at that moment. Between those two poles sit many practical choices: should the order remain open after a partial fill, should it cancel immediately if it cannot trade, and should it be allowed to add liquidity or only remove it? The answers matter because order flags shape both execution quality and the kinds of risks you take.
In simple terms, market orders prioritize execution certainty and limit orders prioritize price control. But that simplification is incomplete. A limit order can execute immediately if it is marketable, meaning the limit price crosses the current opposite side of the book. A market order can still receive only a partial fill if the available depth is thin. And a passive order can fail to trade even when price briefly touches it, because the market may move away before the order reaches the matching engine or because other orders are ahead in queue.
Market orders and marketable limits
A market order is generally the most aggressive instruction. It seeks immediate execution against the best available resting liquidity and then the next best levels if needed. That makes it useful when entering or exiting quickly matters more than precision. The trade-off is slippage: the final average fill price can differ from the price visible when the order was sent, especially in a fast or thin market. In an order book with limited depth, the last portion of a market order may match several levels worse than the first portion.
A marketable limit order is a limit order whose price is already good enough to trade immediately. For a buy order, that means the limit is at or above the best offer; for a sell order, at or below the best bid. It behaves much like a market order at entry, but with an important difference: it should not execute beyond the stated limit. This provides a hard price cap or floor, which can matter when the book is thin or when the user wants immediate execution but does not want to accept extreme slippage.
However, a marketable limit order is not a magic substitute for a market order. If the book moves during transmission, the order may arrive no longer marketable and instead rest on the book. That can be helpful if you intended to provide liquidity, but it can also leave you exposed to non-execution when you expected a fill. A practical decision check is to ask: do I want certainty of trade, or only certainty of worst price? Those are related but not identical goals.
Limit orders, GTC, IOC and ALO
Limit orders are often associated with patient execution. They can rest on the book and interact with incoming orders later, which gives the trader control over entry price and a chance to earn maker treatment in some fee structures. But the value of a resting limit order depends on its time-in-force instructions. Three common ones are GTC, IOC and ALO.
GTC, or good till canceled, means the order stays active until it is filled, canceled by the user, or expires according to the venue’s rules. It is the default resting style in many contexts because it gives the order time to wait for a match. The main risk is stale exposure: if the market moves sharply, a GTC order may remain resting far from the current market and later fill when conditions are no longer what the trader expected. That can be useful for patience, but harmful if the order was based on outdated information.
IOC, or immediate or cancel, instructs the system to execute any available portion immediately and cancel whatever cannot be filled right away. IOC is useful when the trade is time-sensitive and lingering on the book is undesirable. It is often chosen when a trader wants to avoid being left with a stale resting order after a brief opportunity has passed. The downside is that any unfilled quantity disappears, so it does not support patience. IOC is a tool for partial participation, not for waiting.
ALO, or add liquidity only, also called post-only in some environments, tries to ensure the order will rest on the book rather than remove liquidity immediately. If the order would cross and trade at once, it is typically canceled or adjusted according to venue rules. This matters because some traders want to place passive orders and avoid accidentally paying taker costs or consuming visible liquidity. The key limit of ALO is that it can miss an opportunity if the market is already at or through your chosen price. The order may simply fail to post rather than execute.
A practical check for these instructions is to match them to the actual goal. If the goal is waiting for price, GTC may fit. If the goal is any immediate execution with no leftovers, IOC may fit. If the goal is to rest passively and avoid taking liquidity, ALO may fit. If the goal is to guarantee complete execution at once, none of these alone may be enough; the order size, market depth, and price range all still matter.
Maker and taker mechanics
The maker/taker distinction describes whether an order adds liquidity to the book or removes liquidity from it. A resting limit order that waits for a counterparty is typically a maker order. A market order, or a marketable limit order that trades immediately, is typically a taker order. This distinction is operational rather than moral; it helps explain fees, queue priority, and execution behavior.
Maker orders can benefit from being passively placed, but they also face queue risk. If many orders are already resting at the same price, newer orders may sit behind them and receive fills only after earlier orders are matched. That means the order may be price-competitive yet still not execute when the trader wants it to. Taker orders face the opposite trade-off: they are more likely to execute now, but they may pay a higher explicit cost and can incur more price impact.
It is useful to avoid thinking of maker and taker as fixed traits of a strategy. The same order can be passive in one market and aggressive in another, depending on where the current book sits relative to the limit price. A buy limit below the best ask is passive. A buy limit at or above the best ask may become aggressive immediately. Therefore, the maker/taker outcome is a consequence of the order’s relation to the live book at the moment it arrives, not just the label attached by the trader.
One practical decision check is to ask whether queue priority is actually valuable for the trade. If the objective is to work an order over time and potentially improve average price, maker behavior may be appropriate. If the objective is to enter or exit before a likely move, waiting in queue may be the wrong priority. Execution style should match the real cost of missing the move, not just the nominal fee difference.
Partial fills, depth and stale prices
Partial fills are common when order size exceeds liquidity at the best price or when the market is moving while the order is processed. A partial fill means only part of the order executes and the remainder either stays open, cancels, or waits depending on time-in-force. Partial fills are not failures; they are a normal consequence of fragmented liquidity. The important question is how the remaining quantity behaves and whether the resulting position still matches the intended risk.
Depth matters because the visible best bid or ask is only the first layer of liquidity. A large order may consume several levels, each with a different price. If the market is thin, a market order or marketable limit can sweep through levels quickly and produce a blended execution that is far from the top-of-book quote. That blended result can be sensible if speed matters, but it can also reveal how fragile the book is.
Stale prices are a separate problem. A stale limit price is one set using information that is no longer current by the time the order reaches the market or by the time the market returns to that level. A resting GTC order can become stale simply because time passed. A marketable limit can become stale during transmission or during a volatile move. The risk is not only missing an opportunity; it is getting filled when the broader context has changed, such as after a sharp move or during a brief liquidity gap.
A useful discipline is to ask three questions before placing the order: is the reference price current enough, is the size small enough for the book depth, and is the time-in-force compatible with the expected speed of the market? If any answer is uncertain, the trade should be treated as having higher execution risk, even if the headline order type seems simple.
Cancellation races and execution uncertainty
A cancellation race occurs when an order is being canceled or modified at the same time that market activity may fill it. Because order routing, matching, and cancellation are not instantaneous in human time, the order can sometimes trade before the cancel request is processed. This is especially relevant for resting limits during fast markets, where the user believes the order is gone but the engine may still see it as active for a brief interval.
The practical consequence is that canceling is not always equivalent to never having been in the market. There can be a brief overlap between intent and state. If an order is near the touch, a sudden move may fill it before cancellation arrives. If the order is large, a partial fill may occur first, followed by a cancel of the remainder. Both outcomes are normal in electronic matching systems and should be anticipated rather than treated as anomalies.
Cancellation races also matter for order amendments. Modifying an order may be implemented as a cancel plus new order rather than a true in-place change, depending on venue mechanics. That can alter queue position and can expose the trader to a moment when neither the old nor the new version has the desired status. The result may be a missed fill, an unexpected partial fill, or a fill at a less favorable queue rank.
A practical check is to avoid assuming that an on-screen action has immediate effect. If an order is near current price and the market is moving, plan for overlap. If the strategy depends on strict non-execution, consider whether IOC, ALO, or a smaller order size reduces the chance of a race creating an unwanted fill.
Worked example: choosing between IOC, GTC and ALO
Assume, for illustration only, an order book shows a best ask of 100 and the visible ask depth is 40 units at 100, 30 units at 100.5, and 50 units at 101. A trader wants to buy 60 units. If the trader submits a market order, the first 40 units may trade at 100 and the next 20 units may trade at 100.5, producing a blended execution above 100. This is a hypothetical example, not a forecast, but it shows how depth affects average price.
If the trader submits a buy limit at 100.5 with GTC, the order is marketable at entry because it crosses the best ask. It could fill immediately for the available 40 units at 100 and then potentially for the next 20 units at 100.5, depending on how the book changes during matching. If only 40 units are available before the price moves, the remaining 20 units may rest at 100.5 as a maker order rather than execute immediately. That may be acceptable if the trader is willing to wait, but it may also leave an unexpected open remainder.
If the trader submits the same buy limit at 100.5 with IOC, any available quantity up to 60 units can fill immediately, and the rest is canceled. In the example, 40 units might fill and 20 units would disappear. This fits a trader who wants immediate participation but does not want a leftover order to linger. The limitation is obvious: the remaining size is not preserved.
If the trader submits a buy limit at 100.5 with ALO, the order may be rejected or canceled if it would trade immediately, because its purpose is to add liquidity rather than take it. If the best ask is already 100, the order is likely not to rest passively at 100.5; it would be marketable. The trader would need to choose a lower price, such as 99.5, to ensure the order posts rather than executes at once. That may gain queue position and potentially maker treatment, but it also introduces the risk of no fill.
This example shows the central trade-off. The same numeric intent, buying 60 units, can be expressed as speed, patience, or passivity. The order flag changes the result as much as the price does.
Failure scenarios, limits and risk caveat
Several common failure scenarios deserve attention. First, a market order in a thin book can fill far from the displayed quote, especially if the size is larger than visible depth. Second, a GTC limit can become stale and later execute after the market context has changed. Third, an IOC can return a partial fill and cancel the remainder, leaving the trader underfilled relative to the plan. Fourth, an ALO can fail to post because the price would have crossed the spread, which may be surprising if the trader expected a resting order. Fifth, cancel requests can race with fills, so an order may still execute despite an apparently timely cancellation.
There are also limits to what order flags can solve. They cannot guarantee a specific outcome in a dynamic market. They do not remove slippage in fast conditions, and they do not eliminate queue risk for passive orders. They also do not replace judgment about size, volatility, and the quality of the reference price. Execution quality depends on the interaction between order type and market state, not on the flag alone.
A concise decision framework is to ask: do I need certainty of execution, certainty of maximum price, or certainty that the order will remain passive? Then check whether the market is deep enough for the size, whether the reference price may go stale quickly, and whether a partial fill would be acceptable. If the answer to any of those is no, the order should be treated as carrying materially higher execution risk.
Jurisdiction and risk caveat: order handling, maker/taker treatment, validity rules, and market access conditions can vary by venue and by jurisdiction, and they may change over time. This article is educational only and is not legal, tax, or investment advice. Anyone using real capital should confirm the exact order semantics, local requirements, and venue documentation before relying on a particular instruction in live trading.