Skip to main content
Education
Contents
8 min read

Volatility compression and expansion

Treat quiet conditions as a state to investigate, not a directional forecast.

Compression means movement has become unusually quiet

Volatility compression is a state in which recent price movement is small relative to a chosen reference. Expansion is a later increase in movement.

The word relative matters. A daily range of 1% may be quiet for one market and extreme for another. It may also be ordinary at midday and unusual near the open. A compression signal must therefore state both what it measures and what history defines normal.

Compression does not predict direction. It can precede an upward break, a downward break, or more quiet trading. A directional strategy usually uses compression as an eligibility condition and a separate price event to choose direction.

This differs from a breakout signal. Compression describes the environment before a potential move; the breakout defines the event that leaves a range. Keeping them separate lets a researcher test whether the quiet-state filter adds value beyond the breakout alone.

Why volatility changes in clusters

Large changes tend to be followed by other large changes, and quiet observations often cluster as well. Information arrival, changing participation, leverage, liquidity, and feedback from risk controls can all contribute to this behavior. Conditional-volatility models formalize this changing variance; they do not imply that a quiet state predicts the direction of the next move.

A quiet period can reflect balanced trading, uncertainty before an event, or positions accumulating without moving the visible price much. A later shock or imbalance can produce expansion. But the same quiet period can persist far longer than expected. “Coiling energy” is a metaphor, not a mechanism that forces release.

The research question is conditional: does a predeclared quiet state change the distribution of a later, separately defined trade?

Different measures describe different kinds of quiet

MeasureWhat it summarizesImportant limitation
Average true rangeRecent high-low and gap-aware movementPrice-scale dependent unless normalized
Realized volatilityDispersion of returns over a windowDepends on sampling and can lag sudden change
Band widthDistance between volatility or dispersion bandsInherits the center and scale model
Range percentileCurrent range relative to historical rangesReference window and seasonality define “low”
Intraday same-time baselineMovement relative to the same clock intervalNeeds enough comparable sessions

A global intraday threshold can label the lunch period “compressed” every day simply because activity is normally lower then. A same-time-of-day reference asks the stronger question: is this interval unusually quiet for this interval?

From state to strategy

An illustrative daily rule might be:

  1. Calculate 10-day realized volatility after each completed daily bar.
  2. Compare it with the distribution of 10-day volatility over the prior 252 completed sessions.
  3. Mark the market compressed when the current value is below the 20th percentile.
  4. While compressed, freeze the previous 10-day high and low as directional boundaries.
  5. Enter at the next eligible event after a completed close beyond either boundary.
  6. Exit on a return inside the range, an opposite break, or a declared timeout.

If compression occurs but no boundary breaks, there is no trade. If the market gaps beyond the boundary, the fill must reflect the first modeled opportunity, not the skipped line.

The percentile, lookbacks, and release event are all separate parameters. Changing them together makes it impossible to learn which component mattered.

Illustrative compressed price path followed by possible upward and downward expansion paths, emphasizing that compression supplies no direction.

Design a comparison that isolates the gate

Run the directional breakout without compression first. Then add exactly the same breakout, size, execution, and cost model with the compression gate. Report:

  • total and eligible opportunity counts;
  • how long compression states persist;
  • delay and price distance between compression and release;
  • frequency of immediate false releases;
  • gross and net return distributions;
  • behavior by direction and time of day; and
  • sensitivity to neighboring percentiles and lookbacks.

The gate can improve average trade results simply by removing many trades. That is not enough: ask whether the remaining sample is large enough, whether capital sits idle, and whether the improvement survives later periods.

For volatility-scaled positions, freeze or update the risk estimate according to a declared rule. Expansion after entry can shrink the next position, but it cannot retroactively change the exposure already held.

Interpreting the result

A coherent compression measure should identify quieter paths, not merely profitable ones. Check its state against realized ranges before examining strategy P&L.

If the gate is useful, results should not depend on one isolated percentile. The effect should also survive a signal lag and reasonable transaction costs. Expansion magnitude alone is not profit: direction, entry price, exit, and slippage determine whether the move was captured.

Important failure modes

  • Quiet conditions persist and tie up attention without producing a trade.
  • A scheduled announcement causes a gap that skips the modeled entry.
  • Intraday seasonality is mistaken for unusual compression.
  • A backward-looking volatility estimate remains low just as the state changes.
  • The chosen percentile is fitted to a few famous releases.
  • Adding a directional filter, volume filter, and confirmation simultaneously hides which component contributed.

Try it in Arizmic

Strategy composition

Build the premise with shipped signals

Define compression with a measurable range or band-width state, then require a separate directional event when expansion begins. Compression is a setup condition, not a forecast of which way price will break.

These are starting structures, not presets or evidence of an edge. Choose one, replace the bracketed decisions, and keep the signal roles separate as you test it.

Composition 01

Bollinger bandwidth compression with range and volume release

Relative-compression recipe
  • Bollinger BandsCompression measure
  • Range Z-ScoreExpansion event
  • Relative VolumeParticipation confirmation

Data: OHLCV Bars

View configuration and complete rule

Bollinger Bands

Compression measure

