Marketable-Limit Protection-Band Oscillation Slippage Playbook
Date: 2026-03-11
Category: research (quant execution / slippage modeling)
Why this matters
Many desks use marketable-limit orders with protection offsets to avoid catastrophic prints.
That guardrail is necessary, but under fast microstructure changes it can create a hidden loop:
- order is sent with a protection band,
- price touches band and rejects/underfills,
- strategy immediately widens/reprices,
- next attempt lands after microprice drift,
- repeated loops convert safety logic into convex slippage.
So the problem is not "limit vs market."
It is control-loop stability under moving reference prices.
Core concept: Protection-Band Oscillation Tax (PBOT)
Decompose realized cost impact from protection logic as:
[ \text{PBOT} = \text{BandRejectCost} + \text{RepriceDelayDrift} + \text{RetryQueueResetTax} - \text{TailLossAvoided} ]
Execution objective:
[ \min_a; \mathbb{E}[C|a] + \lambda,\mathrm{CVaR}_{95}(C|a) + \eta,\mathrm{DeadlineMiss}(a) ]
where action (a) controls:
- protection offset width,
- reprice step size,
- retry cooldown,
- passive/aggressive branch mix,
- completion fallback thresholds.
Key insight: minimizing mean cost without loop-stability constraints often increases q95/q99 slippage.
Detection signals (oscillation observability)
Construct a Band Oscillation Score (BOS) from the following:
Band-Touch Reject Rate (BTR)
Fraction of attempts that reach protection boundary and fail to complete.Reprice Loop Frequency (RLF)
Number of cancel-reprice cycles per parent-minute or per 1% ADV child schedule bucket.Anchor Staleness Gap (ASG)
Time delta between anchor quote snapshot and actual exchange interaction.Miss-to-Chase Slope (MCS)
Marginal cost increase from each additional retry cycle.Protection Utilization Ratio (PUR)
Distance consumed inside protection band before fill; persistent high PUR implies chronic under-sizing.Partial-Fill Fragmentation Index (PFI)
Parent completion fragmentation caused by repeated micro underfills.
State mapping example:
- NORMAL: low BTR, low RLF, stable ASG
- TIGHT: moderate rejects, rising PUR, still controllable
- OSCILLATING: high RLF + positive MCS, retries driving cost acceleration
- SAFE: tail or deadline budget breach; switch to completion-preserving policy
Use hysteresis and minimum dwell time to avoid rapid state flapping.
Modeling stack
Layer 1 — Child-attempt branch model
For each child attempt, model:
- full fill / partial fill / reject probabilities,
- expected delay to next actionable attempt,
- conditional post-fill markout,
- queue reset penalty after cancel-reprice.
Targets:
- mean + q90/q95 attempt cost,
- expected residual after attempt,
- probability of entering oscillation state after attempt.
Layer 2 — Parent-episode dynamics
Aggregate attempts into parent-order dynamics:
- completion-time distribution,
- cumulative oscillation tax,
- tail-cost concentration by state,
- deadline breach probability under policy choice.
This prevents "attempt looked fine" bias when episode-level convexity is the true risk.
Control policy design
State-aware protection width
In NORMAL/TIGHT, keep narrow offsets for price discipline.
In OSCILLATING, widen using bounded schedule to reduce reject loops.Fresh-anchor gating
Recompute protection anchor when ASG exceeds threshold; block reuse of stale reference prices.Monotone retry policy
Enforce bounded monotone aggression (no ping-pong narrowing/widening) to reduce control oscillation.Retry cooldown floor
Add minimum inter-attempt delay when RLF spikes; avoid self-induced queue churn.Partial-preservation branch
If PFI rises, prioritize completing larger residual chunks over micro-optimization of each child.Tail-budget circuit breaker
If projected q95 burn exceeds budget, shift to SAFE profile with completion-first constraints.
Data contract (minimum)
Per attempt:
- decision/send/gateway/ack/reject/fill timestamps,
- decision-time and interaction-time top-of-book + depth snapshot,
- protection offset parameters and anchor timestamp,
- cancel reason and reprice step metadata,
- attempt index + linkage to parent chain,
- markout ladder (e.g., 100ms/500ms/1s/5s),
- residual size, urgency bucket, deadline metadata.
Without precise attempt linkage and anchor freshness tracking, PBOT attribution collapses.
Calibration & monitoring loop
Weekly
- Refit branch probabilities by liquidity regime and session segment.
- Re-estimate BOS thresholds and transition matrix.
- Validate q95 calibration by state and urgency tier.
Daily
Monitor:
- PBOT decomposition (reject vs delay drift vs queue-reset tax),
- state occupancy and persistence,
- retry-count distribution per parent,
- completion ratio at fixed deadline budgets.
Intraday guards
- BOS above threshold for N windows -> escalate to OSCILLATING controls.
- MCS slope > threshold -> cap retry count + widen/cross fallback.
- q95 forecast breach + completion stress -> SAFE fallback.
Rollout plan
- Shadow mode (1–2 weeks): compute BOS/PBOT and simulate policy switches.
- Canary notional (5–10%): enable fresh-anchor gating + retry cooldown.
- Scale-up: activate state-aware protection width and monotone retry policy.
- Guarded expansion: monitor deadline hit-rate and tail-cost drift before full rollout.
Rollback triggers:
- completion hit-rate deterioration,
- BOS instability (frequent unsafe flapping),
- q95 cost expansion beyond tolerance.
Common failure modes
- Treating protection-band rejects as harmless "safe misses" instead of delayed-cost transfer.
- Repricing from stale anchors and compounding drift.
- Optimizing average fill price while ignoring episode-level retry convexity.
- Allowing bi-directional parameter swings (tighten/widen/tighten) that create controller oscillation.
Bottom line
Protection bands are essential, but they are also a feedback controller.
When markets move quickly, unstable retry/reprice loops can dominate slippage.
Model band reject dynamics + retry convexity explicitly, detect oscillation early, and switch to stable state-aware policies before tail costs compound.