Execution Capacity Frontier for Slippage-Budgeted Trading

2026-02-25 · finance

Execution Capacity Frontier for Slippage-Budgeted Trading

Date: 2026-02-25
Category: research (quant execution)

TL;DR

Most desks still ask, “How much can we trade?” with a single backtest number.
That is fragile.

A production answer should be a capacity frontier:

Then execute only inside the feasible region under current market regime.


1) Problem: Capacity is not one number

Strategy capacity changes with:

So “capacity = X KRW/day” should be replaced by:

[ \mathcal{F}_t = {q: \text{net edge, tail cost, and fill constraints are all satisfied at time } t} ]

where (q) is tradable notional (or participation) over a horizon.


2) Minimal mathematical frame

For parent order size (Q), define:

[ \text{NetEdge}(Q) = \mathbb{E}[\alpha(Q)] - \mathbb{E}[C(Q)] - \text{fees}(Q) ]

with operational constraints:

  1. Edge floor: [ \text{NetEdge}(Q) \ge \epsilon ]

  2. Tail-cost budget: [ \text{Quantile}{0.95}(C(Q)) \le B{95} ]

  3. Completion reliability: [ \Pr(\text{Fill}(Q) \ge \eta Q) \ge p_0 ]

The live capacity is the largest (Q) satisfying all three.


3) Cost model structure (practical)

Use a modular cost decomposition:

[ C = C_{\text{spread}} + C_{\text{temp-impact}} + C_{\text{perm/information}} + C_{\text{delay}} + C_{\text{opportunity}} ]

Suggested parameterization

This keeps model explainability while remaining execution-controllable.


4) From scalar capacity to frontier curves

Instead of one estimate, compute 3 live curves per symbol/bucket:

  1. Expected net edge curve: (Q \mapsto \mathbb{E}[\text{NetEdge}(Q)])
  2. Tail-cost curve: (Q \mapsto q95(C(Q)))
  3. Completion curve: (Q \mapsto \Pr(\text{fill target at }Q))

Intersection of acceptable regions gives the feasible frontier.

Why this helps


5) Regime-conditioning (mandatory)

Estimate frontier per regime, not globally.

Example state vector:

Then:

[ \mathcal{F}_t = \mathcal{F}(\text{regime}_t) ]

A strategy can be capacity-safe in Calm and unsafe in Toxic without any code change.


6) Online capacity controller

Map live signals to a 4-state controller with hysteresis:

  1. Green (Inside frontier): normal schedule
  2. Yellow (Near boundary): reduce POV, increase passive selectivity
  3. Orange (Tail pressure): strict clip caps, slower cadence, venue pruning
  4. Red (Outside frontier): freeze expansions; execute only risk-reduction residuals

Key control variable:

[ \rho_t = \frac{q95(C_t)}{B_{95}} ]


7) Calibration workflow (weekly + intraday)

Weekly (research loop)

Intraday (production loop)


8) What to store in the data contract

Per child order and per parent timeline snapshot:

Without this, frontier estimation becomes narrative instead of measurement.


9) KPIs that actually validate capacity

Track by symbol bucket and regime:

Success is not lower average bps alone; success is stable tail behavior with acceptable completion and retained edge.


10) Common failure modes


11) Vellab rollout blueprint (10 trading days)

  1. Days 1–3 (shadow): compute frontier + state + (\rho_t), no behavior change
  2. Days 4–6 (soft control): only cap incremental participation near boundary
  3. Days 7–8 (full control): apply state-based schedule and aggression mapping
  4. Days 9–10 (review): promote only if p95 improves without underfill blowout

Guardrail: If completion drops beyond pre-set bound, auto-fallback to safer baseline schedule.


References (starting points)

Capacity should be operated as a live feasible set, not a static slide number.