Distributionally Robust Slippage Modeling with Wasserstein Ambiguity Playbook

2026-02-28 · finance

Distributionally Robust Slippage Modeling with Wasserstein Ambiguity Playbook

Why this matters

Most production slippage models implicitly assume that the future data distribution will look like the recent past. That assumption fails exactly when it hurts most: stress liquidity, volatility jumps, queue evaporations, and venue-specific microstructure breaks.

A distributionally robust approach asks a safer question:

This gives cleaner tail protection and more stable execution controls under regime drift.


1) Problem setup

Target per decision slice:

Context vector x includes:

Decision variable:

Goal:


2) From ERM to DRO

Standard empirical-risk minimization (ERM):

[ \min_a ; \mathbb{E}_{\hat P}[\ell(a, x, y)] ]

Distributionally robust optimization (DRO):

[ \min_a ; \sup_{Q \in \mathcal{U}(\hat P)} \mathbb{E}_{Q}[\ell(a, x, y)] ]

Where:

Interpretation: choose execution action that is good not only on average history, but against nearby adverse shifts.


3) Ambiguity set design (Wasserstein ball)

A practical choice:

[ \mathcal{U}(\hat P) = {Q : W_c(Q, \hat P) \le \rho} ]

Practical guidance:

  1. Normalize features before distance computation (z-score or robust scaling)
  2. Use anisotropic transport cost so critical dimensions (participation, spread, vol) get larger penalties
  3. Tune \rho by out-of-sample tail calibration (coverage + p95 regret)

Larger \rho = safer but more conservative execution.


4) Loss function for execution control

Use a composite loss:

[ \ell = y(a) + \lambda \cdot \text{CVaR}_{\alpha}(y(a)) + \eta \cdot \text{MissPenalty}(a) ]

This avoids a common failure: over-defensive throttling that protects slippage but misses completion deadlines.


5) Conditional DRO (context-aware)

Global ambiguity is too blunt. In production, make it context-aware:

This preserves local realism while retaining robustness in data-thin segments.


6) Online adaptation loop

At each control interval:

  1. Observe context x_t
  2. Generate candidate actions a ∈ A
  3. For each action, compute robust score:
    • robust_cost(a) = sup_{Q∈U_t} E_Q[ℓ(a,x_t,y)]
  4. Pick action with minimum robust score under hard constraints
  5. Execute, observe outcomes, append to rolling buffer
  6. Update \hat P_t, drift stats, and \rho_t

Robustness radius policy:


7) Controller states (operational)

Map robust metrics to a state machine:

Hysteresis is mandatory to avoid mode flapping.


8) Evaluation framework

Predictive + robust quality

Economic outcomes

Safety outcomes


9) Failure modes and mitigations

  1. Over-conservatism (alpha bleed via underfill)

    • add explicit miss-penalty term
    • cap maximum defensiveness by residual-time urgency
  2. Under-robustness (radius too small)

    • tie \rho to drift diagnostics and coverage breakdowns
    • keep stress-window holdout in weekly calibration
  3. Distance mis-specification

    • feature scaling audits and transport-weight sanity checks
    • sensitivity tests per dimension
  4. Sparse-context instability

    • hierarchical fallback pools
    • minimum-support thresholds before local \rho overrides

10) Implementation blueprint (Vellab-friendly)

Phase 1 (1 week)

Phase 2 (1–2 weeks)

Phase 3 (ongoing)


11) Practical defaults


Bottom line

DRO slippage control with Wasserstein ambiguity is a practical upgrade when you care about tail survivability under distribution shift, not just average backtest bps.

Treat robustness as a dial (\rho) linked to live drift evidence, and pair it with completion-aware penalties so the policy stays both defensive and executable.