Liquidity Stress Index
Quick Reference
| Property | Value |
|---|---|
| Dimension | regime |
| Category | market_regime |
| Version | v0.9.0 (Beta) |
| Output Column | stress_index |
Liquidity stress index - aggregates spread, depth, and volume signals into a single systemic stress indicator
Formula
decay_accum((((spread_weight * spread) + (depth_weight * depth)) + (volume * vol_weight)), alpha, 0)
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
spread | cdm_* | CDM source table |
depth | cdm_* | CDM source table |
volume | cdm_* | CDM source table |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
alpha | float [0.0, 1.0] | 0.9 | Decay factor for stress state accumulation |
spread_weight | float [0.0, 1.0] | 0.4 | Weight for spread component in composite score |
depth_weight | float [0.0, 1.0] | 0.3 | Weight for depth component in composite score |
vol_weight | float [0.0, 1.0] | 0.3 | Weight for volume component in composite score |
Output
Column: stress_index
Composite liquidity stress score (higher = more stressed)
Market Intuition & Trading Rationale
Liquidity stress index aggregates three liquidity dimensions into a single systemic stress indicator: decay_accum(spread_w × spread + depth_w × depth + vol_w × volume, alpha). Spread captures the cost of immediacy (rising under stress). Depth captures available liquidity (falling under stress — note the positive sign means depth declines increase the index). Volume captures trading activity (often spiking under stress as participants rush to reposition). The configurable weights allow tuning the index for different market profiles.
The decay_accum state function creates a persistent stress gauge. Transient stress (a single wide-spread tick) barely moves the needle. Sustained stress (minutes of wide spreads, thin depth, elevated volume) drives the index steadily upward. This makes the index robust to microstructure noise while responsive to genuine stress events.
The index is designed to be the "master alarm" for execution systems. When it crosses a calibrated threshold, the market is experiencing systemic liquidity stress — not just one wide spread, but a coordinated deterioration across all liquidity dimensions. This is the signal to defer execution, reduce positions, or switch to passive-only mode.
Usage Cases
- Systemic stress detection: stress_index crossing the 90th percentile of its historical distribution → systemic liquidity event. Defer all non-urgent execution, tighten stops, reduce position sizes.
- Stress severity classification: < 0.3 = normal (standard execution). 0.3–0.7 = elevated (reduce size, prefer limits). > 0.7 = stressed (passive only or halt). > 0.9 = crisis (stop trading, reassess).
- regime context: Used in
liquidity_stresspack — the stress_index is the primary regime signal. The pack's signal features (depth_drop_rate, spread_spike) capture the components of stress; the index aggregates them into a single actionable score.
YAML Definition
name: liquidity_stress_index
description: Liquidity stress index - aggregates spread, depth, and volume signals
into a single systemic stress indicator
category: market_regime
version: v0.9.0 (Beta)
dimension: regime
status: Pre-release
required_inputs:
- spread
- depth
- volume
output_column: stress_index
output_description: Composite liquidity stress score (higher = more stressed)
parameters:
alpha:
type: float
description: Decay factor for stress state accumulation
required: false
default: 0.9
constraints:
min: 0.0
max: 1.0
spread_weight:
type: float
description: Weight for spread component in composite score
required: false
default: 0.4
constraints:
min: 0.0
max: 1.0
depth_weight:
type: float
description: Weight for depth component in composite score
required: false
default: 0.3
constraints:
min: 0.0
max: 1.0
vol_weight:
type: float
description: Weight for volume component in composite score
required: false
default: 0.3
constraints:
min: 0.0
max: 1.0
formula: decay_accum((((spread_weight * spread) + (depth_weight * depth)) + (volume
* vol_weight)), alpha, 0)