Execution TCA KPI Stack (Arrival → IS → Markout)
Date: 2026-02-26 (KST)
TL;DR
Most desks over-focus on one benchmark (usually VWAP) and miss the full execution picture.
For live execution ops, use a layered KPI stack:
- Decision/arrival cost (did we start badly?)
- Execution cost (did our slicing/routing pay too much?)
- Post-trade markout (did we get adversely selected?)
- Stability/operations (did infra incidents create hidden slippage?)
If you track these separately, you can fix the right subsystem instead of “tuning everything.”
1) Why one benchmark is never enough
A single number cannot answer all of these at once:
- Was the order late vs signal? (timing problem)
- Was child-order placement poor? (microstructure problem)
- Did fills predictably move against us after fill? (adverse-selection problem)
- Did retries/reconnect/throttle incidents cause degraded execution? (ops problem)
Implementation Shortfall (IS) remains a core institutional benchmark, but operationally you need additional decomposition to make IS actionable.
2) KPI hierarchy (what each metric is for)
2.1 Decision-to-arrival metrics
- Decision delay (ms/s): order decision timestamp → first eligible send timestamp
- Arrival drift (bps): side-adjusted move from decision reference to arrival mid
Use when diagnosing: signal pipeline latency, risk gate bottlenecks, manual intervention lag.
2.2 Arrival-to-fill metrics
- Arrival slippage (bps): side-adjusted fill vs arrival benchmark
- VWAP gap (bps): fill vs interval VWAP during your participation window
- Participation rate (%): executed qty / market volume during execution window
- Fill efficiency (%): executed qty / intended qty within allowed horizon
Use when diagnosing: slicing schedule, urgency policy, queueing/routing quality.
2.3 Post-fill quality metrics
- Markout curve at multiple horizons (e.g., 1s, 5s, 30s, 5m)
- Realized spread / adverse selection decomposition (if quote data available)
Use when diagnosing: toxic flow exposure, poor quote placement, wrong aggressiveness.
2.4 Operational reliability overlays
- Throttle-hit rate
- Reject/retry rate
- WS reconnect bursts
- Clock-sync drift (ms)
Use when diagnosing: non-market causes of “mystery slippage.”
3) Canonical formulas (side-adjusted)
Define side sign:
- Buy:
s = +1 - Sell:
s = -1
Let P_ref be benchmark price and P_exec be execution price.
General side-adjusted bps cost:
cost_bps = s * (P_exec - P_ref) / P_ref * 10,000
Positive means worse execution cost for both buys and sells.
3.1 Order-level Arrival Slippage
arrival_slippage_bps = s * (P_vwap_exec - P_arrival_mid) / P_arrival_mid * 10,000
Where P_vwap_exec is your order’s fill-weighted average price.
3.2 Implementation Shortfall (practical order form)
For intended quantity Q*, executed quantity Qe, decision reference P_decision, end-of-horizon mark P_end:
IS_value = s * [
(Qe * (P_exec_vwap - P_decision))
+ ((Q* - Qe) * (P_end - P_decision))
] + explicit_costs
Normalize to bps by dividing by Q* * P_decision and multiplying by 10,000.
This keeps partial-fill and opportunity cost visible instead of hidden.
3.3 Markout (fill-to-mid)
At horizon h:
markout_bps(h) = s * (Mid(t_fill + h) - P_fill) / P_fill * 10,000
Interpretation:
- Positive markout for buys = price moved up after buy fill (good)
- Negative markout for buys = adverse selection / over-aggressive fill (bad)
4) Recommended horizon set (starter)
Use fixed horizons and do not change frequently, or trend comparability breaks.
- Micro: 1s, 5s
- Short: 30s, 60s
- Tactical: 5m
- Session: close markout (optional)
For KRX-like sessioned markets, include auction/post-close specific markouts separately.
5) KPI-to-action playbook
| Symptom | Likely cause | First action |
|---|---|---|
| IS deteriorates, markout stable | timing/arrival delay | tighten decision→send pipeline, reduce pre-send blockers |
| IS stable, markout worsens | adverse selection | reduce aggression, improve queue placement, toxicity filters |
| VWAP gap worsens with high participation | schedule too urgent | lower POV cap, extend horizon where alpha decay allows |
| Slippage spikes with reconnect bursts | infra instability | enforce reconnect budget + breaker + failover policy |
| Fill efficiency drops while costs improve | over-conservative execution | rebalance urgency bands, review residual handling |
6) Dashboard layout (ops-first)
Panel A — Cost overview
- IS bps (daily/rolling)
- Arrival slippage bps
- VWAP gap bps
- Explicit fees bps
Panel B — Post-trade quality
- Markout curves by horizon
- Markout by symbol bucket / venue / time-of-day
Panel C — Execution process
- Fill efficiency
- Participation distribution
- Child order cancel/replace intensity
Panel D — Reliability context
- Reject/retry/throttle counters
- WS reconnect events
- Clock drift and stale quote incidents
Rule: every cost panel needs an operational context panel beside it.
7) Minimum data contract
interface ExecutionFillEvent {
orderId: string
parentOrderId: string
symbol: string
side: 'BUY' | 'SELL'
qty: number
fillPrice: number
fillTs: string
arrivalMid: number
decisionRef: number
venue?: string
explicitFee?: number
}
interface MarketSnapshot {
symbol: string
ts: string
bid: number
ask: number
mid: number
vwapSession?: number
tradedVolumeWindow?: number
}
Without reliable timestamp alignment, all TCA results become noisy. Clock discipline is part of TCA quality.
8) Weekly review cadence (lean)
- Monday: prior week IS + arrival decomposition
- Wednesday: markout curve drift by strategy and symbol cluster
- Friday: choose one parameter change only (urgency band, POV cap, or venue preference), then monitor for one week
Avoid multi-parameter changes in the same week; attribution becomes impossible.
9) Common anti-patterns
- Treating VWAP outperformance as universal success
- Ignoring unfilled residual opportunity cost
- Looking only at average markout (not distribution tail)
- Mixing benchmark definitions mid-quarter
- Running TCA without incident overlays (network, auth, throttle)
10) References
- Perold, A. F. (1988), The Implementation Shortfall: Paper vs. Reality.
- Databento Microstructure Guide — Markout overview: https://databento.com/microstructure/markout
- Wikipedia summary (quick refresher) — Implementation shortfall: https://en.wikipedia.org/wiki/Implementation_shortfall
- Busseti, Boyd, et al. — VWAP execution framing: https://web.stanford.edu/~boyd/papers/pdf/vwap_opt_exec.pdf
One-line takeaway
Don’t ask “did we beat VWAP?” first — ask where cost entered the pipeline (decision, execution, or post-fill), then fix that specific layer.