# Volatility stock scanners for NSE

> Volatility screeners for NSE stocks. Bollinger squeezes, NR7 days, range expansions, gaps that held and gaps that failed, plus both 52-week extremes.

Canonical: https://dev.patternsradar.com/scans/volatility

Volatility is the one market property nearly everyone agrees is predictable: it clusters. Quiet sessions bunch together, loud ones follow, and the handoff between the two regimes is where these scans live. On the compression side sit the Bollinger squeeze, the narrow-range day and NR7, all of them looking for a stock coiled unusually tight against its own history. On the expansion side are the range-expansion days and the gaps, which catch the resolution and then ask the only question worth asking about it: did the move hold into the close? The 52-week extremes bracket the whole space, from fresh lows to stocks down 15% in a month. None of this predicts direction. It predicts that something is about to happen, or confirms that something just did, and direction comes from how the session closed.

## The scans (16)

### Bollinger squeeze

https://dev.patternsradar.com/screener/squeeze.md

```sift
where bb().width < 0.08 and close > sma(200)
```

Bollinger width under 0.08 in a stock above its 200-day average. Compressed ranges tend to resolve. Volatility is the one thing in markets that reliably mean-reverts. Quiet periods get followed by loud ones. A squeeze says nothing about direction, only that the range has compressed to a point where it is unlikely to stay.

Top 500 by turnover.

### Wide-range movers

https://dev.patternsradar.com/screener/high-atr-movers.md

```sift
where high - low > 1.5x atr(14) and turnover > 10cr
```

Today's range wider than 1.5 ATR, on more than ₹10 crore of turnover. A ₹50 stock and a ₹5,000 stock cannot be compared on the raw size of their daily range. Measuring today's range against the stock's own average true range normalises that away and lets the two sit in one list honestly. The turnover floor keeps out the illiquid names, where a wide range means nine trades.

Top 250 by turnover.

### Gap up and hold

https://dev.patternsradar.com/screener/gap-up-hold.md

```sift
where open > high[-1] and close > open
```

Opened above yesterday's high and closed above the open. Gaps are common. Gaps that hold are not. Opening above the previous session's entire range and then closing above that open means the gap was bought into, which is the difference between a continuation and a trap.

Top 500 by turnover.

### Gap down and fail

https://dev.patternsradar.com/screener/gap-down-break.md

```sift
where open < low[-1] and close < open
```

Opened below yesterday's low and closed below the open. The bearish mirror of gap-and-hold, and useful whether you are short or simply long the name. Opening under the whole of yesterday's range and then closing weaker still means the sellers were not done at the open.

Top 500 by turnover.

### Up 15% in a month

https://dev.patternsradar.com/screener/big-move-up.md

```sift
where close up 15% over 21 bars and close > sma(50)
```

A decisive one-month advance, still trading above its 50-day. Twenty-one sessions is about a calendar month of trading. A 15% advance over that span is large enough to be deliberate rather than drift. The 50-day condition confirms the move has not already been given back.

Top 500 by turnover.

### Fresh 52-week low

https://dev.patternsradar.com/screener/fresh-52-week-low.md

```sift
where close is lowest in 52w
```

The lowest close in a year. New lows are where the damage is, and they are worth watching for two opposite reasons. This is the worst place to buy and the best place to look for capitulation. The scan takes no view on which. It reports the fact, and the hit-rate panel will tell you how that fact has resolved historically.

Top 500 by turnover.

### Within 5% of the 52-week low

https://dev.patternsradar.com/screener/near-52-week-low.md

```sift
where close within 5% of low_52w and volume > 1.2x avg(volume, 20)
```

Within 5% of the 52-week low on above-average volume. Basing, or still falling. A stock near its lows with volume picking up sits at the point where the outcome divides. Either the sellers are exhausting and a base is forming, or the next leg has begun. The volume condition is what makes this worth looking at instead of an inert list of losers.

Top 500 by turnover.

### Narrow range day

https://dev.patternsradar.com/screener/narrow-range-day.md

```sift
where true_range < 0.5x atr(14) and close > sma(50)
```

A day's range under half the stock's own ATR, above the 50-day average. Volatility clusters, and its absence clusters too. An abnormally quiet session tends to sit just before an abnormally loud one, because quiet is what an exhausted argument looks like. Measuring the range against the stock's own ATR instead of a fixed percentage is what lets one definition of "quiet" fit both a PSU bank and a smallcap.

Top 500 by turnover.

### NR7: narrowest range in seven

https://dev.patternsradar.com/screener/nr7.md

```sift
where high - low is lowest in 7 bars and close > sma(50)
```

Today's high-low span is the tightest of the last seven sessions. Toby Crabel's NR7 is the oldest volatility-contraction setup in print. The narrowest range of the week, taken as a marker that a directional day is near. It says nothing about which direction, and NR7 traders handle that by bracketing the little bar and taking whichever side breaks. The 50-day filter here leans the odds toward breaks that go up.

Top 500 by turnover.

### Range expansion up

https://dev.patternsradar.com/screener/range-expansion-up.md

```sift
where true_range > 2x atr(14) and change > 0
```

A day twice the stock's normal size, resolved in the buyers' favour. The opposite bookend to the narrow-range scans. This is the loud day the quiet ones lead to. A true range twice the ATR means the session broke somebody's hand: stops run, a level given up, news absorbed. The positive close says which side absorbed it. Expansion days set the tone for the sessions that follow more often than chance allows.

Top 500 by turnover.

