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.
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 Element | What to look for | Why it matters |
|---|---|---|
| Prior uptrend | Price above rising 150-day and 200-day moving averages, 52-week high within reach | Confirms institutional accumulation is already underway |
| First contraction | 15–35% pullback from the base high | Shakes out weak holders; sets the base depth |
| Taper ratio | Each contraction is roughly half the depth of the previous one or clearly shallower | Shows diminishing selling pressure with each wave |
| Contraction count | Two to four contractions is typical for a clean setup | Too few means the base is undeveloped; too many may signal loss of momentum |
| Volume dry-up | Volume in the final contraction well below the 50-day average | Confirms that sellers are exhausted and supply is thin |
| Final tightness | Last contraction under 10%, ideally under 5%, measured against the stock's own average daily range | A tight pivot means a close stop and favourable risk-reward |
| Pivot | High of the final contraction, cleared on above-average volume | The 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:
- The current price is above the 150-day (30-week) moving average.
- The current price is above the 200-day (40-week) moving average.
- The 150-day moving average is above the 200-day moving average.
- The 200-day moving average is trending up (it has been rising for at least one month, preferably four to five months).
- The 50-day moving average is above the 150-day and 200-day moving averages.
- The current price is above the 50-day moving average.
- The current price is at least 25 percent above the 52-week low (many leading stocks are 100 percent or more above it).
- 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.
- Pattern recognition is subjective. Two experienced traders can disagree on where one contraction ends and the next begins. A scanner uses a fixed algorithm, which means it will sometimes miss setups a human would catch and flag setups a human would skip.
- Not every tight base is a VCP. A stock can trade in a narrow range for weeks without showing progressive contraction. It is just a flat base or a trading range. Tightness alone is not enough. The scanner needs to detect the sequence of tapering swings, not just the final tightness.
- Context gets lost. A base that formed around earnings has different significance than one that formed in quiet tape. A scanner does not know whether the tight range is genuine supply absorption or the market waiting for a catalyst.
- Timeframe dependence. A daily chart might show three clean contractions. A weekly chart of the same stock might show one smooth pullback and recovery. The scanner's timeframe and its method for identifying swing points affect what it finds.
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:
- Contraction count. Three to four contractions is the sweet spot for Minervini's method. Two is acceptable but less developed. Five or more may mean the stock is losing thrust. A scanner should report the count.
- Taper ratio. How much does each contraction shrink relative to the one before it? A consistent taper where each pullback is roughly 40 to 60 percent of the previous one is ideal. An uneven taper, where the third contraction is deeper than the second, is a flaw.
- Volume confirmation. Volume in the final contraction should be well below the 50-day average. The lower the better. A scanner can measure the ratio of volume in the last two weeks of the base to the 50-day average and rank by it.
- Final tightness. The depth of the last contraction matters, but it should be measured relative to the stock's own average daily range (ADR). A 4 percent contraction in a stock with a 1.5 percent ADR is tight. The same 4 percent in a stock that routinely moves 5 percent a day is not.
- Proximity to 52-week high. The closer the pivot is to the 52-week high, the less overhead resistance the stock faces on a breakout. Setups within 10 to 15 percent of the high are stronger than those 20 to 25 percent away.
- Relative strength. A stock that is outperforming the broad market during its base formation is more likely to follow through. Relative strength ranking adds a quality layer that pure price-pattern detection misses.
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:
- Grade A (score 80–100): Three or four clean contractions with consistent taper. Final contraction under 5 percent relative to ADR. Volume in the tight area well below the 50-day average. Stock within 15 percent of 52-week high. Strong relative strength. These are the setups you want full position size on.
- Grade B (score 60–79): Good structure with minor flaws. Perhaps the taper is slightly uneven, or volume is only moderately below average. Still a tradeable setup, but you might reduce size or require extra confirmation like a sector tailwind.
- Grade C (score 40–59): Marginal setup. The contraction sequence is there but messy. Volume may not have dried up convincingly. The stock might be further from its 52-week high than ideal. Worth watching but not the highest-conviction position.
- Grade D (score below 40): The stock passes the trend template and shows some base tightening, but the VCP structure is weak. Few if any clean contractions. Volume behaviour is not supportive. These are the setups where the risk of a failed breakout is highest.
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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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:
- Position sizing. The grade tells you relative quality. You still decide how much of your capital to commit. Risk management is separate from pattern detection.
- Market exposure. In a broad market correction, even A-grade VCPs fail at a higher rate. Knowing when to sit on your hands is not something a scanner can tell you.
- Sell rules. The VCP gives you an entry and a stop. It does not tell you when to take profits, when to add to a winner, or when to tighten a trailing stop. That comes from your trading plan.
- Patience. The scanner will show you setups every night. Not all of them deserve action. Waiting for the best grades in a healthy market is the discipline that compounds returns over months and years.
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