KEY TAKEAWAY A VCP screener filters stocks for Mark Minervini's volatility contraction pattern — a setup where progressively tighter pullbacks signal that supply is drying up and a breakout is likely. Automating this scan saves hours of manual chart review.

A VCP screener filters stocks for Mark Minervini's volatility contraction pattern — a setup where progressively tighter pullbacks signal that supply is drying up and a breakout is likely.

This guide covers what a VCP stock screener actually needs to measure, why most general-purpose screeners fall short, how grading separates textbook setups from marginal ones, and where you can screen for VCPs online today.

Key takeaway

A VCP scanner is only as good as the filters it runs before the pattern detection. The SEPA trend template must come first. Scanning for tightness in stocks that are not in confirmed uptrends produces a list of dead-money consolidations, not actionable setups.

What is the VCP (volatility contraction pattern)?

The volatility contraction pattern is a base-building structure that Mark Minervini described in detail in Trade Like a Stock Market Wizard (2013). The idea is straightforward: as a stock consolidates after an advance, each successive pullback within the base gets smaller than the one before it. The swings contract. Volume dries up alongside that contraction. When the range gets tight enough and supply is exhausted, a small burst of demand can push the stock through the pivot and launch the next leg higher.

The VCP is not a chart pattern in the traditional sense. It is not a head-and-shoulders or a wedge that you draw lines around. It is a measurable sequence of events: a prior uptrend, a correction, a rally that does not reach the old high, a shallower correction, another rally, an even shallower correction, and so on until the price range narrows to a few percent. Each of those high-to-low swings is called a contraction, and the progressive shrinking of those swings is the volatility contraction. For a deeper explanation of the pattern itself, see our guide to volatility contraction patterns.

The anatomy of a VCP

Before you can screen for VCPs, you need to know exactly what the scanner is looking for. A textbook VCP has five elements, each of which a good screener should measure.

Prior uptrend

The stock must have been advancing before the base began. This is not optional. A VCP that forms in a stock trending sideways or down is not a VCP at all. The prior move creates the overhead supply that the base needs to absorb. Without it, the tightening has no meaning.

Base formation

After the advance, the stock pulls back and begins to build a base. The first correction is the deepest, typically 15 to 35 percent from the high. This is normal. It shakes out weak holders who bought late or on momentum alone. The base takes weeks to months to form, and its depth depends on the stock's volatility and the market environment.

Successive contractions that taper

This is the core of the pattern. After the initial correction, the stock rallies, then pulls back again, but the pullback is shallower. It might correct 15 percent the first time, 9 percent the second, 5 percent the third, and 3 percent the fourth. Each contraction is measured from the local high to the local low within the base. The progressive shrinking tells you that sellers are running out of stock to sell. Fewer people are willing to part with shares at lower prices.

Volume dry-up

As the contractions get smaller, volume should decline with them. By the final contraction, daily volume is often the lowest it has been in months. This is evidence that the remaining holders are sitting tight. There are no more sellers to absorb. A VCP with tight price action but heavy volume in the base is suspect. It may mean a large holder is distributing stock into every small rally. Learning to read institutional buying volume helps you distinguish accumulation from distribution inside a base.

The pivot point

The pivot is the high of the final, tightest contraction. When the stock clears this level on a surge in volume, that is the entry signal. The beauty of the VCP pivot is that it gives you a tight stop. If the stock falls back below the low of that last contraction, the pattern has failed, and the loss is small relative to the potential gain. Proper swing trading risk management turns that tight stop into a precise position size.

VCP ElementWhat to look forWhy it matters
Prior uptrendPrice above rising 150-day and 200-day moving averages, 52-week high within reachConfirms institutional accumulation is already underway
First contraction15–35% pullback from the base highShakes out weak holders; sets the base depth
Taper ratioEach contraction is roughly half the depth of the previous one or clearly shallowerShows diminishing selling pressure with each wave
Contraction countTwo to four contractions is typical for a clean setupToo few means the base is undeveloped; too many may signal loss of momentum
Volume dry-upVolume in the final contraction well below the 50-day averageConfirms that sellers are exhausted and supply is thin
Final tightnessLast contraction under 10%, ideally under 5%, measured against the stock's own average daily rangeA tight pivot means a close stop and favourable risk-reward
PivotHigh of the final contraction, cleared on above-average volumeThe entry trigger; volume confirms demand is arriving

The SEPA trend template: the prerequisite for any VCP scan

