Chart patternBullish

Volatility Contraction Pattern (VCP): How to Identify and Trade It

Pullbacks that shrink one after another inside an uptrend, then a breakout above the pivot. How to trade it, and what our test with the trend template found on 8,745 daily setups on US stocks: no edge over random dates.

· Founder of PatternsWizard
Updated Statistics updated 10 min read
TPSLEntryBullish breakout
Occurrences tested
9,220
6 markets, 1971 to 2026, found by code
Textbook says price should rise
Too close to call
+0.06% in the expected direction vs the market after 10 bars, all markets, daily
Textbook target reached
42.5%
vs 44.5% on random dates, all markets, daily

How we tested this pattern

Sample
9,220 occurrences on 6 markets (crypto, forex, US stocks, ETFs, indices and commodities), 1971 to 2026.
Detection
Found by code, never picked by hand: every match of the rule on full price history, winners and losers alike.In an uptrend: the close is above its 50-, 150- and 200-bar averages, the 50 above the 150 above the 200, the 200-bar average higher than 21 bars earlier, the close at least 30% above its 252-bar low and within 25% of its 252-bar high. Two or three pullbacks from peaks, each later peak within 20% of the first pullback's depth above or below the first peak, each pullback at most 80% as deep in percent as the one before, with rising lows. The first pullback is at least 3 ATR and at most 35% deep, with at least 3 bars between swing points. Confirmed by a close above the last peak. Stop at the last low.
Benchmark
Each occurrence is compared with the same assets on random bars: the move 10 bars later, and a 2:1 reward-to-risk trade.
Checks
Block bootstrap and a correction for the thousands of tests we run, plus a random-walk self-test that the bench passes: on random prices, no pattern should win.
Updated
Data updated November 5, 2026, code version c2a1683f. Read the methodology · Raw data (JSON)

Every pattern's results on one sheet

The only pattern cheat sheet with tested stats: 152 patterns, what the textbook says and what really happened on 6 markets. Free PDF, sent to your inbox.

One email with the PDF, then a note when a result changes. Unsubscribe anytime. Privacy.

At a glance: what textbooks say, what we measured
Direction
Bullish
Occurrences tested
9,220 occurrences, all markets, daily
Textbook: price should rise after it
Too close to call · +0.06% vs the market, 10 bars
Textbook: target reached most of the time
42.5% vs 44.5% on random dates
Its best market and timeframe, still negative, US stocks left out
ETFs, daily: −0.18 R 2:1 trade vs random dates, not proven
Verdict
10-bar move: No clear edge2:1 trade: No clear edge

See the statistics

On this page
  1. What is the volatility contraction pattern (VCP)?
  2. The psychology behind the VCP
  3. Key characteristics of a valid VCP setup
  4. How to identify a VCP on your charts
  5. Real examples
  6. Step-by-step guide to trading the VCP
  7. Common mistakes traders make with VCP
  8. Advanced techniques: quantifying volatility
  9. VCP vs. other chart patterns
  10. Does the VCP work? What the data says
  11. Risk management when trading the VCP
  12. Frequently asked questions
  13. Summary and final thoughts

The volatility contraction pattern (VCP) is a consolidation in which each dip is smaller than the one before while volume dries up, until price breaks out above a pivot. Mark Minervini popularized it in Trade Like a Stock Market Wizard (McGraw-Hill, 2013) as a way to buy leading companies in an uptrend at a moment of low risk.

A word on data first. The definition of the volatility contraction pattern leaves room for judgment (how many pullbacks, how deep, how quiet trading must get). Our bench tests one fixed reading of it, Minervini's trend template plus shrinking pullbacks, on full daily market history, and compares it with random dates on the same assets. We also show close relatives, such as the cup with handle and the bull flag.

What is the volatility contraction pattern (VCP)?

It forms inside an uptrend and is made of two or more contractions. The first pullback is the deepest; each following one is shallower, and the pattern narrows from left to right. Turnover falls at the same time, which Minervini reads as a sign that sellers are running out. The pattern is complete when price trades in a tight range just under resistance. The top of that range is the pivot, and the trigger is a move above it on rising volume.

