Tick-Size Regime & Queue-Granularity Slippage Modeling Playbook
Date: 2026-03-02
Category: finance / execution research
Why this matters
Most slippage models treat spread/depth as continuous variables. Real matching engines are discrete.
When tick size is large relative to price/volatility:
- quoted spread gets mechanically “stuck” at 1 tick,
- queue competition moves from price-improvement to time-priority races,
- fill quality depends more on queue position and cancel dynamics than on nominal spread.
So if your model ignores tick regime, you overestimate passive edge in large-tick names and underestimate queue-jump risk.
Core modeling idea
Add a tick-constrained microstructure layer on top of your baseline slippage model.
Let:
- (\tau_t): tick size at time (t)
- (m_t): mid price
- (r_t = \tau_t / m_t): relative tick
- (s_t^{(ticks)} = \text{quoted spread in ticks})
Define tick-constrainedness:
[ \kappa_t = \mathbb{1}(s_t^{(ticks)} \le 1) \cdot g(r_t, \sigma_t) ]
where (g) increases when relative tick is large and short-horizon volatility (\sigma_t) is low.
Interpretation:
- low (\kappa_t): price grid is fine enough (continuous-like)
- high (\kappa_t): one-tick regime dominates, queue priority dominates
Slippage decomposition with tick regime
Model expected shortfall for a child order as:
[ \mathbb{E}[IS_t] = C_{spread} + C_{impact} + C_{delay} + C_{adv} ]
Now make each term state-dependent on (\kappa_t):
Spread term (C_{spread})
For aggressive slices, crossing cost is bounded by discrete grid and fee/rebate details.Impact term (C_{impact})
In high-(\kappa) states, impact elasticity rises faster with queue depletion/cancel bursts.Delay term (C_{delay})
Passive waiting cost should use queue survival with time-priority loss risk.Adverse-selection term (C_{adv})
One-tick markets often compress quoted spread but can hide toxic fill asymmetry; markout penalties should be upweighted when queue churn spikes.
Practical parametric form:
[ IS_t = \beta_0 + \beta_1 x_t + \beta_2 \kappa_t + \beta_3 (x_t \cdot \kappa_t) + \epsilon_t ]
where (x_t) includes participation, imbalance, queue position proxy, and latency features.
Feature set (minimum viable)
Per symbol/venue bucket (100ms–1s):
- relative tick (r_t)
- spread-in-ticks distribution
- queue length at best bid/ask (shares + order count if available)
- cancel-to-trade ratio at touch
- queue-age / quote-age proxy
- short-horizon markouts (5s/30s/60s)
- passive fill hazard by queue decile
- microprice drift + imbalance drift
Derived signals:
- QGI (Queue Granularity Index): crowding intensity at each tick level
- TCR (Tick Constraint Ratio): fraction of time instrument is one-tick quoted
- QJR (Queue Jump Risk): probability that your time-priority rank degrades before fill
Regime state machine
Use a simple 4-state controller:
- FINE: low (\kappa), normal passive posting
- COARSE: rising (\kappa), reduce resting size
- QUEUE-STRESSED: high (\kappa) + high cancel bursts, shorten max-rest time
- SAFE: unstable queue + poor markout, route to defensive completion path
Example actions:
- cap passive slice when QJR exceeds threshold,
- prefer join-over-improve when one-tick and queue churn is high,
- enforce minimum queue-rank quality for passive posting,
- temporarily increase urgency when delay-cost slope exceeds impact slope.
Use hysteresis to avoid flapping.
Calibration plan
1) Offline panel fit
Fit symbol-day panel with interaction terms (features × (\kappa)).
2) Event-study around tick changes
When exchange/regulator changes tick bands, run before/after comparisons:
- spread, depth, cancel intensity,
- effective spread,
- markout distribution,
- fill hazard by queue rank.
3) Counterfactual replay
Compare baseline policy vs tick-aware policy under identical tapes:
- mean IS (bps)
- p95/p99 IS
- completion shortfall
- cancel-to-fill load
Production guardrails
- hard cap on cancel rate escalation
- fallback to baseline policy if queue-rank estimator degrades
- venue-level quarantine when markout tail exceeds budget
- explicit monitoring of model drift after exchange parameter changes
Alert pack:
- TCR drift, QJR drift, p95 markout breach, completion-risk breach.
Common failure modes
Mistaking narrow quoted spread for low cost
In large-tick names, quoted spread can be “cheap-looking” while queue toxicity is expensive.Ignoring queue rank uncertainty
Without rank uncertainty, passive fills are overestimated.No adaptation after tick-table updates
Regime transitions can break previously calibrated parameters quickly.Overreacting with excessive cancels
Queue defense can become self-inflicted toxicity if cancel policy is unconstrained.
Minimal implementation checklist
- Compute (r_t), TCR, QGI, QJR in real time
- Add (\kappa)-interaction terms to slippage model
- Integrate 4-state execution controller with hysteresis
- Build event-study template for tick-table changes
- Add drift dashboard + automatic fallback criteria
References
- Harris, L. (1994). Minimum Price Variations, Discrete Bid-Ask Spreads, and Quotation Sizes. Review of Financial Studies.
https://doi.org/10.1093/rfs/7.1.149 - Dayri, K., & Rosenbaum, M. (2013). Large tick assets: implicit spread and optimal tick size.
https://arxiv.org/abs/1207.6325 - ESMA (2020). Final report on proposed amendments to RTS 11 tick size regime.
https://www.esma.europa.eu/press-news/esma-news/esma-publishes-final-report-tick-size-regime - Commission Delegated Regulation (EU) 2017/588 (RTS 11).
https://www.legislation.gov.uk/eur/2017/588/contents - SEC DERA working papers on Tick Size Pilot market quality and revisit analysis.
https://www.sec.gov/files/dera_wp_tick_size-market_quality.pdf
https://www.sec.gov/files/dera_wp_ticksize-pilot-revisit.pdf - Japan Exchange Group (JPX) tick size table (domestic stocks).
https://www.jpx.co.jp/english/equities/trading/domestic/07.html
One-line takeaway
Tick size is not a cosmetic market-design parameter; it changes the slippage engine from a spread problem into a queue-priority problem, so execution models must be explicitly tick-regime aware.