TWAP and VWAP are both graded against a benchmark that is computed after the fact, from the market's own price path during the trading window, which sounds reasonable until you notice the trap: if the market happens to move in your favor during that window for reasons that have nothing to do with your algorithm, you look like a skilled trader; if it moves against you, you look unskilled, and neither has anything to do with whether your scheduling logic was any good. Worse, a trader with genuinely urgent, information-driven flow (they believe the price is about to move and want to trade before it does) can "beat VWAP" by trading patiently and slowly, exactly the wrong behavior for genuinely urgent flow, simply because VWAP rewards matching the market's rhythm, not rewards being right about direction. Implementation Shortfall (IS), introduced by André Perold in 1988, fixes this by anchoring everything to a single fixed point that cannot be moved after the fact: the decision price, the price at the exact moment the trade was decided, before any execution began. Every subsequent dollar of cost is measured as a deviation from that one anchor, split into four honestly separable pieces (code-pack Exercise 5, implementation_shortfall):
Advertisement
How is implementation shortfall calculated?
- Delay cost =
(arrival_price − decision_price) × total_qty, how much the market drifted between the decision and the moment the order actually reached the trading desk or market, before a single share had traded. This cost exists whether you trade well or badly afterward; it is pure the cost of time already spent before execution began. - Execution cost =
(exec_avg_price − arrival_price) × executed_qty, the actual cost of trading, relative to the price when trading began: spread, market impact, everything this module's algorithms exist to control. - Opportunity cost =
(cancel_price − decision_price) × (total_qty − executed_qty), if any part of the order never filled, the unfilled shares are marked to the price at the end of the horizon, relative to the original decision price. This is real money you never spent, and real money you also never made if the position would have been profitable, which is exactly why it belongs in the same ledger as cash costs, not treated as a free pass. - Fees: commissions and explicit costs, added directly, no decomposition needed.
Total shortfall is the sum of all four, and (this is the sanity check worth internalizing rather than merely memorizing) when an order fills completely (executed_qty == total_qty), the opportunity-cost term is exactly zero and the whole decomposition telescopes down to the simplest possible statement: total cost equals (execution price − decision price) × shares, plus fees. The decomposition only earns its keep when a fill is partial or delayed; the fully-filled case is the same honest arithmetic the whole time, just with fewer moving pieces. Expressed as basis points of the original decision notional (total_cost / (decision_price × total_qty) × 10000), Implementation Shortfall becomes the one benchmark every execution algorithm (TWAP, VWAP, or anything more exotic) can be honestly compared against, because it is the only one immune to picking a flattering yardstick after the trade is already done.
The cost taxonomy: explicit, implicit, and where each one lands in the shortfall
The four-way decomposition above is the accounting. The taxonomy below is the vocabulary every desk, broker and regulator uses to talk about it, and the two map onto each other exactly once you line them up.
Explicit costs are the ones that arrive on an invoice: commission, exchange and clearing fees, and the statutory levies of whichever jurisdiction you traded in. They are knowable before the order is sent, they are identical whether your execution was skilful or clumsy, and they are the smallest and least interesting part of a large institutional order's total cost. Implicit costs never appear on any invoice. They are the difference between the price you wanted and the price you got, and they are where the money actually goes.
| Cost | Kind | Knowable before the trade? | Shortfall bucket |
|---|---|---|---|
| Commission | Explicit | Yes | Fees |
| Exchange, clearing and statutory levies | Explicit | Yes | Fees |
| Bid-ask spread | Implicit | Partly, from the quoted spread | Execution cost |
| Market impact | Implicit | Only as an estimate | Execution cost |
| Drift between decision and arrival | Implicit | No | Delay cost |
| The part that never filled | Implicit | No | Opportunity cost |
Two consequences follow from reading the right-hand column. The first is that a broker competing on commission is competing on the one row a large order barely notices; a fund paying 2 basis points of commission and 40 basis points of impact has a 42 basis point problem and a commission negotiation will not touch it. The second is that the opportunity-cost row is the only one that grows when you trade less, which is why "we saved money by not executing the tail" is almost always false and why Perold's decomposition puts the unfilled shares in the same ledger as the cash.
How do explicit costs differ in India and the US?
Explicit costs also differ by jurisdiction in ways an execution model must carry rather than assume away. Indian equity trades attract securities transaction tax, stamp duty, exchange transaction charges and goods-and-services tax on the brokerage, with different rates for delivery and intraday; US trades attract a regulatory fee on sales and, on many venues, a maker-taker rebate that can make a passive fill cheaper than free. Every one of those rates is set by circular and changes, so a model that hardcodes them is wrong on a schedule. (Check the current rates against the exchange's own charge circular and the relevant tax notification before using any of them in a live cost model; the structure is stable, the numbers are not.)