Minervini labels each contraction with a T: a 3T setup has three of them. He describes most valid ones as having between two and six. Our bench tests setups with two or three.

The psychology behind the VCP

Supply and demand

In Minervini's reading, each dip tests supply. After a strong advance, holders take profits and price drops. Buyers step in at a higher level than before, and the next sell-off is weaker. Gradually the weak holders drop out, demand absorbs what is left, and few shares are still offered near the highs.

Why volatility must contract before a breakout

In the same reading, a narrowing range shows that the stock is reaching balance. With price compressed and trading quiet, a little new buying can lift the shares fast. That narrow range also lets the protective stop sit close to the purchase price.

Key characteristics of a valid VCP setup

12345
  1. First peakstart of the first contraction
  2. First pullbackthe deepest, in percent
  3. Second peakwithin 20% of the first pullback's depth above or below the first peak
  4. Last lowa shallower pullback and a higher low (two or three pullbacks in all); the stop sits here
  5. Breakoutclose above the last peak, on a bar where the trend template holds: close above the 50-, 150- and 200-bar averages, stacked in that order
Median shape of 961 daily occurrences drawn at random from all markets. Kept: setups with regular legs when enough exist, with the most common number of swing points and no two swing points on the same bar.

Price contraction from left to right

Each decline should be smaller than the one before. If the third drop is deeper than the second, it does not qualify, whatever it looks like.

Decreasing volume during the consolidation

Volume should shrink and reach its lowest point at the right edge of the consolidation. Heavy volume on down days is read as a warning that institutions are still unloading.

A prior uptrend

The volatility contraction pattern is a continuation pattern for a stock already in a stage 2 uptrend. Minervini's trend template asks, among other criteria, for price above its 50-day, 150-day and 200-day moving averages, with the 200-day line rising.

How to identify a VCP on your charts

  1. Locate the first wide decline. On a chart, find a leader in an uptrend that starts to consolidate after a strong advance.
  2. Measure each decline. Note its depth in percent. Each one should be smaller, with fewer shares traded.
  3. Find the pivot. Draw a line at the high of the last narrow range: price must clear it on heavy turnover.

Real examples

Real occurrences from our test bench, each on its market's main timeframe. US stock examples come from liquid assets only (the most traded stocks). Best and Worst are the best and worst 2:1 trade results, Textbook the cleanest shapes (chosen on geometry alone, never on the outcome), Most recent the latest detections among the assets the gallery draws from, Typical a random draw. Shaded area: the pattern. Dashed lines: entry, stop loss (SL) and 2:1 target (TP) of the tested trade. Dotted line: 10 bars after the signal. A result above +2 R or below −1 R means a bar opened past the target or the stop, and the trade was closed at that open. Stock and ETF prices are adjusted for splits and dividends, so they can differ from the prices quoted at the time. We left out 4 cards with a shape that does not read as the definition on this page. They still count in the statistics, and are not replaced: our bench picks a fixed number of cards per category.