Bollinger Bandwidth reports how narrow the rolling standard-deviation envelope has become relative to price.

Configure

window · [band window]
Define the local mean and dispersion history.
std_multiplier · [band multiplier]
Set the envelope width while keeping it fixed across compression comparisons.

Use the output

bandwidth
Mark compression when bandwidth is below [declared threshold or percentile rule].

Range Z-Score

Expansion event

Range Z-Score identifies a completed bar whose range is unusually large relative to its recent history.

Configure

window · [range history]
Define the baseline used to label an expansion bar.

Use the output

range_zscore
Require range z-score above [expansion threshold] on the release bar.

Relative Volume

Participation confirmation

Relative Volume checks whether range expansion is accompanied by unusual activity.

Configure

window · [volume history]
Define ordinary volume for the selected interval.

Use the output

relative_volume
Require at least [participation threshold] or retain it as a comparison label.

Assemble the rule

Entry
After a declared compression state, enter in the completed expansion bar’s direction only when range and participation thresholds pass.
Exit
Exit on [opposite band state, failure back inside the compression range, volatility stop, or timeout].
Decision time
Compression is known before the release; expansion direction is known only after the release bar completes.
Sizing
Use [fixed or separately declared volatility-risk sizing] and cap gap-through exposure.

Useful variations

  • Define compression by an absolute bandwidth threshold versus a rolling percentile.
  • Require both range and volume release versus range release alone.
  • Compare immediate release entry with a retest of the former compression boundary.

Keep in view

Band width and bar range are both volatility transforms of price. Their agreement can still be useful as a state transition, but it is not independent confirmation.

Composition 02

Keltner squeeze with regime transition and extreme break

Envelope-transition recipe
  • Keltner ChannelVolatility envelope
  • Volatility RegimeState transition
  • Rolling Extreme BreakoutDirectional release

Data: OHLCV Bars

View configuration and complete rule

Keltner Channel

Volatility envelope

The Keltner Channel combines an EMA center with ATR-based boundaries, offering a range scale different from standard-deviation bands.

Configure

ema_window · [center window]
Set the smoothing horizon for the channel center.
atr_window · [ATR window]
Set the range-estimation horizon.
multiplier · [ATR multiplier]
Define channel width.

Use the output

upper
Use the prior available upper channel as a long release boundary.
lower
Use the prior available lower channel as a short release boundary.
atr
Retain current channel risk scale for sizing or protection.

Volatility Regime

State transition

Volatility Regime can require a move from a low state into normal or high variability before the boundary break qualifies.

Configure

high_z_threshold · [high threshold]
Define unusually high variability.
low_z_threshold · [low threshold]
Define compression state.

Use the output

volatility_regime
Require [low-to-normal or low-to-high] transition according to the declared recipe.

Rolling Extreme Breakout

Directional release

Rolling Extreme Breakout provides the directional event that volatility state alone cannot supply.

Configure

window · [breakout window]
Define the prior extreme used for release direction.

Use the output

breakout_high
Trigger the long release candidate.
breakout_low
Trigger the short release candidate.

Assemble the rule

Entry
Enter only when a prior low-volatility state transitions and a fresh directional breakout is known on the completed bar.
Exit
Exit on failed re-entry through the channel, opposite breakout, [ATR rule], or timeout.
Decision time
Do not infer release direction during the compression state; act after the breakout bar completes.
Sizing
Use the reported ATR under [risk budget] and [gap/exposure cap].

Useful variations

  • Compare low-to-normal with low-to-high regime transitions.
  • Use Keltner boundary break versus rolling extreme break as the trigger.
  • Partition failures by gap, high-volatility overshoot, and immediate channel re-entry.

Keep in view

Volatility-regime labels can change after a large release bar, so the transition may be recognized only after much of the move has occurred. Measure decision delay and gap risk.

Ask the AI Companion

Draft this strategy

Strategy draft

Turn a quiet-to-active market idea into a simple draft without implying that quiet conditions predict direction.

I want to create a volatility-compression strategy for [instrument] that finds unusually quiet periods and seeks to profit when price activity expands. Recommend how compression should be measured for this instrument, the timeframe and historical baseline I should start with, and what separate event should determine the trade direction. Then build the strategy for me and explain how it distinguishes a meaningful release from ordinary noise or a gap that is already too late to enter.

Extend it in Marimo

Study review

Begin from a retained Study so compression episodes, release events, and threshold neighborhoods remain traceable.

Measure the full sequence from compression through release, continuation, false break, and timeout.

Bring in
engine-reported band, range, volume, regime, breakout, decision, fill, and cost values, declared compression and release thresholds, retained candidates and strategy outcomes
Build
compression-to-release state timeline, event-aligned paths from the executable release decision, continuation, failure, delay, and turnover table by release definition

Interpretation: A useful release rule should not depend on one unusually quiet threshold or score success from the start of compression. Judge it from the first executable directional decision.

Value origin: Signal outputs, decisions, fills, and retained results are engine-reported. Episode boundaries, matched release labels, and custom continuation summaries are notebook-derived.

With Companion: Ask Companion to draft reviewed episode-analysis cells, inspect state-transition timing, then explicitly apply the diff.

Further reading