# How to find momentum stocks on the NSE

> The five fields a screener uses to measure momentum, the filters that stop a strength ranking turning into a chase list, and four ready NSE scans.

Canonical: https://patternsradar.com/blog/momentum-stocks-screener-nse

Published 2026-08-28.

Finding strong stocks was never the hard part. Sort the exchange by one-year return and there they are. The hard part is finding them before the strength itself has become the reason to stay away, and which measure you pick decides how often you get that wrong.

Momentum rests on the most stubborn finding in market research: over three to twelve months, what has gone up tends to keep going up more often than chance allows. Every measure below is a different way of asking how far up, and how recently.

## The five measures

Each is one Sift field or function, and each catches momentum at a different tempo.

**Return over a window.** `return_3m`, `return_1y`, and the shorter `return_1m`. A stock up 30% in a quarter is a momentum stock by anybody's definition. The academic version ranks by 6-to-12-month return and skips the most recent month; the screening version is a threshold with a sort on it.

**Rate of change.** `roc` is the raw percentage change against the close ten sessions ago. No smoothing, no bounds. Above zero is short-term strength and above 10 is acceleration. It has an artifact that caught me early on: one big day leaving the ten-bar window drops the reading with no new information arriving today. So I use it to find names and never to decide whether to keep one. The [ROC entry in the glossary](https://patternsradar.com/learn/rate-of-change.md) has the details.

**Distance from moving averages.** Price above the 50-day, above the 200-day, or the full stack, `close > sma(20) > sma(50) > sma(200)`. This defines a trend by its order rather than its speed. The stricter form asks that the average itself be rising: `sma(200) rising for 20 bars`.

**52-week proximity.** `close within 10% of high_52w`, or the signed `pct_from_52w_high`. A leader still near its yearly high has not rolled over. A stock up 60% on the year but sitting 25% off its high is a former leader wearing last quarter's numbers. The [52-week entry](https://patternsradar.com/learn/52-week-high-low.md) explains why the high side carries no overhead supply.

**ADX.** Wilder's trend-strength gauge, 0–100 and direction-blind. Below 20 the stock is drifting; above 25 there is a trend worth joining. It is slow and it lags at turns, which makes it a poor trigger and a good filter. `adx > 25` beside a price condition confines the list to stocks actually going somewhere. Pair it with `di_plus > di_minus` to give it a direction. See [ADX in the glossary](https://patternsradar.com/learn/adx.md).

A sixth field, `rel_volume`, is a different animal. It does not measure momentum at all. It measures whether today's participation is unusual, and I put `rel_volume > 1.5` beside a momentum condition when I want the strength to have been attended by somebody. The [RVOL entry](https://patternsradar.com/learn/relative-volume.md) covers baseline choice.

## The classic filters

A raw strength ranking is close to useless, because it returns stocks in order of how extended they are. Three filters fix most of that.

**A slow trend beside a fast measure.** Whatever finds the acceleration, ROC or a one-month return, pair it with something saying the acceleration has been going on for a while. `close > sma(50)` at minimum. `close > sma(200)` for a positional horizon.

**An RSI ceiling.** `rsi(14) < 70` drops the names that are momentum stocks and also one-sidedly bought over the last fortnight. It costs you the vertical ones. That is what it is for.

**A proximity condition.** `close within 10% of high_52w` keeps leaders that are still leading. Without it, a one-year return sort fills up with stocks that made their whole gain in a spike six months ago and have been sliding since.

Together, in one query:

```
where return_3m > 20
  and close > sma(50)
  and rsi(14) between 45 and 65
```

Strength condition, trend condition, extension ceiling. Nearly every momentum scan I have kept has that shape.

## Chasing

Momentum's cost is well documented. It crashes at the trend's end, and the end arrives when the stock is most obviously strong and most widely held. A scan that hands you the ten most extended names on the exchange every evening is a machine for buying tops.

What I do instead is buy strength on its pauses. A stock up 40% on the quarter that has spent two weeks going sideways above its 20-day average is a different proposition from the same stock the day after a 9% gap. Both are momentum stocks. Only one of them is at a price you can put a stop under. The `rsi(14) < 70` ceiling and the `between 45 and 65` band both say the same thing, and so does `close has been above sma(20) for 10 bars`: strong, and standing still today.

The other failure is holding through the roll-over. A momentum stock that closes below its 50-day for the first time in months has, by the definition you screened on, stopped being one. The screen that found the entry defines the exit.

## Four ready scans

Each is a preset you can open, run and edit. Every scan page carries a hit-rate replay over the past year of NSE sessions, close-to-close and without costs, so you can see what past matches did over 1, 5 and 20 sessions before relying on it.

**[Rate of change leaders](https://patternsradar.com/screener/roc-momentum.md)**, two-week acceleration that has not gone vertical:

```
where roc > 10 and close > sma(50) and rsi(14) < 70
```

The shortest-tempo scan here. It fires often and turns over quickly, so read it as a shortlist of what is moving this fortnight.

**[Three-month leaders](https://patternsradar.com/screener/quarter-leaders.md)**, the current cycle's strongest names, still above the 50-day:

```
where return_3m > 30 and close > sma(50)
sort by return_3m desc
```

**[One-year leaders](https://patternsradar.com/screener/one-year-leaders.md)** is the positional version. The proximity filter is what stops it returning former leaders:

```
where return_1y > 50
  and close within 10% of high_52w
sort by return_1y desc
```

**[Strong directional trend](https://patternsradar.com/screener/adx-strong-trend.md)** defines momentum structurally. ADX above 30, buyers in control, averages stacked, RSI still under 70.

```
where adx > 30
  and di_plus > di_minus
  and close > sma(50) > sma(200)
  and rsi(14) < 70
```

A fifth, **[Ten sessions above the 20-day](https://patternsradar.com/screener/persistent-trend.md)**, is the pause-finder: persistence rather than one good day, with `adx > 25` confirming there is a trend to persist in.

## Reading the lists

A momentum list tells you the trend is currently in order. Where the stop goes, what invalidates the trend, whether the replay at your horizon shows anything at all, those are yours.

If you want the pause-entry version of all this, the [pullback](https://patternsradar.com/screener/pullback-in-uptrend.md) and [strong-but-quiet](https://patternsradar.com/screener/strong-and-quiet.md) scans exist for exactly that, and the [momentum hub](https://patternsradar.com/scans/momentum.md) has the rest of the family. Open the pullback scan and run its replay at 5 sessions before you look at a single name on it. The [swing trading guide](https://patternsradar.com/blog/swing-trading-screener-india.md) shows how a momentum trend filter sits under a setup and a trigger.

## Run the scans from this guide

Each opens live on today's data, and each can be replayed against a year of sessions before you trust it.

- [Rate of change leaders](https://patternsradar.com/screener/roc-momentum.md): Rate of change above 10 with RSI still under 70, price above the 50-day average.
- [One-year leaders](https://patternsradar.com/screener/one-year-leaders.md): Up more than 50% over a year and still within 10% of the high, ranked by return.
- [Strong directional trend](https://patternsradar.com/screener/adx-strong-trend.md): ADX above 30, +DI over −DI, the averages stacked, RSI still under 70.
- [Three-month leaders](https://patternsradar.com/screener/quarter-leaders.md): Up more than 30% in a quarter and still above the 50-day average, biggest gain first.
- [Ten sessions above the 20-day](https://patternsradar.com/screener/persistent-trend.md): Ten straight closes above the 20-day average with ADX over 25. Two weeks without a wobble.

---

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.