Market
Examples
US stocks overallAcross 8,745 daily volatility contraction pattern occurrences, price moved the expected way 10 bars later 53.8% of the time, against 54.5% for random bars. The average excess return does not pass our significance test.No clear edgeThe examples below are single cases.
PatternAfter14.4710.34+10 barsTPSLEntry2006-05
Best tradeORCL August 14, 2006Daily chart1.6% in the expected direction after 10 bars2:1 trade: target hit, +3.50 R
PatternAfter160.4119.1+10 barsTPSLEntry2023-082024-03
Best tradeGOOGL December 21, 2023Daily chart1.1% against the expected direction after 10 bars2:1 trade: target hit, +3.16 R, 86 bars after entry, past this chart
PatternAfter8.754.28+10 barsTPSLEntry2014-01
Worst tradeNFLX August 22, 2014Daily chartNo net move after 10 bars2:1 trade: stopped out, −2.20 R
PatternAfter25.2321.19+10 barsTPSLEntry2003-07
Worst tradeBAC October 6, 2003Daily chart1.2% in the expected direction after 10 bars2:1 trade: stopped out, −2.11 R
PatternAfter1,215.2736.0+10 barsTPSLEntry2026-08
TextbookMost recentLITE October 1, 2026Daily chart16.9% against the expected direction after 10 bars2:1 trade: stopped out, −1.22 R
PatternAfter2,239.1998.2+10 barsTPSLEntry2026-07
Most recentSNDK September 22, 2026Daily chart12.0% against the expected direction after 10 bars2:1 trade: stopped out, −1.00 R
PatternAfter4.973.67+10 barsTPSLEntry2013-06
TypicalLRCX September 25, 2013Daily chart2.7% against the expected direction after 10 bars2:1 trade: stopped out, −1.00 R, 89 bars after entry, past this chart
PatternAfter18.3611.81+10 barsTPSLEntry2014-03
TypicalTSLA June 16, 2014Daily chart6.9% in the expected direction after 10 bars2:1 trade: target hit, +2.01 R, 54 bars after entry, past this chart
PatternAfter202.7167.3+10 barsTPSLEntry2017-10
TypicalMETA January 3, 2018Daily chart2.6% against the expected direction after 10 bars2:1 trade: stopped out, −1.00 R
PatternAfter46.1335.22+10 barsTPSLEntry2011-03
TypicalISRG June 28, 2011Daily chart1.7% against the expected direction after 10 bars2:1 trade: target hit, +2.00 R
Examples
ETFs overallAcross 246 daily volatility contraction pattern occurrences, price moved the expected way 10 bars later 57.7% of the time, against 56.7% for random bars. The average excess return does not pass our significance test.No clear edgeThe examples below are single cases.
PatternAfter48.6539.31+10 barsTPSLEntry2024-07
Best tradeXLF October 9, 2024Daily chart2.9% in the expected direction after 10 bars2:1 trade: target hit, +2.97 R
PatternAfter40.1330.86+10 barsTPSLEntry2015-01
Best tradeFXI March 30, 2015Daily chart14.0% in the expected direction after 10 bars2:1 trade: target hit, +2.20 R
PatternAfter599.7480.2+10 barsTPSLEntry2024-01
Worst tradeMDY July 15, 2024Daily chart1.0% in the expected direction after 10 bars2:1 trade: stopped out, −1.39 R
PatternAfter97.9487.06+10 barsTPSLEntry2025-08
Worst tradeTypicalEFA November 11, 2025Daily chart2.2% against the expected direction after 10 bars2:1 trade: stopped out, −1.20 R
PatternAfter96.0783.87+10 barsTPSLEntry2025-07
TextbookEFA October 1, 2025Daily chart0.3% against the expected direction after 10 bars2:1 trade: stopped out, −1.00 R, 36 bars after entry, past this chart
PatternAfter521.7435.7+10 barsTPSLEntry2021-05
TextbookMDY August 27, 2021Daily chart2.3% against the expected direction after 10 bars2:1 trade: stopped out, −1.02 R
PatternAfter825.9577.2+10 barsTPSLEntry2026-04
Most recentQQQ September 21, 2026Daily chart2:1 trade: in progress
PatternAfter216.5161.7+10 barsTPSLEntry2019-052020-01
TypicalQQQ October 25, 2019Daily chart2.9% in the expected direction after 10 bars2:1 trade: target hit, +2.04 R

Step-by-step guide to trading the VCP

TPSLEntryBullish breakout
Entry
Close above the last peak
Stop loss (SL)
At the last low
Target (TP)
Twice the risk (2:1)
The trade our bench tests, drawn on the typical shape. Median shape of 961 daily occurrences drawn at random from all markets. Kept: setups with regular legs when enough exist, with the most common number of swing points and no two swing points on the same bar.

A clean case from our bench: US stocksChosen on its shape alone, never on the outcome. A result above +2 R or below −1 R means a bar opened past the target or the stop, and the trade was closed at that open. Stock prices are adjusted for splits and dividends, so they can differ from the prices quoted at the time.

