Quant Memo
Core

Partial Fills and Order Splitting

Why a large order is rarely executed all at once, how partial fills need to be handled in a backtest, and why deliberately splitting an order into smaller pieces is standard practice for reducing market impact.

When an order is larger than what's resting at the best price, it doesn't simply execute in full at one price — it fills against whatever quantity is available, then either waits for more liquidity to arrive or walks further down the book to fill the rest, often across many separate partial fills at slightly different prices. A backtest that assumes every order fills instantly and completely at the quoted price will systematically understate both the cost and the time it takes to actually get in or out of a position.

Because of this, traders deliberately split large orders into smaller child orders spread over time — a practice sometimes called "iceberging" when only a slice of the order is visible at once — so that no single child order is big enough to move the price much or signal the full size of what's coming. Common approaches spread the child orders evenly over a time window, weight them by expected trading volume, or adapt in real time to how much liquidity is showing up, trading off faster execution (more market impact, less timing risk) against slower execution (less impact, more risk the price drifts before the order is done).

A backtest that wants to be realistic about execution needs to model this explicitly: assume some order gets only partially filled at each step, track the remaining unfilled quantity, and apply a cost that grows with how much of the available liquidity that fill actually consumed.

Large orders typically fill in pieces against available liquidity rather than instantly and completely, so realistic backtests must simulate partial fills, and live execution deliberately splits orders over time to limit market impact and information leakage.

Further reading

  • Almgren & Chriss, Optimal Execution of Portfolio Transactions (2000)
ShareTwitterLinkedIn