Execution Quality 101: Your Signal Is Only as Good as Your Fill
A good model can predict a move. A good trader turns that prediction into P&L. The bridge between the two is execution—how your orders hit the market. If you ignore it, your edge dies the slow death of costs.
This post explains the essentials of execution quality—slippage, benchmarks, venue health, and why monitoring and routing matter—and shows how LiquidityAI reduces “death by costs” with real-time telemetry, alerts, and enforceable policies.
The cost stack: where edge disappears
Every order pays a toll. The total “implementation shortfall” is the difference between the price you intended and the price you actually got.
Components to track:
- Spread: Half-spread for marketable orders is the baseline toll.
- Market impact: Prices move as you trade; larger and faster participation increases impact.
- Fees & rebates: Exchange/broker fees; sometimes maker rebates reduce net cost.
- Borrow/funding: For shorts or leverage.
- Opportunity cost: Partial fills or missed fills when liquidity isn’t there.
Quick math: every 5 bps (0.0005) per $1,000,000 traded is $500. At $20M monthly turnover, “just” 5 bps is $10,000/month.
Benchmarks: arrival price vs VWAP (and friends)
You can’t improve what you don’t measure. Pick a benchmark that fits your alpha half-life and liquidity.
Arrival Price (a.k.a. Decision/Arrival/Arrival-Mid)
What it is: Measure slippage vs the mid-price when you decided to trade.
Use when: Alpha decays quickly; you care about minimizing implementation shortfall (IS).
Trade-off: Faster schedule → lower decay, higher impact.
VWAP (Volume-Weighted Average Price)
What it is: Compare to market’s average traded price (weighted by volume) during your execution window.
Use when: You want to look “like the market,” minimize signaling/toxicity, alpha half-life is longer.
Trade-off: You may lag a quickly moving fair value.
TWAP / POV / IS Schedules
TWAP: Even slices in time (simple, predictable).
POV: Participate at a fixed share of market volume (adaptive to liquidity).
IS: Minimize IS explicitly with dynamic slicing (more complex; best for short half-life).
Rule of thumb:
- Short half-life alpha → benchmark to Arrival/IS, accept more aggression.
- Slow alpha / size-sensitive → benchmark to VWAP/POV, reduce signaling.
Venue health: not all liquidity is equal
Execution isn’t just “what” and “when”—it’s where.
Venue health metrics to watch:
- Latency distribution: p50/p95 round-trip times; spikes imply risk of adverse selection.
- Quoted spread & depth: Narrow spreads with real size reduce cost.
- Fill probability & partials: Are your limits getting meaningful fills?
- Reject/cancel rates: High rejects waste time and leak information.
- Toxicity cues: Frequent adverse selection after your fills? Reroute or slow down.
Routing should be dynamic: when a venue’s health degrades, participation there should drop automatically.
Monitoring: dashboards that change behavior (not just pretty charts)
Real-time monitoring must inform real-time decisions:
- Slippage vs benchmark: Arrival, VWAP, and IS—by symbol, venue, and time bucket.
- Cost decomposition: Spread vs impact vs fees/borrow.
- Participation & queue position: Are you too aggressive or sitting too far back?
- Alpha decay vs schedule: Are slower schedules eroding signal before you fill?
- Breach attempts: Times your policy would have been violated without guardrails.
Routing: turn monitoring into action
A smart router should:
- Throttle participation when spreads widen or impact spikes.
- Prefer healthier venues (lower latency, better depth, fewer rejects).
- Reprice limits when queue position is poor or the mid drifts.
- Change schedule (TWAP → IS, or widen slices) when alpha half-life demands it.
How LiquidityAI helps you beat costs
1) Telemetry that matters
- Live slippage vs Arrival/VWAP/IS by strategy, symbol, and venue.
- Cost attribution (spread, impact, fees/borrow) with time-of-day profiles.
- Venue health: latency percentiles, reject rates, realized spread.
2) Alerts with teeth
- Cost spike alerts (e.g., +15 bps vs baseline) trigger automatic participation throttles.
- Latency/health alerts reroute away from degraded venues.
- Partial-fill/miss alerts prompt schedule adjustments or escalation.
3) Policies as code (enforced pre-trade and at-trade)
- Max participation rate per instrument/venue.
- Impact budget per order and per session.
- Benchmark guardrails: if realized slippage > X bps vs Arrival, reduce aggression automatically.
4) Staged rollout
- Read-only live to validate costs with your real feeds.
- Soft blocks (warnings) before hard blocks (enforced) once thresholds are tuned.
A simple playbook for most strategies
- Measure alpha half-life. If it’s minutes, prefer Arrival/IS; if hours/days, VWAP/POV is safer.
- Pick a default schedule plus fallback (e.g., IS → VWAP if cost spikes).
- Set participation caps by liquidity (ADV) and time of day.
- Encode cost guardrails (spread + impact) and auto-throttles.
- Monitor venue health and maintain a priority list.
- Review weekly: Which symbols/venues drove cost? Update caps and routes.
Example: cost guard policy (pseudo-config)
execution:
benchmark: arrival_price
schedule: implementation_shortfall
max_participation_pct_adv: 12
min_slice_ms: 300
price_aggression_bps: 2 # limit offsets vs mid
guards:
max_realized_slippage_bps: 25
cost_spike_action:
- when: realized_slippage_bps > 25
then: reduce_participation: 0.5 # halve aggression
- when: latency_p95_ms > 350
then: reroute_away_from: ["VENUE_X"]
partial_fill_timeout_ms: 1500
repricing_tick_move: 1
alerts:
channels: ["slack", "email"]
thresholds:
cost_spike_bps: 15
reject_rate_pct: 2
latency_p95_ms: 300
Case study (composite)
- Setup: Equity mean-reversion with 30–90 min half-life.
- Benchmark: Arrival price with IS schedule.
- Guardrails: 12% ADV cap, 25 bps slippage guard, reroute on p95 latency > 300 ms.
- Live observation: Two midday cost spikes on Venue X (rejects + widened spread).
- Action (automatic): Participation cut to 50%, routing bias to Venues A/B, slice spacing widened.
- Result: Slippage reduced from ~22 bps to ~12 bps; weekly cost savings ≈ 10 bps. (10 bps = 0.001; 0.001 × 15,000,000 = 15,000)
Common pitfalls (and fixes)
- Chasing fills with market orders in thin books → Set a cap on price aggression and use midpoint/pegged where liquid.
- One-size-fits-all schedules → Maintain symbol buckets by liquidity/volatility and load per-bucket defaults.
- Ignoring partials/misses → Add a timeout + repricing rule; track opportunity cost explicitly.
- Static venue lists → Re-rank by live health; don’t be loyal to a sick venue.
Takeaways
- Your signal’s value arrives only through execution.
- Choose a benchmark that matches your alpha half-life and liquidity.
- Monitor slippage, cost decomposition, and venue health in real time.
- Turn monitoring into policy and routing actions—automatically.
- Use LiquidityAI to make these behaviors the default, not an afterthought.
LiquidityAI provides tools and education for systematic trading. This article is for informational purposes only and is not investment advice. Trading involves risk, including the possible loss of principal.