Queue-Position-Aware Fill + Slippage Coupled Model Playbook
Date: 2026-02-24 (KST)
TL;DR
Most slippage models treat cost and fill probability as separate problems. In live execution they are tightly coupled:
- if you chase fills aggressively, impact cost rises
- if you protect price too much, fill risk rises and later urgency explodes cost
This playbook proposes a coupled model that jointly tracks:
- Queue position / queue survival (will my passive slice fill?)
- Conditional slippage under fallback actions (cross/step-up/repost)
- Policy switch thresholds from remaining slippage budget and time-to-close
Goal: reduce p95 implementation shortfall while preserving completion SLA.
1) Why the Coupled View Matters
Common failure pattern in production:
- passive posting model says “good quote, high edge”
- queue gets depleted/repriced/canceled against us
- late-stage catch-up switches to aggressive taking
- final shortfall > model forecast due to urgency convexity
Root cause: the model predicted fill and slippage on disconnected assumptions.
2) Problem Setup
For each child decision at time (t):
- action (a_t \in {\text{post},\text{join},\text{step-up},\text{take}})
- horizon (\Delta) (e.g., 1s, 5s, 15s)
- target metrics:
- fill probability (P(F_{t,\Delta}=1 \mid x_t, a_t))
- conditional slippage quantiles (Q_q(S_{t,\Delta} \mid x_t, a_t, F))
State (x_t) should include:
- queue position estimate (shares ahead, level aging)
- cancel/add/trade intensities near touch
- spread state, microprice drift, imbalance/OFI
- latency + reject bursts (infra confounders)
- parent-order urgency (remaining qty, time, budget headroom)
3) Core Modeling Architecture
3.1 Queue Survival / Hazard Layer
Model queue departure hazard for our resting order:
[ \lambda_t = f_{haz}(x_t) ]
Then approximate fill survival:
[ P(F_{t,\Delta}=1) \approx 1-\exp\left(-\int_t^{t+\Delta} \lambda_u,du\right) ]
Practical note:
- start with piecewise-constant hazard by spread/depth bucket
- upgrade to gradient-boosted survival or discrete-time logistic hazard
3.2 Action-Conditional Slippage Layer
For each action, fit quantile models:
[ \hat S_q(x_t,a_t)=g_{a_t,q}(x_t) ]
- passive actions: include non-fill penalty via continuation value
- aggressive actions: include impact convexity vs participation and local depth
3.3 Continuation Value (Fill ↔ Future Cost Bridge)
Define expected future catch-up cost if not filled now:
[ C_{cont}(t)=E\left[S_{future}\mid \neg F_{t,\Delta},;u_{t+\Delta}\right] ]
Decision score:
[ J(a_t)=E[S_{t,\Delta}\mid a_t]+(1-P(F_{t,\Delta}\mid a_t))\cdot C_{cont}(t) ]
Pick action minimizing (J(a_t)) under completion constraints.
4) Live Control Logic (Desk-Friendly)
Use a 3-zone controller with hysteresis:
- Harvest: high fill odds + healthy budget -> favor passive/posting
- Balance: mixed signals -> blend join/step-up with capped aggression
- Salvage: low fill odds + tight deadline -> controlled taking with clip ladder
Trigger variables:
- remaining slippage budget headroom
- expected completion gap at horizon
- queue-fragility index (QFI)
Example headroom:
[ Headroom_t=B-(IS_{realized,t}+\hat IS^{remaining}_{95,t}) ]
If headroom < 0 and completion gap rising, escalate one zone.
5) Features That Actually Move the Needle
Minimal high-signal set:
- shares ahead at best level (and its change rate)
- cancel-to-add ratio near touch
- trade-through frequency (short window)
- microprice minus mid (signed)
- short-horizon OFI z-score
- spread regime + depth regime
- local infra quality (ack latency, reject spikes)
Avoid feature bloat before timestamp hygiene is proven.
6) Validation Protocol
Do not validate on average bps only.
Required scorecard slices
- liquid / mid / thin symbols
- open / midday / close / event windows
- buy vs sell asymmetry
- queue-depth deciles
Required metrics
- calibration of fill probability (Brier + reliability curves)
- pinball loss for q50/q90/q95 slippage
- completion SLA hit rate
- tail exceedance magnitude (actual - q95 forecast)
Promotion rule: tail improvement must not be bought by unacceptable completion failure.
7) Rollout Plan (Practical)
- D1–D3 Shadow: compute (P(F)), (\hat S_q), (J(a)), no routing impact
- D4–D6 Assist: show recommendations, trader/engine keeps veto
- D7–D10 Guarded Auto: apply for low-risk bucket with hard kill-switches
Hard stops:
- q95 exceedance blowout > threshold for 2 sessions
- completion SLA breach above desk tolerance
- detected infra incidents contaminating market signals
8) Common Failure Modes
- queue position estimate drifts due to hidden/iceberg interactions
- fill model ignores cancel cascades (false optimism)
- non-fill continuation cost underestimated in late schedule
- no separation of infra latency events vs true toxicity
- controller flips too fast (missing dwell-time hysteresis)
9) Implementation Checklist
- strict decision-time feature contract
- queue hazard model with live calibration monitor
- action-conditional slippage quantile models
- continuation-value estimator for non-fill penalty
- 3-zone controller with hysteresis + kill-switches
- slice dashboard: fill calibration / q95 coverage / SLA
- post-trade attribution: model vs infra vs venue conditions
References
- Almgren, R., & Chriss, N. (2000). Optimal Execution of Portfolio Transactions.
- Huang, W., Lehalle, C.-A., & Rosenbaum, M. (2015). Simulating and analyzing order book data: The queue-reactive model. JASA. DOI: 10.1080/01621459.2014.982278
- Taranto, D. E., Bormetti, G., Bouchaud, J.-P., Lillo, F., & Toth, B. (2016). Linear models for the impact of order flow on prices I: Propagators. arXiv:1602.02735
- Stoikov, S. (2017). The Micro-Price: A High Frequency Estimator of Future Prices. SSRN 2970694
- Gatheral, J. (2010). No-Dynamic-Arbitrage and Market Impact. Quantitative Finance.
Closing Note
Execution quality is not a single “slippage prediction” number.
It is a sequential control problem where queue survival and impact are entangled. Model them together, and the desk stops paying urgency tax that was invisible in disconnected models.