# Volatility Contraction Pattern

Volatility Contraction Pattern is an indicator on [Vela](https://vela.luxalgo.com/chart), our next-generation charting platform, written in Pine Script®.

Volatility Contraction Pattern detects Mark Minervini's tightening base: two to four successively shallower pullbacks (depth ratio 0.75), a qualified uptrend, and volume drying into the final coil. It draws the zigzag with depth labels, the pivot line, the stop under the last contraction, and marks breakouts on 1.5x volume expansion. For swing traders who trade bases, not predictions.

- Indicator in the LuxAlgo Library, by LuxAlgo, published Mar 2, 2026.
- Access: free.
- Concepts: [Volatility Contraction Pattern](https://www.luxalgo.com/library/concept/volatility-contraction-pattern/) (primary)
- Open on Vela: https://vela.luxalgo.com/chart?pineScriptCodeId=shunl6sm0runxnu2je7c1q1c
- Page: https://www.luxalgo.com/library/indicator/volatility-contraction-pattern/

**Volatility Contraction Pattern** scans for Mark Minervini's tightening base: successive pullbacks, each meaningfully shallower than the last, volume drying up into the final coil, all inside a qualified uptrend. When a base qualifies, the build draws the [Volatility Contraction Pattern](https://www.luxalgo.com/library/concept/volatility-contraction-pattern/) as a zigzag with T1, T2… depth labels, sets the pivot at the top of the final tight area, the stop under its low, and marks the breakout on expanding volume.

## How to Trade the Volatility Contraction Pattern?

- **VCP Active**: the sequence is tightening within the depth ratio and the filters pass; the dashboard tracks the full checklist.
- **Pivot breakout**: a close through the pivot on clear volume expansion completes the pattern; one that slumps straight back inside the base negates the setup.
- **Stop discipline**: risk is defined under the final contraction low; if that stop sits too far away, the coil has not tightened enough yet.

## Volatility Contraction Pattern Settings

- **Swing Length** (default 5): scale of the swings each pullback is measured from.
- **Contractions** (defaults 2 to 4): fewest and most pullbacks kept; most bases carry two to four.
- **Max Depth Ratio** (default 0.75): each pullback may be at most this fraction of the prior depth. Lower values demand textbook bases.
- **Qualify the Uptrend** (default enabled): Minervini's prerequisite, judged by **Trend SMA Length** (default 200), **Yearly Range Lookback** (default 252), **Max % Below Range High** (default 25), and **Min % Above Range Low** (default 30).
- **Require the Volume Signature** (default enabled): a quiet final contraction and expansion on the break, against **Volume Average Length** (default 50) and **Breakout Volume Multiplier** (default 1.5).
- **Show Dashboard** (default enabled), plus style toggles **Contraction Depth Labels** and **Show Stop Level** (both default enabled).

## Frequently Asked Questions

### Why did the pattern suddenly invalidate?

Either the newest pullback widened beyond the depth ratio, a filter stopped passing, or price undercut the final contraction low. The skeleton stays on the chart, faded and dotted, so failed bases remain studyable.

### How does the VCP differ from the TTM Squeeze?

Both trade compression resolving into expansion, but the [TTM Squeeze build](https://www.luxalgo.com/library/indicator/ttm-squeeze/) measures it statistically from band geometry on any chart, while the VCP is structural: counted swings, drying volume, an uptrend prerequisite.

### Can I run it on symbols without much history?

Yes. Disable Qualify the Uptrend, whose range tests need about a year of bars, and the build scans the contraction structure alone. The volume filter bypasses itself on symbols reporting no volume.

## Related indicators

- [NR4 & NR7 with Breakouts](https://www.luxalgo.com/library/indicator/nr4-nr7-with-breakouts/) (NR4/NR7 Narrow-range Bars): markdown at https://www.luxalgo.com/library/indicator/nr4-nr7-with-breakouts.md
- [Master Pattern](https://www.luxalgo.com/library/indicator/master-pattern/) (Range Expansion/contraction): markdown at https://www.luxalgo.com/library/indicator/master-pattern.md
- [Waddah Attar Explosion](https://www.luxalgo.com/library/indicator/waddah-attar-explosion/) (Volatility): markdown at https://www.luxalgo.com/library/indicator/waddah-attar-explosion.md
- [Squeeze Index](https://www.luxalgo.com/library/indicator/squeeze-index/) (Range Expansion/contraction): markdown at https://www.luxalgo.com/library/indicator/squeeze-index.md
- [Choppiness Index](https://www.luxalgo.com/library/indicator/choppiness-index/) (Volatility): markdown at https://www.luxalgo.com/library/indicator/choppiness-index.md
- [Damiani Volatmeter](https://www.luxalgo.com/library/indicator/damiani-volatmeter/) (Volatility): markdown at https://www.luxalgo.com/library/indicator/damiani-volatmeter.md
- [Volatility Switch](https://www.luxalgo.com/library/indicator/volatility-switch/) (Volatility): markdown at https://www.luxalgo.com/library/indicator/volatility-switch.md
- [Gap-volatility Relation](https://www.luxalgo.com/library/indicator/gap-volatility-relation/) (Volatility): markdown at https://www.luxalgo.com/library/indicator/gap-volatility-relation.md

---

Source: https://www.luxalgo.com/library/indicator/volatility-contraction-pattern/ (LuxAlgo Library). Free to use with attribution: https://www.luxalgo.com/library/license/
