Quant Memo
Core

Decomposing Slippage

The gap between the price you expected and the price you got isn't one number — it splits into pieces caused by delay, your own market impact, and the price simply drifting on its own, and each piece needs a different fix.

Prerequisites: Choosing an Execution Benchmark, Market Impact

A portfolio manager decides to buy a stock at 100.00. By the time the order is fully filled, the average fill price is 100.18. That is 18 cents of slippage — but "slippage" as one number tells you almost nothing about what to fix. Was the desk too slow to react? Did the order itself push the price up by trading too aggressively? Or did the stock simply rally on its own, for reasons that had nothing to do with this trade at all? Each answer points to a completely different remedy — faster systems, a gentler execution schedule, or nothing at all, because you can't fix a market that moved on its own news.

The analogy is a road trip that arrives late. "Two hours late" could mean you left late, you drove slowly through a construction zone you caused yourself (unlikely, but imagine you're driving a wide truck that has to merge traffic behind it), or there was simply unrelated traffic on the highway that day. You wouldn't fix "leaving late" by driving faster once you're already on the road — you'd diagnose which piece actually caused the delay.

Implementation shortfall, the standard total-slippage number, is defined against the price at the moment the decision was made:

IS=(pˉfillpdecision)×Q\text{IS} = (\bar{p}_{\text{fill}} - p_{\text{decision}}) \times Q

— the average fill price minus the decision price, times the quantity traded, in the direction that makes buying-higher a cost. In words: how much extra you paid (or how much less you received, if selling) relative to the price on the table when the order was born. This total splits into three named pieces:

IS=(parrivalpdecision)delay cost+(pˉfillparrival)execution cost+(pcancelpdecision)opportunity cost (unfilled shares)\text{IS} = \underbrace{(p_{\text{arrival}} - p_{\text{decision}})}_{\text{delay cost}} + \underbrace{(\bar{p}_{\text{fill}} - p_{\text{arrival}})}_{\text{execution cost}} + \underbrace{(p_{\text{cancel}} - p_{\text{decision}})}_{\text{opportunity cost (unfilled shares)}}

Delay cost: the price moved between the decision and the moment the order actually reached the market (a slow desk, a compliance check, a queued order). Execution cost: the price moved while the order was being worked, which is where market impact and unlucky drift both live, and which itself typically gets split further into impact (caused by your own trading) and pure drift (would have happened anyway). Opportunity cost: shares the algorithm never filled at all, valued at the closing or decision price, because giving up on a trade is also a cost if the reason to trade was still valid.

Worked example. Decision price: 100.00 at 9:30:00. The order reaches the desk's algo at 9:30:45, by which point the stock has drifted to 100.04 — that's delay cost of $0.04/share. The algo works the order over the next 20 minutes; the average fill price across 10,000 shares is 100.18, while the market's own unaffected mid (estimated from a matched control, or from the price path after the order finishes trading) drifted from 100.04 to 100.14 over that window with no help from this order. So of the 100.18 − 100.04 = $0.14/share execution cost, $0.10 is pure market drift and $0.04 is this order's own market impact. Total implementation shortfall: $0.04 (delay) + $0.04 (impact) + $0.10 (drift) = $0.18/share, on 10,000 shares that's $1,800.

Second example, with a shortfall. A sell order for 5,000 shares, decision price 50.00, only fills 4,000 shares by the cutoff time at an average price of 49.85 (a cost of $0.15/share on the filled portion = $600), and the remaining 1,000 shares are cancelled unfilled while the price has since dropped further to 49.60. Opportunity cost on the unfilled shares is valued at (50.00 − 49.60) × 1,000 = $400 — the manager wanted to sell at 50.00-ish and instead is still holding shares now worth even less. Total cost: $600 + $400 = $1,000, and notice the unfilled shares actually contributed more dollars per share of "damage" than the filled ones, which a report that only shows "average fill price 49.85" would completely miss.

decision arrival fill delay cost execution: impact + drift total IS
Total implementation shortfall stacks three pieces along the trade's timeline: delay before the order reaches the market, then execution cost while it's being worked, which itself splits into your own impact and unrelated drift.

What this means in practice

A trading desk that only measures total slippage cannot tell whether it has a speed problem, an algorithm-aggressiveness problem, or no problem at all beyond bad luck. Decomposing it routes the blame correctly: chronic delay cost points at operational latency; chronic impact points at trading too large or too fast relative to available liquidity; drift that's roughly zero on average across many trades (even if any single trade's drift looks bad) means the execution itself was fine and the market simply moved, which is not something an execution desk can be held accountable for.

Total slippage = delay cost + market impact + drift + opportunity cost on unfilled shares. Diagnosing which piece is large tells you what to fix; the total alone tells you nothing.

The classic confusion

It's tempting to attribute all execution-window price movement to market impact — "the price moved 14 cents while we were trading, so our trading cost 14 cents." But price would have moved something even with no trade at all; only the portion of that movement caused by your own order counts as impact, and separating the two requires either a market-impact model fit on historical data or a matched control period, not just watching the tape during your own order. Confusing drift for impact leads desks to unnecessarily throttle their own trading, accepting worse delay and opportunity costs to avoid a "cost" that was never really theirs.

Slippage decomposition is the diagnostic layer that sits under any TWAP, VWAP & POV execution report, and the impact term is exactly what Optimal Execution and The Almgren-Chriss Model try to minimize by choosing a trading schedule. See Information Leakage and Signalling Risk for how impact can be amplified by other participants detecting your order.

Related concepts

Practice in interviews

Further reading

  • Perold (1988), The Implementation Shortfall
  • Kissell, The Science of Algorithmic Trading and Portfolio Management
ShareTwitterLinkedIn