Minervini never screens for VCPs in isolation. The pattern is always applied on top of his Specific Entry Point Analysis (SEPA) trend template. This is the set of criteria that defines whether a stock is in a confirmed Stage 2 uptrend. If it is not, the VCP is irrelevant. A Minervini VCP screener that skips the trend template is missing the foundation.

The SEPA trend template has eight criteria:

  1. The current price is above the 150-day (30-week) moving average.
  2. The current price is above the 200-day (40-week) moving average.
  3. The 150-day moving average is above the 200-day moving average.
  4. The 200-day moving average is trending up (it has been rising for at least one month, preferably four to five months).
  5. The 50-day moving average is above the 150-day and 200-day moving averages.
  6. The current price is above the 50-day moving average.
  7. The current price is at least 25 percent above the 52-week low (many leading stocks are 100 percent or more above it).
  8. The current price is within 25 percent of the 52-week high (the closer the better, and many of the best setups are within 15 percent).

These eight filters do the heavy lifting. They eliminate the vast majority of stocks before the VCP detection even starts. On any given day, roughly 1,800 to 2,200 US-listed stocks with sufficient liquidity pass the full trend template. That is the universe a VCP screener should search. SwingTradeScanner's Minervini SEPA scan applies all eight criteria every night before looking for base patterns.

How to screen for VCPs

There are two approaches: manual chart reading and automated scanning. Most serious Minervini-method traders use both, and understanding what each does well (and poorly) matters.

Manual chart review

The traditional approach is to pull up a weekly chart, check the trend template criteria visually, and then look for the tightening pattern on the daily chart. Many traders scan through a watchlist of 50 to 200 stocks each night, marking the ones that are forming bases and watching for the contractions to taper. This is what Minervini himself has described doing throughout his career.

The advantage of manual review is context. You can see how the stock traded around earnings, whether the sector is cooperating, and whether the base looks clean or choppy. If you are still building your chart-reading skills, the best swing trading scanner guide compares tools that do much of this work for you. The disadvantage is time and coverage. Reviewing 200 charts a night is a serious commitment, and you still miss the other 1,600 stocks that might be setting up.

Automated VCP scanning

An automated VCP stock screener applies the trend template filters mathematically and then runs pattern detection across every qualifying chart. This solves the coverage problem. You are not limited to the stocks you already know about. The scanner checks everything and surfaces the ones that meet the criteria.

O'Neil's CANSLIM stock screener approach overlaps heavily with the SEPA framework, and stocks that pass both systems tend to be the strongest candidates. The challenge is that VCP detection is harder to automate than simple moving-average filters. A screener needs to identify local highs and lows within a base, measure each contraction as a percentage, verify that each one is shallower than the last, check volume behaviour across the base, and measure the tightness of the final contraction relative to the stock's own normal range. That is pattern recognition, not column filtering.

What most stock screeners cannot do

General-purpose screeners like Finviz, TC2000, or TradingView's built-in filters can handle the trend template. You can set up a scan for price above the 50-, 150-, and 200-day MAs, check relative position to the 52-week high and low, and so on. But these filters do not detect VCPs. They cannot count contractions, measure taper ratios, or evaluate base tightness. You still need to open each chart and look.

This is where dedicated VCP scanners add value. They take the output of the trend template filter and apply the pattern-recognition layer on top.

The mechanics of volatility contraction: T1 greater than T2 greater than T3

The core principle of the VCP is that each successive contraction must be shallower than the one before it. Traders label these contractions T1, T2, T3, and so on. The "T" stands for tightening, and the numbering indicates the sequence. T1 is the first and deepest correction within the base. T2 is the second, shallower correction. T3 is the third, even shallower one. The pattern continues until the range is tight enough to set up a pivot.

A textbook sequence might look like this: T1 corrects 30% from the base high. After a partial recovery, T2 corrects 15%. After another recovery, T3 corrects 7%. And a final T4 corrects just 3%. Each contraction is roughly 40-60% of the previous one's depth. This tapering is the evidence that selling pressure is diminishing with each wave. The sellers who were willing to sell at 30% below the high have already exited. The sellers at 15% below have exited. By the time the contraction is only 3%, nearly all the willing sellers have been absorbed.

When the taper ratio is inconsistent -- for example, T1 at 25%, T2 at 20%, T3 at 22% -- the pattern is flawed. The third contraction being deeper than the second means new selling pressure appeared, which undermines the thesis that supply is being absorbed. A scanner should flag these inconsistencies. The best VCPs show a monotonically decreasing sequence of contraction depths.

Volume dry-up requirements