PatternAfter1,215.2736.0+10 barsTPSLEntry2026-08
TextbookLITE October 1, 2026Daily chart16.9% against the expected direction after 10 bars2:1 trade: stopped out, −1.22 R

Setting the entry

Strategic stop-loss placement

The stop-loss goes under the low of the last contraction. Because it is the narrowest part of the pattern, the distance to the stop-loss is short, which is the main appeal of the method. Size the position on that distance.

Defining profit targets and exits

The method has no measured target. Our bench uses a 2:1 target, the same rule it uses for every chart pattern so that results can be compared, with a buy at the first close above the pivot and the stop under the low of the last contraction. One exit plan sells part of the position into strength, at a set multiple of the amount risked, and trails the rest with a moving average. Get out quickly if price falls back into the consolidation after the breakout.

Common mistakes traders make with VCP

  • Ignoring liquidity. Thinly traded shares show narrow ranges simply because little changes hands.
  • Entering too early. Getting in before the last narrow range means a wide stop-loss and no confirmation.
  • Misreading activity. A quiet holiday week is not a drop in supply. Compare activity with its own average.
  • Forcing the shape. If the pullbacks do not get smaller, move on.

Advanced techniques: quantifying volatility

Judging the pullbacks by eye gives different answers from one trader to the next. A more objective approach measures volatility directly: the average true range (ATR) as a share of price, or the width of Bollinger Bands, should fall through the pattern. A screener can then list names in an uptrend whose range over the last 10 sessions is a small fraction of what it was over the last 50. TradingView hosts several community scripts that score volatility contraction along these lines; check how each one defines it before you trust its results. Beyond that, any broker or charting platform with moving averages and a screener is enough: the method needs no special tool.

The method also adds a filter on the general market, which our bench does not test: the results in "Does the VCP work? What the data says" cover the price shape and the trend template only.

VCP vs. other chart patterns

This setup is less a new shape than a reading of a consolidation. A cup with handle, a bull flag or an ascending triangle can each be a volatility contraction pattern if the pullbacks shrink and trading dries up. These three relatives are on our test bench. On daily charts, with the position opened at the breakout close, the stop-loss on the other side of the pattern and a target at twice the risk, here is how they did against the same trade on random dates.

PatternOccurrencesClosed trades2:1 target hitSame trade, random datesExpectancy (R)Verdict
Cup with handle (US stocks)67466935.6%35.6%+0.14 vs +0.16No clear edge
Bull flag (US stocks)99799432.5%33.6%+0.19 vs +0.21No clear edge
Ascending triangle, upward breakout (all markets)3,0263,00933.0%33.6%+0.18 vs +0.18No clear edge

Read each line in pairs. The trades were positive before costs, but the same distances placed on random dates in the same assets did just as well: the gain came from the upward drift of shares, not from the pattern. For these relatives, our bench tests the shape alone, without the trend template, the decline in activity or the market filter that the method adds. The VCP itself is tested with the trend template, in the next section.

Does the VCP work? What the data says

Our bench tests one fixed reading of the method on daily charts, built from Minervini's trend template as he describes it in Trade Like a Stock Market Wizard, and from the shape described above. The summary of its results comes first, then the rule.

54.1%vs 54.6% at random

Moved the expected way 10 bars later, compared with random bars.

Measured on 9,220 daily volatility contraction pattern occurrences across 1,605 assets. Random bars on the same assets are the honest baseline.

No clear edge

Volatility contraction pattern against random bars on the same assets, by market, on daily candles. Bars of almost the same length mean no edge.

Moved the expected way 10 bars laterVolatility contraction patternRandom bars
  • All markets
    All markets, Volatility contraction pattern: 54.1%
    All markets, Random bars: 54.6%
  • US stocks
    US stocks, Volatility contraction pattern: 53.8%
    US stocks, Random bars: 54.5%
  • ETFs
    ETFs, Volatility contraction pattern: 57.7%
    ETFs, Random bars: 56.7%
  • Indices
    Indices, Volatility contraction pattern: 68.0%
    Indices, Random bars: 57.4%
  • Commodities
    Commodities, Volatility contraction pattern: 50.9%
    Commodities, Random bars: 52.0%
