Volume Shock
Quick Reference
| Property | Value |
|---|---|
| Dimension | signal |
| Category | volume |
| Version | v1.0 |
| Output Column | volume_shock |
Current volume divided by rolling average volume — values >1 indicate volume spike
Formula
trade_size / (rolling_mean(trade_size, window_bars) + 1e-10)
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
trade_size | cdm_trade_enriched | Trade data enriched with bar context — price, volume, side, trade type |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
window_bars | integer [10, 10000] | 100 | Number of bars for rolling average volume baseline |
Output
Column: volume_shock
Volume shock ratio (current / rolling average)
Market Intuition & Trading Rationale
Volume shock measures how unusual the current trading volume is compared to its recent average: trade_size / rolling_mean(trade_size, window_bars). A value of 1.0 means volume is exactly at its rolling average. Values above 1.0 indicate elevated volume — 3.0 means three times the normal volume. Values below 1.0 indicate suppressed volume — 0.3 means 70% below average.
This self-calibrating measure adapts to each instrument's unique volume profile. A 50,000-share bar is normal for a large-cap stock but a massive shock for a thinly traded small-cap. By comparing current volume to its own rolling mean, volume shock normalizes across the entire instrument universe. The 100-bar window provides a stable baseline that adapts to intraday volume patterns (high at open/close, lower midday) while remaining responsive to regime changes over 2–5 day horizons.
Volume shock is one of the most versatile features in the library because volume anomalies are universally significant. In academic finance, volume is a proxy for information arrival — abnormal volume signals that new information has reached the market and participants are actively repositioning. In practice, volume spikes precede or accompany every meaningful price move, making volume shock a powerful confirmation and early-warning tool.
The feature works best when combined with price-based signals. A breakout with volume_shock > 2.0 has genuine conviction — the move is backed by broad participation. A breakout with volume_shock < 1.0 is suspect and likely to reverse (a "buyers' strike" or liquidity vacuum). Similarly, a price decline on elevated volume is far more bearish than one on normal volume, as it indicates genuine distribution rather than random noise.
Usage Cases
- Breakout confirmation: Only take breakout signals when volume_shock > 1.5. The combination of price exceeding a resistance level and elevated volume provides high-conviction entries.
- Climax event detection: volume_shock > 5.0 indicates a climax — a panic sell-off or euphoric buying spike. These are often followed by sharp reversals as the imbalance exhausts itself.
- False breakout filter: A price breakout with volume_shock < 1.0 is likely a false breakout (thin liquidity makes it easy to push price through a level). Fade these breakouts or wait for volume confirmation.
- Volume regime classification: Classify each bar as low (< 0.5), normal (0.5–1.5), high (1.5–3.0), or extreme (> 3.0) volume shock. Different regimes warrant different strategy parameters.
YAML Definition
name: volume_shock
description: Current volume divided by rolling average volume — values >1 indicate
volume spike
category: volume
version: v0.9.0 (Beta)
dimension: signal
required_inputs:
- cdm_trade_enriched.trade_size
output_column: volume_shock
output_description: Volume shock ratio (current / rolling average)
tags:
- volume
- shock
- signal
- breakout
parameters:
window_bars:
type: integer
description: Number of bars for rolling average volume baseline
required: false
default: 100
constraints:
min: 10
max: 10000
formula: trade_size / (rolling_mean(trade_size, window_bars) + 1e-10)