Iceberg Reserve-Depletion Nowcasting Slippage Playbook

2026-03-21 · finance

Iceberg Reserve-Depletion Nowcasting Slippage Playbook

Date: 2026-03-21
Category: research
Scope: Detecting hidden-liquidity exhaustion before the absorption cliff

Why this matters

Most hidden-liquidity models stop at: “iceberg present vs not present.”

In production, the expensive event is different:

This playbook focuses on one objective: estimate time-to-exhaustion hazard of hidden reserve at the active price level, and route/schedule before the cliff prints into your implementation shortfall.


Core concept

Treat displayed+hidden liquidity at a level as a finite reservoir with partial observability.

[ D_{eff,t}=D^{disp}_t + R_t - D^{fragile}_t ]

The control variable is not only expected fill, but:

[ \mathbb{P}(\text{exhaust in }\Delta t \mid \mathcal{F}_t) ]

When this hazard rises, your strategy should switch from “harvest hidden absorption” to “avoid being first fill after exhaustion.”


Observable signals (online, low-latency)

At the best level (or working level) maintain rolling features:

  1. Refill Event Count (REC)
    Number of same-price replenishment signatures in lookback window.

  2. Inter-Refill Time (IRT)
    Median/quantile of time gaps between refills; stretching IRT often precedes exhaustion.

  3. Peak-Size Consistency (PSC)
    Similar displayed refill clip size across events (iceberg-like behavior).

  4. Consumed-to-Displayed Ratio (CDR)
    (\text{aggr volume at level} / \text{avg displayed depth}). Persistent high CDR with falling refill intensity is cliff risk.

  5. Refill Decay Slope (RDS)
    Local trend of refill intensity (negative slope = reservoir thinning).

  6. Queue Survival Residual (QSR)
    Realized queue survival minus model-expected survival. Negative residual indicates hidden support weakening.

  7. Pressure Imbalance (PI)
    Recent signed market-order pressure + microprice tilt toward the level.


Latent reserve nowcasting model

Use a compact state-space formulation (fast enough for live use):

State: [ R_{t+1}=\max{0, R_t - C_t + U_t} ]

Observation model: [ \Pr(\text{refill event}_t=1)=\sigma(\alpha_0 + \alpha^\top x_t + \alpha_R R_t) ]

Exhaustion hazard: [ h_t=\Pr(R_t \le r_{crit} \mid \mathcal{F}_t)=\sigma(\beta_0+\beta^\top z_t) ]

where (z_t) includes REC, IRT, RDS, CDR, QSR, PI, and venue/session covariates.

Practical estimation choices


Slippage decomposition with cliff-risk term

Extend your shortfall model:

[ IS = Spread + TempImpact + Delay + Fees + \underbrace{CliffRisk}_{\text{new}} ]

Define: [ CliffRisk_t = h_t \cdot \Delta I_t ]

Estimate (\Delta I_t) empirically from episodes where refill pattern breaks and next child crosses through thinner book.

This term prevents over-sizing when hidden-liquidity support is near collapse.


Controller design (state machine)

State A — ABSORBING

Low hazard, strong refill persistence.

State B — SATURATING

Hazard rising but not critical.

State C — CLIFF-RISK

Hazard above critical threshold (e.g., calibrated p80).

State D — EXHAUSTED

Refill signature vanished + impact jump observed.

Use hysteresis and minimum dwell times to avoid oscillation.


Execution policy knobs tied to hazard

A minimal policy:

[ POV_t = POV_{base}\cdot(1-\gamma_h h_t) ] [ Clip_t = Clip_{base}\cdot(1-\gamma_c h_t) ] [ PassiveBias_t = PassiveBias_{base}-\gamma_p h_t ]

with hard limits:


Calibration workflow (weekly + intraday drift checks)

  1. Episode extraction
    • Detect candidate iceberg/refill episodes from level events.
  2. Label exhaustion events
    • Refill stop + adverse depth/impact discontinuity within horizon.
  3. Fit hazard model
    • Train by venue, session bucket, volatility regime.
  4. Calibrate probabilities
    • Reliability diagrams / Brier decomposition.
  5. Estimate conditional impact jump (\Delta I)
    • Stratify by symbol liquidity and urgency.
  6. Shadow deployment
    • Run controller in observe-only mode before capital exposure.

Monitoring KPIs

Track by symbol bucket and venue:

Success criterion: lower p90/p95 shortfall and cliff-loss without unacceptable underfill growth.


Minimal pseudocode

features = featurize(level_events, trades, microprice)
h = hazard_model.predict_proba(features)

if h < th_absorb:
    state = "ABSORBING"
elif h < th_cliff:
    state = "SATURATING"
elif refill_signature_alive(features):
    state = "CLIFF_RISK"
else:
    state = "EXHAUSTED"

params = policy_map[state]
submit_child_orders(params)
log_decision(features, h, state, params)

Anti-footgun guardrails


References (starting points)

(Use venue-specific legal/compliance constraints before production rollout.)


Bottom line

Detecting hidden liquidity is useful; detecting when it is about to disappear is where the slippage edge is.

Model reserve-depletion hazard, convert it into explicit control actions, and optimize for tail shortfall—not average fills.