2:1 trade hit its targetVolatility contraction pattern tradeSame trade, random dates
  • All markets
    All markets, Volatility contraction pattern trade: 30.8%
    All markets, Same trade, random dates: 33.1%
  • US stocks
    US stocks, Volatility contraction pattern trade: 30.9%
    US stocks, Same trade, random dates: 33.1%
  • ETFs
    ETFs, Volatility contraction pattern trade: 26.3%
    ETFs, Same trade, random dates: 32.0%
  • Indices
    Indices, Volatility contraction pattern trade: 24.8%
    Indices, Same trade, random dates: 36.3%
  • Commodities
    Commodities, Volatility contraction pattern trade: 33.3%
    Commodities, Same trade, random dates: 36.4%
All statistics

Full results for the volatility contraction pattern, market by market

Every occurrence our rule finds on full price history, compared with what the same assets did on random bars. A pattern only earns an edge if it beats random entries after correcting for the thousands of tests we run.

Our verdict

Not a reliable signal on its own here. Use it as context, not as a trigger.

10-bar move No clear edge2:1 trade No clear edge

Volatility contraction pattern: 9,220 occurrences tested

Bullish pattern · All markets · Daily · 1,605 assets · 1971-02 to 2026-10

Moved the expected way after 10 bars
54.1%
vs 54.6% on random bars
Excess return vs its market, 10 bars
+0.06%
95% interval −0.12% to +0.23%
its market−3%+3%
2:1 trade hit the target
30.8%
vs 33.1% for the same trade on random dates
Average result per trade
+0.17 R
vs +0.24 R on random dates

What this means. No measurable difference from the rest of its market over the next 10 bars.

Timeline

Pattern length, first swing to breakout
45 days · middle half 31 to 75 · on 9,220 occurrences
Breakout, after the last swing
2 days · middle half 0 to 5 · on 9,220 occurrences
Time to the 2:1 target, when hit
38 days · middle half 21 to 61 · on 2,813 trades that hit it
Time to the stop, when hit
21 days · middle half 10 to 39 · on 4,810 trades that hit it
Time in the trade, all exits
33 days · middle half 15 to 73 · on 9,135 trades
Measured-move target reached, when hit
26 days · middle half 13 to 47 · on the occurrences that reached it
Pattern height projected from the breakout

Size and trade path

Pattern height
13.9% · middle half 9.8% to 20.0% · on 9,220 occurrences
Best open profit during the trade
1.07 R · middle half 0.39 R to 2.03 R · on 9,135 trades
Stopped trades that were first up 1 R
19.9% · on 4,810 stopped trades
Trades a stop moved to breakeven at +1 R would have closed flat instead of at a loss

Medians, each on the cases named on its line; "middle half" spans the 25th to 75th percentile; no value under 30 cases.

How we detect it. In an uptrend: the close is above its 50-, 150- and 200-bar averages, the 50 above the 150 above the 200, the 200-bar average higher than 21 bars earlier, the close at least 30% above its 252-bar low and within 25% of its 252-bar high. Two or three pullbacks from peaks, each later peak within 20% of the first pullback's depth above or below the first peak, each pullback at most 80% as deep in percent as the one before, with rising lows. The first pullback is at least 3 ATR and at most 35% deep, with at least 3 bars between swing points. Confirmed by a close above the last peak. Stop at the last low.

All measurements (7 rows)

10-bar move: did price go the expected way?

Figures in gray: fewer than 30 occurrences, not interpreted. Excess return is signed so that positive favors the pattern. The test uses the bootstrap’s standard error and the interval its percentiles: near the 0.05 line, or on a few extreme moves, an interval can leave out zero while the test does not pass, and the test decides. Stock data misses most delisted companies, a survivorship bias we have not sized, which can flatter stock rows.
MarketOccurrencesPatternRandom barsExcess10-bar move verdict
Crypto · Daily5162.7%47.5%+8.87%Not enough data
US stocks · Daily8,74553.8%54.5%−0.01%No clear edge
ETFs · Daily24657.7%56.7%+0.36%No clear edge
Indices · Daily12268.0%57.4%+0.33%No clear edge
Forex · Daily366.7%52.9%+0.61%Not enough data
Commodities · Daily5350.9%52.0%−0.09%No clear edge
All markets · Daily9,22054.1%54.6%+0.06%No clear edge

