Dark-Pool Midpoint Toxicity & Markout Slippage Playbook

2026-03-05 · finance

Dark-Pool Midpoint Toxicity & Markout Slippage Playbook

Date: 2026-03-05
Category: research
Domain: finance / execution / market microstructure / dark liquidity

Why this matters

Midpoint dark execution is often treated as “free spread improvement.”

That is incomplete.

A midpoint fill can still be expensive when:

So the right question is not “did I get midpoint?” but:

“Did midpoint save more than post-trade markout cost?”


Core cost decomposition

For a buy child order (sell is symmetric), define effective dark cost in bps:

[ C_{dark} = C_{arrival\to fill} + C_{markout} + C_{opportunity} - S_{midpoint} ]

Where:

Dark routing is only beneficial when expected savings exceed toxicity + waiting costs.


1) Markout ladder as primary toxicity lens

Track signed markout at multiple horizons:

[ M_{\tau} = side \cdot \frac{P_{\tau}-P_{fill}}{P_{fill}} \times 10^4 ]

Interpretation:

Use both median and tail (p10/p5) markouts; means alone hide toxic bursts.


2) Midpoint Toxicity Score (MTS)

Build a compact routing feature:

[ MTS = a_1\tilde{M}{100ms} + a_2\tilde{M}{1s} + a_3\tilde{M}{5s} + a_4\tilde{Q}{stale} + a_5\tilde{J}_{micro} ]

Suggested normalized components:

Calibrate by:

Do not pool all names into one global MTS model.


3) Dark-vs-lit expected cost switch

At each decision point, compare:

[ \mathbb{E}[C|dark] = p_f\cdot C_{dark,fill} + (1-p_f)\cdot C_{dark,miss} ]

[ \mathbb{E}[C|lit] = C_{lit,now} ]

Route dark only when:

[ \mathbb{E}[C|dark] + \delta < \mathbb{E}[C|lit] ]

This avoids the common anti-pattern: “always try dark first” regardless of toxicity regime.


4) Execution state machine

STATE A — DARK_FAVORABLE

Trigger: MTS low toxicity + stable fill probability.

STATE B — DARK_GUARDED

Trigger: mild toxicity deterioration or weaker fill odds.

STATE C — DARK_TOXIC

Trigger: sustained negative near-touch markouts / stale quote indicators.

STATE D — DISLOCATED

Trigger: severe quote-staleness bursts, jumpy microstructure, unstable fill quality.

Use hysteresis to prevent state flapping.


5) Data contract (minimum viable)

If clock sync is weak, toxicity attribution is mostly noise.


6) Validation protocol

Offline

Shadow

Canary


7) Frequent failure modes

  1. Midpoint fill-rate worship
    High fill rate can coexist with poor markouts.

  2. Single-horizon toxicity metric
    100ms may look fine while 1s/5s are strongly adverse.

  3. Ignoring quote staleness
    Midpoint quality depends on reference freshness.

  4. No opportunity-cost accounting
    Dark misses are not free when alpha decays.

  5. No regime segmentation
    One threshold for all symbols/sessions fails in production.


8) Minimal implementation checklist


References to review

Midpoint is a price level, not a quality guarantee. In dark routing, markout-aware regime control is the difference between hidden alpha and hidden tax.