Spread Regime Indicator
Quick Reference
| Property | Value |
|---|---|
| Dimension | regime |
| Category | market_regime |
| Version | v1.0 |
| Output Column | spread_regime |
Spread regime: z-score of current spread vs rolling distribution — wide/tight spread state
Formula
(spread - rolling_mean(spread, window)) / rolling_std(spread, window)
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
spread | cdm_* | CDM source table |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
window | integer | 300000 | Window for spread distribution estimation |
Output
Column: spread_regime
Z-score of current spread relative to rolling distribution
Market Intuition & Trading Rationale
Spread regime indicator z-scores the current spread against its own distribution: (spread - μ) / σ. A z-score near 0 means spread is at its typical level. A z-score > 2 means spread is unusually wide (liquidity stress). A z-score < -1 means spread is unusually tight (cheap execution window). Self-calibrating — works across all instruments without per-symbol tuning.
Usage Cases
- Execution gating: z > 2 → defer aggressive orders (spreads are abnormally wide). z < -1 → accelerate execution (spreads are abnormally tight — cheap to trade).
- Liquidity stress early warning: Rising z-score signals deteriorating liquidity before depth evaporates or vol spikes. Pair with
liquidity_stress_indexfor confirmation. - Mean reversion entry: Extreme spread spikes (z > 3) mean-revert as liquidity providers return. Enter after the peak when z-score starts declining toward zero.
YAML Definition
name: spread_regime_indicator
description: 'Spread regime: z-score of current spread vs rolling distribution — wide/tight
spread state'
category: market_regime
dimension: regime
version: v0.9.0 (Beta)
required_inputs:
- spread
output_column: spread_regime
output_description: Z-score of current spread relative to rolling distribution
tags:
- regime
- spread
- liquidity
parameters:
window:
type: integer
description: Window for spread distribution estimation
required: false
default: 300000
formula: (spread - rolling_mean(spread, window)) / rolling_std(spread, window)