2:1 trade: target hit and average result

R = initial risk of the trade. Entry at the close of the signal bar. Exit at the stop or the target, or at the open when a bar opens beyond either one; otherwise at the close after 100 bars. When one bar touches both the stop and the target, the loss is counted. No fees or slippage. n/a = not measured. Per trade: average result, against the same trade on random dates. Figures in gray: fewer than 30 closed trades, not interpreted.
MarketTradesTarget hitSame trade, random datesPer trade2:1 trade verdict
Crypto · Daily5143.1%36.3%+0.31 R vs +0.12 RNot enough data
US stocks · Daily8,66630.9%33.1%+0.17 R vs +0.24 RNo clear edge
ETFs · Daily24326.3%32.0%+0.06 R vs +0.24 RNo clear edge
Indices · Daily12124.8%36.3%+0.06 R vs +0.40 RWeak, below chance
Forex · Daily333.3%33.3%+1.27 R vs +0.82 RNot enough data
Commodities · Daily5133.3%36.4%+0.16 R vs +0.25 RNo clear edge
All markets · Daily9,13530.8%33.1%+0.17 R vs +0.24 RNo clear edge

After the breakout

False start: the stop was hit before price moved half the pattern's height in the breakout direction, within twice the pattern's length. Random dates: the same entry, stop and length on the same asset at random dates. Throwback: price came back within a quarter of an average bar (ATR) of the breakout level, after at least one whole bar beyond it, within the pattern's length.
MarketOccurrencesFalse startsSame, random datesThrowbacks
Crypto · Daily5130.6%39.7%62.0%
US stocks · Daily8,74539.8%38.1%70.2%
ETFs · Daily24643.5%42.5%70.6%
Indices · Daily12237.3%36.8%73.1%
Forex · Daily30.0%41.7%100.0%
Commodities · Daily5340.0%40.1%68.6%
All markets · Daily9,22039.8%38.2%70.2%

Data updated November 5, 2026 · code version c2a1683f · Read the methodology. We measure every pattern on crypto, US stocks, ETFs, indices, forex and commodities (daily charts). A market or timeframe from that list missing from the tables above had no occurrence.

What you often read

“The volatility contraction pattern is a reliable bullish signal.”

What our data shows

On 9,220 daily occurrences, it moved in the expected direction 54.1% of the time, against 54.6% for random bars: no clear edge, since the average excess return is not statistically significant.

The rule, never tuned on results:

  • The trend template: the close is above its 50-, 150- and 200-bar averages, the 50 above the 150 above the 200, the 200-bar average higher than 21 bars earlier, the close at least 30% above its 252-bar low and within 25% of its 252-bar high. The relative strength ranking is left out, because it needs the whole market at once.
  • The contractions: two or three pullbacks, each one at most 80% as deep in percent as the one before, with rising lows. The first is at least 3 ATR and at most 35% deep, with at least 3 bars between swing points. Each later peak must stay close to the first one: the gap between them may not exceed 20% of the depth of the first pullback.
  • The signal: the first close above the last peak, the pivot. The stop goes under the low of the last contraction, and the target at twice the risk.

Turning points are swings of 2, 4 or 8 times the average true range. The bench tests the price shape and the trend template; volume is reported as a breakdown.

The table below details the trade: every occurrence our rule finds on full price history, on daily charts, compared with the same trade placed on random dates on the same assets.

Table quoted in the text (verdicts and every market: see All measurements)
Setup testedOccurrencesClosed trades2:1 target hitSame trade, random datesExpectancy before costs
US stocks, daily8,7458,66630.9%33.1%+0.17 R vs +0.24 R
ETFs, daily24624326.3%32.0%+0.06 R vs +0.24 R
Indices, daily12212124.8%36.3%+0.06 R vs +0.40 R
Commodities, daily535133.3%36.4%+0.16 R vs +0.25 R
Crypto, daily515143.1%36.3%+0.31 R vs +0.12 R
All markets, daily9,2209,13530.8%33.1%+0.17 R vs +0.24 R