Volume behavior within the VCP is as important as price behavior. The ideal pattern shows volume declining alongside the contractions. During T1, volume is typically above average as shaken-out holders sell. By T2, volume has dropped noticeably. By T3 and T4, daily volume is at or near the lowest levels in months.

The specific metric to track is the ratio of average volume in the final contraction to the 50-day average volume. A ratio below 0.5 (meaning volume in the tight area is less than half the recent average) is strong. A ratio below 0.3 is exceptional and often precedes the most powerful breakouts. Volume in the tight area above the 50-day average is a warning: it may mean a large holder is distributing shares quietly, using every small uptick to offload stock.

On the breakout day itself, the volume pattern reverses. You want to see a surge to at least 1.5 times the 50-day average, and ideally two to three times. This shift from dry to explosive confirms that new demand has arrived in size. A breakout from a VCP on quiet volume is suspect and more likely to fail.

Identifying the pivot point

The pivot is the price level where the breakout occurs. In a VCP, the pivot is the high of the final, tightest contraction. This is not always the same as the base high. If the stock formed a base with a high of $100, then contracted to $92, rallied to $97, contracted to $94, rallied to $96, and contracted to $95.50, the pivot is $96 -- the high of the last rally within the tightest portion of the base, not the $100 base high.

This distinction matters for two reasons. First, the pivot at $96 gives you a tighter stop than waiting for the stock to clear $100. Your stop goes below the low of the final contraction ($95.50), giving you $0.50 of risk. If you waited for $100, your stop might need to be at $94, giving you $6 of risk. The risk-reward ratio is dramatically better at the VCP pivot. Second, the move from $96 to $100 itself can be significant. That $4 move is the first leg of the breakout, and it often happens quickly because the $96-$100 zone has already been cleared of sellers during the base formation.

Automated VCP screening versus manual chart reading

The debate between automated and manual VCP detection is not either/or. Each approach has distinct advantages, and the best practitioners use both.

Manual chart reading excels at context. An experienced trader can assess whether a base is forming in a leading industry group, whether the consolidation coincided with a market pullback (benign) or an isolated sell-off in the stock (concerning), and whether the stock's earnings trajectory supports the pattern. These contextual judgments are difficult to automate because they require synthesizing information across multiple domains.

Automated screening excels at coverage and consistency. A human reviewing 200 charts per night might miss a VCP forming in a stock they have never heard of or a sector they do not follow. A scanner checks every qualifying stock every night without fatigue, bias, or blind spots. It also applies the criteria consistently: it does not relax the rules on a stock it "likes" or tighten them on one it has a bias against.

The optimal workflow uses automated scanning as the first filter and manual review as the final filter. The scanner surfaces 10 to 30 candidates each night. The trader reviews those charts, eliminates the ones with poor context, and focuses on the three to five that have the tightest setups in the strongest sectors. This combination of machine coverage and human judgment produces the best results. For a broader perspective on how scanning fits into breakout trading, see the guide on how to scan for breakout stocks.

Limitations of automated VCP detection

No scanner is perfect, and honesty about what automated detection can and cannot do saves you from misplaced confidence.

The right way to use a VCP scanner is as a first filter, not a final answer. It surfaces the candidates. You still need to look at each chart, evaluate the context, and decide whether the setup is worth a position. If you want to understand how to scan for breakout stocks more broadly, the same principle applies: the scanner narrows the universe, and the trader makes the call.

VCP grading: separating textbook from marginal

Not all VCPs are equal. A stock with four clean contractions, each about half the previous one, with volume drying up to a whisper in the final tight area, is a textbook setup. A stock with two uneven contractions and normal volume throughout is marginal at best. Grading the quality of each VCP helps you allocate attention and size your positions accordingly.

What goes into a VCP grade?

The factors that distinguish a strong VCP from a weak one are measurable:

The A/B/C/D grading system

SwingTradeScanner scores each VCP on a 0–100 scale based on the factors above and assigns a letter grade:

The grading forces discipline. When the market is healthy and there are dozens of setups, you focus on the A and B grades. When the market is thin and setups are scarce, you at least know what you are buying and can size accordingly.

Where to screen for VCPs online

Several tools offer some level of VCP scanning. Here is what each one does and where it falls short.

TradingView Pine scripts

TradingView's scripting language lets community members build custom indicators. Several published scripts attempt to detect VCPs by measuring price-range contraction over a lookback period. The advantage is that TradingView is free to start and the scripts overlay directly on charts. The limitation is that most scripts measure aggregate volatility compression rather than counting individual contractions. They flag narrowing Bollinger Bands or declining ATR, which correlates with VCPs but is not the same thing. You also have to check each alert manually against the trend template unless you build that into the script as well.

