Microprice Divergence Exhaustion Slippage Playbook

2026-03-10 · finance

Microprice Divergence Exhaustion Slippage Playbook

Date: 2026-03-10
Category: research
Scope: Intraday execution for liquid equities/futures where microprice pressure often overshoots before reverting.


Why this matters

Many execution engines treat one-sided microprice pressure as a simple “avoid passive, cross now” signal. In production, that often overpays:

This note turns that intuition into a measurable slippage control loop.


Core hypothesis

Slippage is not only a function of spread/size/volatility. It is strongly conditioned by where we are in the pressure lifecycle:

  1. Pressure Build: toxicity accelerating (don’t wait too long).
  2. Exhaustion Window: toxicity still high but incremental damage decelerating.
  3. Reversion/Refill: crossing urgency can be reduced; passive/improve regain edge.

Goal: avoid paying the “last expensive ticks” of panic-taking while preserving completion reliability.


Signal stack

Use event-time features (e.g., 100–500ms bars for fast symbols, 1–3s for slower symbols).

1) Normalized Microprice Divergence (NMD)

[ \text{NMD}_t = \frac{\text{MicroPrice}_t - \text{Mid}_t}{\max(\epsilon, \text{Spread}_t)} ]

Interpretation:

2) Pressure Acceleration (PA)

[ \text{PA}_t = \Delta \text{NMD}_t ]

Positive and rising PA means pressure is still building (high chase risk if you wait).

3) Toxicity Deceleration Ratio (TDR)

Track short-horizon markout slope vs prior slope:

[ \text{TDR}t = \frac{|\nabla \text{Markout}{0\to2s}|}{|\nabla \text{Markout}_{-2s\to0}| + \epsilon} ]

4) Refill Elasticity Index (REI)

After top-level depth depletion, estimate refill speed:

[ \text{REI}t = \frac{\text{RefilledDepth}{\tau}}{\text{SweptDepth}_{\tau} + \epsilon} ]

Higher REI suggests impact recovery is improving.

5) Sweep Burst Intensity (SBI)

Short-window count/size of aggressive market sweeps. Helps distinguish structural move vs transient burst.


Regime state machine

State A — BALANCED

State B — PRESSURE_BUILD

State C — EXHAUSTION_WINDOW

State D — TOXIC_CHASE

State E — SAFE_FALLBACK

Use hysteresis to prevent flapping (entry threshold > exit threshold).


Branch-cost model

For each child-order decision (a \in {\text{join}, \text{improve}, \text{take}, \text{pause}}):

[ \mathbb{E}[C|a,s] = \underbrace{\mathbb{E}[\text{fill slippage}|a,s]}{\text{direct}} + \underbrace{\lambda_1,\mathbb{E}[\text{no-fill regret}|a,s]}{\text{completion}} + \underbrace{\lambda_2,\text{TailRisk}{q95}(a,s)}{\text{survival}} ]

where state (s) is from the regime machine above.

Key practical point: in EXHAUSTION_WINDOW, tail risk of immediate crossing often drops slower than expected benefit. This is where many naive urgency policies overtrade.


Control policy (practical)

  1. PRESSURE_BUILD

    • Increase participation cap gradually.
    • Allow controlled taking.
    • Keep hard per-minute tail budget.
  2. EXHAUSTION_WINDOW

    • Freeze further aggression escalation for a short TTL (e.g., 5–20s symbol-dependent).
    • Shift to improve/join mix.
    • Re-evaluate every short epoch; if PA re-accelerates, exit immediately.
  3. TOXIC_CHASE

    • Clip size down.
    • Enforce cooldown between aggressive clips.
    • If budget burn-rate breaches threshold, escalate to SAFE_FALLBACK.

KPI pack

Track by symbol, session bucket, and regime:

Promotion criteria (example):


Data/engineering checklist


Failure modes

  1. Latency mirage: stale L2 creates fake exhaustion signal.
  2. Regime leakage: thresholds tuned on calm periods only.
  3. No hysteresis: rapid state flapping increases churn.
  4. Objective drift: optimizing mean bps while p95 worsens.
  5. Symbol overgeneralization: one threshold set across very different tick/queue regimes.

2-week rollout plan

Week 1

Week 2

Rollback if:


Bottom line

Microprice pressure is not binary. The last phase of pressure often behaves differently from the first. A state-aware exhaustion controller can reduce “panic-cross at local toxicity peak” behavior while keeping deadline risk bounded.

In short: model pressure lifecycle, not just pressure level.