Order-Book Refill Asymmetry and the One-Sided Healing Tax Slippage Playbook

2026-03-13 · finance

Order-Book Refill Asymmetry and the One-Sided Healing Tax Slippage Playbook

Date: 2026-03-13
Category: research
Audience: small quant execution teams running intraday parent orders across fragmented lit venues


Why this playbook exists

Many slippage models already account for:

But a recurring production miss is this:

after local depth is consumed, the book does not heal symmetrically.

For buy execution, ask-side depth may refill slowly while bid-side depth recovers quickly (or vice versa for sells). If your scheduler assumes symmetric recovery, it keeps firing as if liquidity regenerated normally and pays a hidden convex cost.

This document treats side-specific refill asymmetry as a first-class slippage state.


Core idea

For each venue v, estimate side-specific refill half-lives after depletion shocks:

For a buy parent order, define a one-sided healing ratio:

OHR_buy(v) = tau_ask(v) / (tau_bid(v) + eps)

For sells:

OHR_sell(v) = tau_bid(v) / (tau_ask(v) + eps)

When OHR >> 1, the execution side heals much slower than the opposite side. That regime amplifies impact and raises late-stage catch-up risk.


Failure mechanism

  1. Strategy executes in clipped child slices near touch.
  2. Each slice depletes execution-side depth.
  3. Opposite side refills quickly, execution side refills slowly.
  4. Model still prices next slice with symmetric or average resiliency.
  5. Realized marginal cost per next slice rises nonlinearly.
  6. Deadline pressure forces late aggression, creating a second slippage jump.

This is the One-Sided Healing Tax (OHT).


Cost decomposition

Total Slippage = Base + IIT + OHT + DCT

OHT is often misattributed to "random volatility" unless refill asymmetry is explicitly measured.


Key metrics

1) Side Refill Half-Life (SRH)

For side s in {bid, ask} after a depletion event:

SRH_s = min t { Depth_s(t) >= alpha * Depth_s(pre-shock) }

Use alpha like 0.7 or 0.8 and track by venue/time bucket.

2) One-Sided Healing Ratio (OHR)

OHR = SRH_exec_side / (SRH_opp_side + eps)

Primary asymmetry indicator.

3) Refill Failure Streak (RFS)

Count of consecutive child intervals where execution-side depth fails to recover above threshold before next child dispatch.

4) Marginal Slice Cost Slope (MSCS)

Slope of realized slippage vs cumulative child index during a parent order under fixed urgency bucket.

Rising MSCS with high OHR is a strong OHT signature.

5) Recovery-Adjusted Executable Depth (RAED2)

RAED2 = displayed_exec_depth * P(recover_before_next_slice)

Displayed depth discounted by near-term refill probability.

6) Catch-up Convexity Indicator (CCI)

CCI = late_window_slippage_per_share / early_window_slippage_per_share

High CCI means early under-healing forced expensive endgame behavior.


State machine

BALANCED_HEAL

FRAGILE_HEAL

ONE_SIDED_HEAL

NO_HEAL

SAFE


Control policy

In BALANCED_HEAL

In FRAGILE_HEAL

In ONE_SIDED_HEAL

In NO_HEAL

In SAFE


Decision objective (asymmetry-aware)

For action a:

J(a) = E[C(a)] + l1 * OHT_risk(a) + l2 * DeadlineRisk(a) + l3 * VenueConcentrationRisk(a)

where:

OHT_risk(a) = f(OHR, RFS, expected_next_slice_depletion, refill_uncertainty)

This makes action choice robust when visible depth overstates true near-term replenishment.


Data contract (minimum)

Per child-order decision:

Without refill trajectories, OHT cannot be separated from generic impact noise.


Calibration loop

Intraday

Daily

Weekly


Practical implementation pattern

  1. Depletion-event detector

    • define side shock when local depth drop exceeds threshold within short window.
  2. Event-study refill curves

    • maintain rolling side-specific refill curves by venue/time bucket.
  3. Asymmetry overlay in scheduler

    • convert OHR into a dynamic urgency penalty/discount.
  4. Venue-level OHR scoring

    • route marginal slices to lower-OHR venues when possible.
  5. Tail-budget governance

    • monitor OHT share of total slippage and enforce SAFE transitions.

Common failure modes

  1. Using only total depth

    • ignores which side is actually failing to refill.
  2. Average resiliency modeling

    • side asymmetry disappears in pooled estimates.
  3. No coupling to dispatch cadence

    • refill speed matters only relative to next-slice timing.
  4. Late aggression without OHT attribution

    • DCT rises but root cause (asymmetric healing) stays hidden.
  5. Venue aggregation blindness

    • consolidated metrics hide one venue repeatedly causing OHT spikes.

Dashboard minimum


Research anchors to revisit

Use these as priors; calibrate with your venue-specific refill telemetry.


Practical takeaway

When execution-side depth heals slower than the opposite side, repeated slices become progressively more expensive even if spread and displayed depth look “normal.”

Treating refill asymmetry as a live state variable is a direct path to lower tail slippage.


One-line implementation mantra

Do not trade displayed depth; trade recovery-adjusted depth on the side you actually consume.