MarketInOut

MarketInOut provides pre-built scans for Minervini's trend template criteria. It is a reasonable starting point for identifying stocks in Stage 2 uptrends. However, its VCP detection is basic. It flags stocks near 52-week highs with declining volatility but does not count contractions or grade them. Think of it as a trend-template filter with loose tightness criteria, not a full VCP scanner.

vcpscanner.com

A dedicated tool focused specifically on VCP detection. It scans for base tightening and attempts to count contractions. Coverage is limited to US stocks, and the grading is less granular than what a purpose-built scanner can offer. Still, it is one of the few tools that focuses entirely on the VCP pattern rather than treating it as an afterthought.

SwingTradeScanner

SwingTradeScanner runs the full Minervini SEPA scan nightly across roughly 1,900 US stocks -- the most thorough automated VCP scanner available. The scan applies all eight trend template criteria first, then detects contractions in each base, measures taper ratios, checks volume behaviour, and assigns each VCP a letter grade (A through D). Results are sorted by grade so the tightest, cleanest setups appear first. Every result includes the contraction count, the depth of each contraction, the final tightness as a multiple of ADR, the volume ratio, and a composite score from 0 to 100. Unlike TradingView scripts or MarketInOut, the scanner also integrates SEC filing detection and market breadth regime analysis, so you know whether the environment supports acting on the setups you see. You can filter by grade, sector, market cap, or any combination. At $20 per month with a free seven-day trial (no card required), it costs less than TradingView Pro or any other paid VCP scanning tool while providing significantly deeper pattern analysis.

Building your own VCP screening workflow

Whether you use a dedicated scanner or a combination of tools, the workflow should follow the same sequence:

  1. Start with the trend template. Filter the universe down to stocks in confirmed Stage 2 uptrends. This eliminates 70 to 80 percent of stocks immediately.
  2. Sort by base tightness. Among the trend-template stocks, rank by how tight the current base is. This puts the most developed VCPs at the top.
  3. Check contraction structure. For the top candidates, look at the base on a daily chart. Count the contractions. Verify that each one is shallower than the last. A scanner can do this step for you, but if yours does not, do it manually for the top 20 or 30 names.
  4. Evaluate volume. Look for volume declining into the right side of the base. The final contraction should show the lowest volume of the entire base period.
  5. Context check. Is the stock in a leading sector? Is the broad market healthy? Is there an earnings date approaching that might disrupt the pattern? These are human-judgment calls that no scanner makes for you. Reading market breadth helps with the last question.
  6. Set alerts. Once you have identified the best setups, set price alerts at the pivot level. You want to know the moment the stock clears the high of the last contraction on volume.

What a VCP screener cannot replace

A Minervini VCP screener saves hours of chart review and catches setups you would otherwise miss. But it does not replace the judgment calls that separate profitable traders from unprofitable ones. Here are the things that remain your job:

Minervini's method works because it is specific. The trend template is specific. The VCP is specific. The entry at the pivot on volume is specific. A good VCP scanner preserves that specificity instead of diluting it. It measures what Minervini measures, filters by his criteria, and surfaces the stocks that meet the standard. What you do with those names is still trading.

Questions

What is a Minervini VCP screener?

A Minervini VCP screener is a tool that automatically identifies stocks forming volatility contraction patterns while also passing the SEPA trend template criteria. It measures contraction depth, taper ratio, volume dry-up, and base tightness to rank setups by quality.

Can you screen for VCPs with a stock screener?

Partially. Standard screeners can filter for SEPA trend template criteria like moving average alignment and proximity to 52-week highs. Detecting the VCP itself requires measuring successive contractions in the base, which needs specialised pattern-detection logic beyond simple column filters.

What makes a VCP grade A versus grade C?

An A-grade VCP has three or four clearly tapering contractions, a final contraction under five percent, volume well below the 50-day average in the tight area, and a stock that sits within fifteen percent of its 52-week high. A C-grade setup may have uneven taper, higher volume in the base, or a final contraction that is still relatively wide.

Where can I find a free VCP scanner online?

TradingView offers community-built Pine scripts that highlight VCP-like tightening. MarketInOut and vcpscanner.com provide basic VCP scans. SwingTradeScanner runs a nightly SEPA scan with VCP quality grades, and the first two weeks are free.

See tonight’s highest-graded VCPs

The SEPA scan grades every volatility contraction pattern from A to D so you focus on the setups that matter.

Start free trial