Maker–Taker Net Slippage and Queue-Aware Routing Playbook

2026-03-02 · finance

Maker–Taker Net Slippage and Queue-Aware Routing Playbook

Date: 2026-03-02
Category: research (quant execution / slippage modeling)

Why this playbook exists

Many execution stacks still optimize venue routing with a shallow rule:

In production, this underperforms because fees/rebates are second-order unless combined with queue risk and adverse selection. A venue with attractive rebate can still be expensive if:

This playbook defines a practical all-in slippage model for maker/taker routing and shows how to turn it into controllable production decisions.


1) All-in net slippage objective (per child order)

Use expected cost in bps versus arrival mid:

[ \mathbb{E}[C] = C_{fee/rebate} - C_{spread\ capture} + C_{impact} + C_{adverse} + C_{nonfill} + C_{latency} ]

Where:

This extends the practical “all-in cost” framing often used in TCA (fees/rebates + spread capture + markout/impact) to include explicit queue and timing penalties.


2) Venue-mode expected cost decomposition

For venue (v) and mode (m \in {passive, midpoint, taker}):

[ \mathbb{E}[C_{v,m}] = f_{v,m} - r_{v,m} - s_{v,m},p^{fill}{v,m} + a{v,m},p^{fill}{v,m} + n{v,m}(1-p^{fill}{v,m}) + \ell{v,m} ]

Interpretation:

A key diagnostic metric:

[ \text{Rebate Illusion Gap}_{v} = r_v - a_v ]

If this is negative, “high rebate venue” is economically worse than it looks.


3) Queue-aware fill probability model

For passive posting, estimate fill chance before decision horizon (\Delta):

[ p^{fill}{v}(\Delta) = 1 - \exp\left(-\int_0^{\Delta} \lambda^{take}{v}(t)\cdot g(Q^{ahead}_{v}(t), c_v(t), \mu_v(t)),dt\right) ]

Features:

Practical implementation:

  1. Discretize in 100–500ms buckets,
  2. Fit hazard/logit for fill event by horizon (0.5s / 2s / 5s),
  3. Keep symbol-time-of-day specific calibration,
  4. Add regime tags (calm/news/open/close).

4) Adverse selection (toxicity) model

Model short-horizon markout after fill:

[ \text{Markout}_{\tau} = \alpha + \beta_1,\text{OFI} + \beta_2,\text{queue_imbalance} + \beta_3,\text{trade_sign_burst} + \beta_4,\text{quote_age} + \epsilon ]

Use multi-horizon targets (1s/5s/30s).
For routing, maintain a conservative aggregate:

[ a_v = w_1,\widehat{M}{1s} + w_2,\widehat{M}{5s} + w_3,\widehat{M}_{30s} ]

This captures “toxic fills” that often dominate nominal rebate gains.


5) Routing optimizer (online decision)

At each cycle, allocate child slices (x_{v,m}):

[ \min_{x} \sum_{v,m} x_{v,m},\mathbb{E}[C_{v,m}] + \lambda,\text{CVaR}_{95}(C) + \eta,\text{CompletionRisk} ]

subject to:

Control intuition:


6) Production data contract (minimum)

Per child-order decision, log:

Without this schema, rebate-vs-toxicity attribution will be guesswork.


7) Validation protocol

Offline replay

Compare policies:

  1. fee-only router,
  2. fee+spread router,
  3. full queue-aware all-in router (target).

Required out-of-sample wins:

Online rollout


8) Failure modes and fixes

  1. Overfitting to rebate-heavy periods
    Fix: regime-stratified validation + stress windows.

  2. Queue estimate drift after venue microstructure changes
    Fix: drift detector on fill-prob residuals; trigger rapid recalibration.

  3. Markout leakage from delayed market data
    Fix: clock sync audit + latency-adjusted feature timestamps.

  4. Completion failures from overly passive policy
    Fix: hard urgency floor and dynamic taker fallback ladder.


9) 30-day implementation slice

Week 1

Week 2

Week 3

Week 4


References


TL;DR

Routing by fee/rebate tables alone is a trap.
Model net slippage as a queue-aware all-in objective (fees, spread capture, toxicity, non-fill, latency), then optimize venue/mode allocation under completion risk constraints.

When done right, the desk stops “earning rebates and losing money.”