Queue-Survival + State-Dependent Impact-Kernel Slippage Playbook
Date: 2026-03-01
Category: research (execution / slippage modeling)
Why this exists
Many production slippage stacks split into two disconnected worlds:
- Passive world: queue position, fill probability, cancel risk
- Aggressive world: impact curve, urgency, participation caps
That split causes fragile behavior exactly when it matters (open, close, news bursts, thin books). A passive model says “wait,” impact model says “take,” and the router oscillates.
This playbook proposes a single decision layer that combines:
- Queue survival modeling (short-horizon fill likelihood)
- State-dependent transient impact kernels (aggressive footprint + decay)
- Tail-aware control objective (q90/q95 budget, not only mean bps)
1) System blueprint
At each decision tick (e.g., 200ms~1s), evaluate candidate actions:
JOIN_BESTIMPROVE_1_TICKMID_OR_PEGTAKE_SMALLTAKE_LARGER
For each action, estimate:
- Expected slippage (mean)
- Tail slippage (q90/q95)
- Completion risk (deadline miss / residual inventory)
Then choose the minimum risk-adjusted cost under hard constraints.
2) Passive side: queue survival model
Treat a placed passive order as a survival process with horizon (H):
[ P(\text{fill by }H)=1-S(H), \quad S(H)=\exp\left(-\int_0^H h(u\mid x)du\right) ]
- (h(u\mid x)): fill hazard conditioned on microstructure state (x)
- Features should include:
- normalized queue position (ahead volume / level volume)
- same-side cancel intensity, opposite-side market order intensity
- spread bucket, imbalance, short RV, auction/VI flags
- local latency bucket (decision->exchange ACK)
Passive expected cost decomposition
[ C_{passive}=P_{fill}\cdot C_{markout}+\left(1-P_{fill}\right)\cdot C_{chase} ]
- (C_{markout}): adverse selection after passive fill (e.g., +1s/+5s markout)
- (C_{chase}): expected catch-up cost if not filled and forced later
This is key: passive is not “free.” Non-fill has real optionality cost.
3) Aggressive side: state-dependent impact kernel
For aggressive child order flow (q_t), model transient impact with regime-conditioned kernel:
[ I_t = \sum_{\tau \le t} G_{s_t}(t-\tau),q_\tau ]
- (G_{s}(\cdot)): impact-decay kernel for state (s)
- state (s) can be a compact regime label from:
- spread regime (tight/normal/wide)
- depth regime (thick/thin)
- flow regime (balanced/one-sided/toxic)
- session regime (open/continuous/close auction proximity)
Practical parameterization
Use a 2-component kernel for stability:
[ G_s(\Delta)=a_s e^{-\Delta/\tau_{fast,s}} + b_s e^{-\Delta/\tau_{slow,s}} ]
- fast term: immediate refill dynamics
- slow term: lingering metaorder footprint
Estimate per symbol bucket, then shrink toward sector/global priors for sparse names.
4) Joint action objective (single score)
For candidate action (a):
[ J(a)=\underbrace{\mathbb{E}[C\mid a]}{mean} + \lambda{tail}\underbrace{Q_{0.95}(C\mid a)}{tail} + \lambda{sla}\underbrace{R_{deadline}(a)}_{completion risk} ]
Subject to:
- max POV cap
- venue constraints / reject guardrails
- remaining-time SLA
- risk mode (GREEN/AMBER/RED/SAFE)
This makes passive-vs-aggressive a continuous tradeoff, not a hard rule switch.
5) Training pipeline
Step A: Label construction
Per child decision event, store:
- decision-time snapshot features (strict point-in-time)
- chosen action and planned size
- realized fill path (partials + timing)
- realized slippage vs benchmark (arrival / decision / schedule benchmark)
- forward markout windows (1s/5s/30s)
Step B: Fit queue survival
- baseline: piecewise-exponential hazard or Cox PH with time-varying covariates
- production-friendly alternative: discrete-time hazard classifier over short bins
Step C: Fit impact kernels by regime
- regress returns on signed flow lags with regularization
- enforce non-pathological constraints (nonnegative initial impact, monotone decay envelope)
- include self-impact + optional cross-impact term for basket flow
Step D: Tail model
- model residuals with Student-t or EVT-over-threshold for q95 overlay
- maintain per-regime scale multipliers for stress periods
6) Online adaptation
Use lightweight daily + intraday updates:
- Daily: full refit/recalibration by symbol bucket
- Intraday: update only scaling/offset terms
- hazard scale (\kappa_t)
- impact amplitude multiplier (\alpha_t)
- tail inflation factor (\psi_t)
Trigger AMBER mode if any of these drift too far from baseline:
- q90/q95 calibration error
- non-fill spike at constant queue percentile
- impact decay mismatch (observed vs predicted reversion)
7) Controller state ladder
- GREEN: full action set
- AMBER: reduce max slice size, increase passive preference unless SLA tight
- RED: disallow large takes, tighter caps, elevated tail penalty
- SAFE: minimal-risk completion protocol + explicit operator alert
Transition gates should be deterministic and auditable.
8) Validation protocol (what to prove before promotion)
Offline (walk-forward)
- mean slippage delta vs baseline
- q90/q95 and CVaR95 delta (must improve, not just average)
- completion rate within deadline
- turnover/churn of action choices (avoid twitchy policy)
Shadow live
- emit
proposed_action,J(a)components, confidence - compare against live realized outcomes without routing control
- inspect disagreement buckets (especially near open/close)
Canary
- 5% -> 15% -> 30% flow ramps
- hard rollback on any breach:
- tail budget breach
- reject burst / abnormal cancel-replace loop
- completion SLA drop beyond threshold
9) Minimal implementation spec (v1)
- Add event schema with queue percentile + markout labels
- Build survival model endpoint (
/fill-prob?h=...) - Build regime-conditioned impact endpoint (
/impact-forecast) - Add action scorer (
/execution-score) returning mean/q95/SLA components - Wire router to consume top-1 action + reason codes
- Log every decision tuple for replay and attribution
If scope is tight, start with one symbol cluster and one venue, then expand.
10) Failure modes and mitigations
- Model conflict under regime break
- Mitigation: raise tail inflation factor and restrict action set automatically
- Queue spoof / cancel storms degrade passive fill model
- Mitigation: include cancel-trade divergence signal; cap passive patience
- Latency shock invalidates horizon assumptions
- Mitigation: latency bucket feature + emergency conservative profile
- Overfitting small-cap sparse flow
- Mitigation: hierarchical shrinkage to sector/global priors
11) What this gives in practice
- Fewer oscillations between passive/aggressive tactics
- Better tail control at the same completion rate
- Cleaner attribution: “queue miss” vs “impact overshoot” vs “deadline pressure”
- A production path from heuristic router to quantitative controller
References
- Huang, Lehalle, Rosenbaum. Simulating and analyzing order book data: The queue-reactive model (arXiv:1312.0563).
https://arxiv.org/abs/1312.0563 - Taranto et al. Linear models for the impact of order flow on prices I. Propagators (arXiv:1602.02735).
https://arxiv.org/abs/1602.02735 - Bodor et al. Deep Learning Meets Queue-Reactive (arXiv:2501.08822).
https://arxiv.org/abs/2501.08822 - Almgren, Chriss. Optimal Execution of Portfolio Transactions (2000).