# RSI divergence screener for NSE stocks

> What regular bullish and bearish RSI divergence measure, why a single-bar scan has to approximate them with offsets, what that approximation costs, and two ready NSE scans.

Canonical: https://patternsradar.com/blog/rsi-divergence-screener-nse

Published 2026-08-28.

Most "RSI divergence scanners" are either a chart overlay you draw by hand or a page that lists nothing. There is a good reason for that, and it is worth understanding before you trust any of them, mine included.

A divergence is a disagreement between price and momentum. The stock makes a new low and RSI does not, or a new high that RSI refuses to confirm. The reading does not tell you how one-sided the tape has been. It tells you the one-sidedness is fading while price is still making progress.

## What divergence measures

RSI compares the average size of up-closes to down-closes over fourteen sessions. When a stock falls to a new low over several weeks and RSI's low is higher than it was at the previous price low, the arithmetic is saying that the second leg down took smaller moves and more sessions to cover the same ground. The sellers are still winning. They are winning with less force. That is a **regular bullish divergence**: lower low in price, higher low in RSI.

The **regular bearish divergence** is the mirror. A new high in price on a lower high in RSI. Each push up is made with less one-sided buying than the one before it, and the trend runs out of momentum before it runs out of price.

Neither reading is a top or a bottom. It is a change of pace, and changes of pace precede turns more often than they cause them. The [RSI glossary entry](https://patternsradar.com/learn/rsi-divergence.md) covers the hidden-divergence variant, which is the continuation reading of the same comparison.

## Why it is hard to scan

A textbook divergence is drawn between two swing points. A swing low is only known in hindsight, because it is a low by virtue of price having risen afterwards. A scan is evaluated on the current bar and the current bar has no afterwards. Any screener claiming to find divergences as they form is either looking back far enough to have confirmed the first swing and hoping the second one is happening now, or it is approximating.

Sift approximates. I would rather write that down than dress offsets up as swing detection:

```
where low within 3% of min(low, 8w)
  and rsi(14) > rsi(14)[-20] + 3
  and rsi(14) < 45
```

Read it as three claims. The stock's low today is within 3% of its lowest low of the last forty sessions, so it is at or pressing a two-month low. RSI today is at least three points higher than it was twenty sessions ago, which in a stock now sitting at a two-month low stands in for the reading at the previous low. And RSI is still under 45, which confines the list to stocks whose momentum is still depressed. A divergence that has already resolved into RSI 60 is history.

Run it: **[RSI bullish divergence](https://patternsradar.com/screener/rsi-bullish-divergence.md)**.

The bearish form swaps every inequality:

```
where high within 3% of max(high, 8w)
  and rsi(14) < rsi(14)[-20] - 3
  and rsi(14) > 55
```

Price at or near a two-month high. RSI at least three points lower than twenty sessions ago. RSI still above 55, so that "diverging" does not get confused with "already falling". Run it: **[RSI bearish divergence](https://patternsradar.com/screener/rsi-bearish-divergence.md)**.

## What the approximation costs

The offset is a guess about where the previous extreme sat. If the earlier low actually formed at bar 12 or bar 30 rather than bar 20, the comparison lands on a bar going into or coming out of it, and the divergence gets overstated or missed entirely.

I tried widening the price tolerance from 3% to 5% to catch more of them. It does catch more, and it also fills the list with stocks drifting sideways near a low, where RSI is higher for the boring reason that nothing much is happening. The three-point margin exists for the same reason. A divergence of half an RSI point is noise with a name on it.

There is a larger cost that no construction fixes. Divergence is a condition and never a trigger. A stock in a real downtrend prints one bullish divergence after another, each one resolved by a further lower low, and every single one looked exactly like this on the day it was scanned. So the scan builds a watchlist and something else confirms it. The two I pair it with:

- **[RSI oversold, turning up](https://patternsradar.com/screener/rsi-oversold-turn.md)**: RSI crossing back above 30 within the last three sessions, with the 200-day intact. A divergence that is also on this list has started to resolve.
- **[RSI reclaiming 50](https://patternsradar.com/screener/rsi-50-reclaim.md)**: the midline cross, which in an uptrend is the more frequent "pullback over" signal. A stock that diverged at the low and then reclaimed 50 has completed the sequence the divergence only hinted at.

Two steps, then. Divergence scan in the evening to build the list. Turn scan over the following sessions to tell you which names on it did anything.

## Check it against history

Every threshold above is a choice: eight weeks, 20 bars, 3%, three RSI points, 45 and 55. Choices are checkable. Each scan page carries a hit-rate replay that re-runs the query across the past year of NSE sessions and reports what its matches did over the next 1, 5 and 20 sessions. It is a sketch rather than a backtest, close-to-close, no costs, no slippage, universe as it stands today. Read the hit rate together with the size of the wins and the losses, never alone.

For divergence specifically, what the replay shows you is how often the approximation catches the start of a base and how often it catches the middle of a decline. On a market that has been trending, the bearish scan returns far more names than the bullish one, as it did the day I wrote this, and most of them keep going for a while. That is the property of divergence the textbooks underplay. The replay is where you find out how long "a while" has been.

## Editing the scan

The presets are ordinary Sift, so the editor is the customisation. Tighten the lookback to `min(low, 25 bars)` for a swing horizon or loosen it to `60 bars` for a positional one, and move `rsi(14)[-20]` in step so the comparison bar stays near the middle of the window. Add `close > sma(200)` to the bullish form to keep it to pullbacks inside uptrends, which is the context where a divergence resolving upward is the likelier outcome. Add `rel_volume > 1.5` to either one to insist the divergent bar had some participation behind it.

Then replay the edited version. That is the whole reason the replay panel sits on the page.

## 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.

- [RSI bullish divergence](https://patternsradar.com/screener/rsi-bullish-divergence.md): Price near a two-month low while RSI sits at least three points above where it was a month ago. The selling is running out of momentum before it runs out of price.
- [RSI bearish divergence](https://patternsradar.com/screener/rsi-bearish-divergence.md): Price near a two-month high while RSI reads three points below its level of a month ago.
- [RSI oversold turning up](https://patternsradar.com/screener/rsi-oversold-turn.md): RSI back above 30 within the last three sessions, in a stock still holding its 200-day average.
- [RSI reclaiming 50](https://patternsradar.com/screener/rsi-50-reclaim.md): RSI crossing back above its midline in a stock that never lost its long-term trend.

---

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.
