Execution TCA KPI Stack (Arrival → IS → Markout)

2026-02-26 · finance

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:

  1. Decision/arrival cost (did we start badly?)
  2. Execution cost (did our slicing/routing pay too much?)
  3. Post-trade markout (did we get adversely selected?)
  4. 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:

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

Use when diagnosing: signal pipeline latency, risk gate bottlenecks, manual intervention lag.

2.2 Arrival-to-fill metrics

Use when diagnosing: slicing schedule, urgency policy, queueing/routing quality.

2.3 Post-fill quality metrics

Use when diagnosing: toxic flow exposure, poor quote placement, wrong aggressiveness.

2.4 Operational reliability overlays

Use when diagnosing: non-market causes of “mystery slippage.”


3) Canonical formulas (side-adjusted)

Define side sign:

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:


4) Recommended horizon set (starter)

Use fixed horizons and do not change frequently, or trend comparability breaks.

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

Panel B — Post-trade quality

Panel C — Execution process

Panel D — Reliability context

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)

  1. Monday: prior week IS + arrival decomposition
  2. Wednesday: markout curve drift by strategy and symbol cluster
  3. 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


10) References


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.