Following along? Install Finmagine Trader first
Free NSE momentum scanner — no account needed • Chrome, Edge, Brave
ATR Contraction • Tight Volatility Filter • Coiling Stocks • 35 interactive flashcards
The Tight Volatility filter added in v1.4.0 applies a single condition — ATR(14) < ATR(50) — to the Near 52W High scan. When a stock’s 14-day Average True Range is below its 50-day Average True Range, recent price swings are narrowing. That narrowing is the classic “coiling” behaviour that precedes breakouts in Minervini’s SEPA methodology.
Click any card to reveal the answer. Use the search to find specific concepts.
The Tight Volatility filter is an optional dropdown in Finmagine Trader v1.4.0. When set to Tight Volatility, it adds a single condition to the Near 52W High scan:
daily atr( 14 ) < daily atr( 50 )
A stock’s 14-day Average True Range must be below its 50-day Average True Range. In plain English: recent price swings are smaller than the stock’s recent historical average. The stock is coiling.
This filter is off by default. Your existing scans are unchanged until you select “Tight Volatility” in the dropdown. It is a precision tool for traders who specifically want setups with contracting volatility — the classic pre-breakout signature.
The filter applies server-side at the ChartInk scan level. This means the count shown on each tab is always accurate for the selected setting — not post-filtered from a larger set. Changing the filter triggers a fresh fetch.
Mark Minervini’s SEPA (Specific Entry Point Analysis) methodology and his Volatility Contraction Pattern (VCP) are both built on the same core insight: stocks that coil before breaking out produce more reliable and powerful moves than stocks that break out from wide, choppy ranges.
Here is why volatility contraction matters:
“The tighter the pivot, the bigger the potential move. When price compresses into a very tight range and volume dries up, it’s a sign that supply has been exhausted. The next expansion in price has nowhere to go but up.”
Paraphrasing the SEPA methodology framework
The Tight Volatility filter captures this coiling behaviour quantitatively. When ATR(14) — the measure of how much a stock moves on a typical recent day — drops below ATR(50) (the medium-term average), the stock is demonstrating the mathematical signature of the coil.
Many screening tools use an absolute ATR threshold: require that the stock’s ATR is below 3% of its price. This works reasonably well for US large-caps. For Indian stocks, it is the wrong approach.
Indian momentum leaders routinely trade at ATR(14) percentages that would fail an absolute 3% threshold — yet they go on to deliver exceptional returns:
| Stock | Typical ATR(14)% | ATR < 3% passes? | Actual outcome |
|---|---|---|---|
| KPIT Technologies | 4–6% | ❌ Fails | Multi-year momentum winner, institutional darling |
| BSE Ltd | 5–8% | ❌ Fails | Exchange stock, strong institutional accumulation phase |
| RVNL | 6–10% | ❌ Fails | Infrastructure theme, powerful trend, multiple breakouts |
| Cochin Shipyard | 6–9% | ❌ Fails | Defence supercycle, outsized moves from tight bases |
| Reliance Industries | 1–2% | ✓ Passes | Massive liquidity — low ATR is structural, not a setup |
An absolute threshold of <3% would eliminate KPIT, BSE, RVNL, and Cochin Shipyard — all genuine momentum winners — while keeping Reliance Industries, whose low ATR% reflects its size and liquidity rather than a coiling setup. That is a broken filter.
The key insight is that what matters is not the absolute ATR level, but whether recent volatility is contracting relative to the stock’s own baseline.
Recent volatility has contracted from the 8% medium-term baseline to 5%. The stock is coiling relative to its own history. This is a valid setup signal regardless of the absolute ATR%.
Recent volatility (7%) is expanding beyond the medium-term baseline (6%). The stock is widening, not coiling. Not a setup worth filtering for.
ATR is expanding even at tiny absolute levels. Reliance’s low ATR% is structural — not a coiling setup. The relative comparison correctly identifies this.
Reliance is genuinely coiling here — recent range is tighter than its own baseline. ATR(14) < ATR(50) correctly identifies this as a potential setup.
The relative comparison is self-referential and scale-independent. It judges every stock against its own normal volatility range, not against a fixed threshold that only fits one market cap tier.
The filter is applied to the Near 52W High scan only. It then propagates automatically to Stage 2 + Near High and All Three through the existing set intersection logic — no extra code needed.
| Tab | Directly filtered? | Effect when Tight Volatility ON | Why |
|---|---|---|---|
| ⭐ All Three | No (intersection) | Narrows | allThree = stage2 ∩ nearHigh ∩ highVol. A tighter nearHigh = smaller intersection. |
| 🚀 Stage 2 + Near High | No (intersection) | Narrows | stageAndHigh = stage2 ∩ nearHigh. Same propagation logic. |
| 📈 Stage 2 | No | Unchanged | Stage 2 scan is independent — ATR filter not injected here. |
| 🎯 Near 52W High | Yes — directly | Narrows | ATR condition injected directly into this scan clause. |
| 📊 High Volume | No | Unchanged | Volume signal has no relationship with ATR contraction. |
| 💎 VCP Breakout | No | Unchanged | VCP already has structural contraction embedded in its price criteria. |
| 🌟 IPO Breakout | No | Unchanged | Recently listed stocks often lack sufficient ATR(50) history for reliable comparison. |
The ATR filter is applied in exactly one place (the nearHigh API call), yet it narrows three tabs simultaneously. This is because stageAndHigh and allThree are computed as intersections of nearHigh with other sets — a smaller nearHigh automatically means smaller intersections. No special handling required.
The filter is most useful when:
Open the extension with all filters off. This is your market health pulse. 0–3: quiet/down. 4–8: normal. 9+: broad strength.
Apply the quality baseline. This eliminates thinly traded micro-caps from every tab simultaneously.
Identify the highest-conviction setups of the day (all four signals firing in the Nifty 500 universe).
Switch to “Tight Volatility” in the dropdown. Now All Three and Stage 2+Near High show only stocks that are coiling — potentially the best setups of the ones already on your list.
Stocks that appear in both the standard list AND the tight volatility list are the strongest candidates — near their high, in Stage 2, AND coiling.
ATR contraction confirms the statistical signal. Now look at the actual chart: is the base tight and constructive? Is volume drying up during the consolidation? This is your final check before acting.
On many days — especially quiet or down-market sessions — enabling Tight Volatility on the All Three tab will show 0 stocks. This is the correct and expected behaviour, not a bug.
For a stock to appear in All Three with Tight Volatility ON, it must simultaneously: (1) be in a Minervini Stage 2 uptrend, (2) be within 2% of its 52-week high, (3) have volume above its 20-day average today, AND (4) have ATR(14) below ATR(50). On most days, no stock meets all four conditions. When zero appears: the setup simply isn’t there. The right response is not to lower your standards — it’s to turn off the filter and use the standard All Three list.
On strong market days when 3–5 stocks appear in All Three with Tight Volatility ON, those are worth close examination. You are looking at stocks that are:
Four independent checks. One stock. That is the highest possible signal density in the extension.
For traders interested in the implementation: the ATR condition is injected into the ChartInk scan clause before the API call, using the same pattern as the MCap filter:
The ATR condition is appended before the final ) ). This is valid ChartInk DSL — confirmed both by the precedent of existing indicator comparisons in the scan clauses (daily rsi(14) > 50 in VCP, daily sma(close,50) > daily sma(close,150) in Stage 2) and by live testing.
Because the filter runs at ChartInk’s server before results reach your browser, the stock count displayed is always the true count for the selected setting — not a post-filtered view of a larger result. This is the same reason the Index and MCap filters are also server-side: the numbers you see are real.
Free Chrome Extension
Install Finmagine Trader and scan 2,000+ NSE stocks for Stage 2 uptrends, VCP breakouts, near 52-week highs, and volume surges — in one click.
Install from Chrome Web Store →No account required • Works on Chrome, Edge, Brave • NSE stocks only
All 8 articles in the series:
Art.1: Introduction Art.2: All Three Signal Art.3: Stage 2 Stocks Art.4: VCP Breakout Art.5: TradingView Watchlist Art.6: IPO Breakout Art.7: Precision Filters