### Down 15% in a month

https://dev.patternsradar.com/screener/big-move-down.md

```sift
where close down 15% over 21 bars
```

Down 15% or more over 21 sessions. The damaged list, read either way. The mirror of the big-move-up scan, and two kinds of trader read it in opposite directions. Mean-reversion buyers comb it for overreactions. Trend traders comb it for confirmed breakdowns worth pressing. The scan itself stays neutral about who is right on any given name. A month-long 15% decline is a stock where something material changed, and that is worth knowing either way.

Top 500 by turnover.

### Gap down bought back

https://dev.patternsradar.com/screener/gap-down-recovery.md

```sift
where open < close[-1] * 0.98 and close > open
```

Opened more than 2% below yesterday's close and finished above the open. The morning panic found buyers. A gap down is the overnight news priced in a single print. What happens next is the market's verdict on whether that price was right. When a 2% hole gets bought back to a close above the open, the sellers got their exit and the stock ran out of them. That is the anatomy of a bear trap, visible on a daily bar.

Top 500 by turnover.

### Volatility contraction near highs

https://dev.patternsradar.com/screener/volatility-contraction.md

```sift
where close within 5% of high_52w
  and bb().width < 0.08
  and close > sma(200)
```

Within 5% of the 52-week high, Bollinger width under 0.08, above the 200-day. The VCP shape written as a query. The pattern Minervini named is really two facts happening at once. The stock is holding near its highs and the swings are getting smaller, which is what it looks like when the sellers are finished and the buyers are not yet forced to pay up. Band width under 0.08 is the compression. The 200-day filter confirms the trend the coil sits inside. What the scan cannot see is the pattern's third act, the volume dry-up, and that is what its companion scan covers.

Top 500 by turnover.

### Volume dry-up near highs

https://dev.patternsradar.com/screener/volume-dry-up.md

```sift
where close within 5% of high_52w and rel_volume < 0.6
```

Within 5% of the 52-week high on under 60% of its normal volume. Supply running out. A stock that stays near its highs while volume falls to 60% of normal is a stock nobody is willing to sell at these prices. On the accumulation reading, that is the quiet before the mark-up. The bearish reading is that nobody cares. The first high-volume day that follows usually settles which it was, and that is why this scan pairs with the volatility-contraction one instead of replacing it.

Top 500 by turnover.

### Wide-body candle

https://dev.patternsradar.com/screener/wide-body-candle.md

```sift
where abs(close - open) > 2x avg(abs(close - open), 20)
  and rel_volume > 1.5
sort by abs(close - open) / open desc
```

A candle body more than twice its 20-day average on heavy volume, biggest body first. The body of a candle runs from the open to the close and ignores the wicks. It is the part of the day that was decided rather than merely visited. `abs(close - open)` is that distance, and comparing it to its own 20-day average adapts the bar to each stock, since a 4% body is ordinary in one name and extraordinary in another. Twice the norm on heavy volume is a session where something happened, and the sort puts the biggest bodies first. Direction is deliberately left out. Read it from the sign of the move.

Top 500 by turnover.

### Whipsaw stocks

https://dev.patternsradar.com/screener/whipsaw-stocks.md

```sift
where count(abs(change) > 3, 20) >= 5
```

Five or more of the last twenty sessions moved over 3% either way. A stop in these names gets hit on noise. Five or more sessions that moved more than 3% in either direction, out of the last twenty, is a stock that is being repriced violently and often. `abs(change)` folds the two directions into one count, which is exactly what a volatility scan wants: a stock that gaps up 4% and gives it back the next day has had two such sessions, not zero. I read this one as much as a list to avoid as a list to trade. Any stop inside a 3% band on these names is noise, and any position has to be sized for it.

Top 500 by turnover.

## Common questions

### What is a volatility squeeze?

A stretch where a stock's trading range contracts well below its own norm, measured here by Bollinger band width or by the day's range against ATR. Squeezes tend to precede directional moves and say nothing about which direction.

### What is an NR7 day?

The narrowest high-to-low range of the last seven sessions, from Toby Crabel's work on range contraction. NR7 traders bracket the small bar with orders on both sides and take whichever way it breaks, on the finding that contraction days precede expansion days.

### Are gap-up stocks worth buying?

Watch the close. A gap up that holds its open all session means the overnight buyers got reinforced; one that fades below the open trapped them. Every gap scan here conditions on the close.

## More scan categories

- [Breakout stock scanners for NSE](https://dev.patternsradar.com/scans/breakouts.md)
- [Reversal stock scanners for NSE](https://dev.patternsradar.com/scans/reversals.md)
- [Momentum stock scanners for NSE](https://dev.patternsradar.com/scans/momentum.md)
- [Delivery percentage scanners for NSE](https://dev.patternsradar.com/scans/delivery.md)
- [Candlestick pattern scanners for NSE](https://dev.patternsradar.com/scans/candlestick-patterns.md)
- [F&O derivatives scanners for NSE](https://dev.patternsradar.com/scans/derivatives.md)
- [Fundamental stock scanners for NSE](https://dev.patternsradar.com/scans/fundamentals.md)

The whole library: https://dev.patternsradar.com/scans.md.

---

Price and delivery data from the [eod2](https://github.com/BennyThadikaran/eod2) dataset: National Stock Exchange of India end-of-day files, split- and bonus-adjusted, updated after each close. Not affiliated with or endorsed by NSE. PatternsRadar is a research tool. Nothing here is investment advice or a recommendation to buy or sell anything.