How to read it: each row is the trade above, compared with the same entry, stop and target placed on random bars of the same assets. Expectancy is the average result per trade in units of risk (R), before fees. On 8,745 daily setups on US stocks, where the method was designed, the VCP did no better than the same trade on random dates. Stock data also misses most delisted companies, a survivorship bias we have not sized. One small sample looks better at first sight. On index charts, 68.0% of the 122 setups were higher 10 days later, against 57.4% of random days, but the average excess return of +0.33% over the rest of the market has an interval that includes zero: the table rates that row No clear edge, and the trade there reached its target less often than on random dates, a gap rated weak, below chance: worse than chance in a simple test, not after our correction. On crypto charts, a smaller sample still, the trade reached its target 43.1% of the time against 36.3% on 51 setups (51 closed trades), a sample on which our statistical test could not be run, so that gap is shown, not interpreted. Neither shows an edge. Volume did not change the picture on stocks: breakouts on more than 1.5 times the average volume reached the target 29.8% of the time, against 31.5% on normal volume, a descriptive breakdown not corrected for multiple testing. As a separate measure, price reached the height of the first contraction added to the pivot, before the stop and within 100 bars, in 39.3% of daily setups; that rate has no random baseline, so it describes the shape rather than an edge.

The VCP can overlap the cup with handle, the bull flag and the ascending triangle, which have their own rules: their figures should not be added to these.

Risk management when trading the VCP

The strength of this contraction pattern is a defined, short distance to the stop-loss. Protect it: decide the exit before you enter, never widen it, and put only a fixed share of your account on each position. Expect many little losses from breakouts that fail; the method relies on a few larger winners to cover them. Before using real money, list the last 50 setups you would have taken in a free demo account, record the outcome, and compare it with entries on random dates.

Disclaimer: this page is general information, not investment advice. Trading carries a genuine chance of loss and is not suitable for everyone; if in doubt, ask a professional financial adviser.

Frequently asked questions

How many contractions should a VCP have?

At least two. According to the book, most valid ones have two to six, each shallower than the one before.

Does the VCP work in all timeframes?

It was designed for daily and weekly charts of US equities. The same rules can be drawn on intraday charts and on crypto. Our bench tests it on daily charts only, where the trend template, counted in bars, keeps the meaning Minervini gave it.

Is volume decay mandatory for a VCP?

In the original definition, yes: falling activity is what shows that supply is drying up. A narrow range on heavy volume says something else. The bench tests the price shape and the trend template; volume is reported as a breakdown.

Can VCP be used for short selling?

The method was built for buying in an uptrend. The mirror image exists in principle, but we have not tested it.

Summary and final thoughts

  • A VCP is a consolidation where each decline is smaller than the last and volume dries up, inside an uptrend.
  • The signal is a breakout above the pivot, with the stop-loss under the last contraction.
  • Tested with the trend template and one fixed rule, it did no better than the same trade on random dates on US stocks, and neither did its closest relatives.
  • Treat it as a method to define a short distance to your exit, not as a promise of a big move.

About the author and the data. Written by Amaury, founder of PatternsWizard, who is passionate about finance, quantitative trading and data analysis. He built the PatternsWizard test bench, which detects price patterns with published rules on full market history: crypto, forex, US equities, ETFs, indices and commodities. Trades and win rates are compared with random bars on the same assets, excess returns with the rest of the market, with error margins and a correction for multiple testing. The VCP rule on this page was set from chart reviews, never tuned on results. Statistics on this page were generated on November 5, 2026. The full methodology explains every step.

, Founder of PatternsWizard

Passionate about finance, quantitative trading and data analysis. Amaury built the PatternsWizard test bench, which detects each pattern on full price history and measures what happened next against random entries.

Statistics on this page come from our open methodology: every occurrence our rule finds on full history, compared with chance. How we test patterns.

179 patterns testedRandom-walk self-test passed