PatternsRadar
Sign in

Fundamental stock scanners for NSE

These scans read what the filings say rather than what the chart does: who owns the company, how that ownership is shifting, how big the business is, which sector block it trades with. The shareholding scans are the heart of the group. A promoter stake change is the closest thing to a public insider signal Indian markets offer, and a promoter adding or cutting a full percentage point in one quarter did it deliberately, with a filing date attached. The dividend scans are the income half. Yield against today's price is the easy question; the harder ones are whether the company paid in every one of the last five years, whether the payment is growing, and whether it was just cut. The highest yields on any given session mostly belong to prices that fell, and only the record tells the two apart. Dividend amounts are counted by ex-date and split-adjusted to match the price, so a bonus issue never reads as a cut. Sector and industry scans express rotation directly, membership first and technical condition second, which is a query shape no price-only screener can write. Everything here is point-in-time. A scan replayed on a past date sees only what had been filed by that date, so a result published after the close counts from the next session, and a restatement counts from its own filing rather than backwards. That discipline is what makes the hit-rate replays on these pages worth reading. Coverage is the standing caveat: fundamentals exist only where a filing has been collected and parsed, about three in four listed equities on a given day, and a stock without data is NULL, which never matches a condition. These scans understate.

Promoter stake up more than half a percentage point last quarter, in a stock above its 200-day average.

where promoter_change_qoq > 0.5
  and close > sma(200)

Top 500 by turnover

Promoter stake cut by more than a percentage point in one quarter.

where promoter_change_qoq < -1

Top 500 by turnover

Promoters holding over 70% with the price above its 200-day average. A tight float and aligned owners.

where promoter_pct > 70 and close > sma(200)

Top 500 by turnover

FIIs and DIIs each holding more than 15%. Both kinds of institutional money in the same name.

where fii_pct > 15 and dii_pct > 15

Top 500 by turnover

Public shareholders holding under a quarter of the company.

where public_pct < 25

Top 500 by turnover

More than a fifth of the promoter holding pledged as loan collateral. A risk screen.

where promoter_pledged_pct > 20

Top 500 by turnover

Market cap above ₹20,000 crore with RSI under 40. Size doing the quality filtering.

where marketcap > 20000cr and rsi(14) < 40

Top 500 by turnover

Under fifteen times trailing earnings and above the 200-day average. Cheap, and no longer ignored.

where pe < 15 and close > sma(200)

Top 500 by turnover

Latest quarter profit up 25% year on year with revenue up 15%. Growth the top line can explain.

where profit_growth_yoy > 25
  and revenue_growth_yoy > 15

Top 500 by turnover

Profit compounding above 15% a year for five years, under 30 times earnings, interest costs up less than 5%, financials excluded.

where profit_cagr_5y > 15
  and pe < 30
  and interest_cost_growth_yoy < 5
  and sector is not "Financial Services"

Top 500 by turnover

Information Technology names above their 200-day average with RSI over 55.

where sector is "Information Technology"
  and close > sma(200) and rsi(14) > 55

Top 500 by turnover

Banking stocks within 3% of their 52-week high.

where industry is "Banks" and close within 3% of high_52w

Top 500 by turnover

The Commodities macro-sector, filtered to stocks above their 200-day average. A cycle scan in one line.

where macro_sector is "Commodities" and close > sma(200)

Top 500 by turnover

Trailing-year yield above 4% in companies worth over ₹1,000 crore, highest first. The market-cap floor keeps the penny-stock yields out.

where dividend_yield(1y) > 4% and marketcap > 1000cr
  sort by dividend_yield(1y) desc

Top 500 by turnover

A dividend in every one of the last five years, yielding over 2% today.

where dividend_years(5y) == 5 and dividend_yield(1y) > 2%

Top 500 by turnover

Dividend per share compounding above 10% a year across five years, with no year skipped.

where dividend_cagr(5y) > 10 and dividend_years(5y) == 5
  sort by dividend_cagr(5y) desc

Top 500 by turnover

Ten consecutive years of dividends, every year the record can see, with a yield over 1%. The NSE's closest thing to a dividend-aristocrat list.

where dividend_streak_years >= 10 and dividend_yield(1y) > 1%

Top 1000 by turnover

Yielding over 3% and trading above the 200-day average. High yields usually come from falling prices; these prices are rising.

where dividend_yield(1y) > 3% and close > sma(200)

Top 500 by turnover

More than 20% below the 52-week high, yielding over 3%, and paid in each of the last three years.

where dividend_yield(1y) > 3%
    and dividend_years(3y) == 3
    and pct_from_high(1y) < -20

Top 500 by turnover

Trailing-year dividends down more than 25% on the year before, from a company that still paid something. The filing says why.

where dividend_growth_yoy < -25 and dividend(1y) > 0

Top 1000 by turnover

Common questions

What does a change in promoter holding tell you?

Promoters are the ultimate insiders, and their stake changes are disclosed quarterly. An increase is unambiguous: they bought with their own money. A decrease needs reading, because it can mean genuine selling, pledge invocation, dilution from a fundraise, or a regulatory float requirement. The scan points at the stock. The filing explains the move.

Why point-in-time fundamentals?

Because a replay lies without it. If a scan run on last March sees earnings that were filed in May, it is trading on information nobody had, which is look-ahead bias in its most common form. Point-in-time means a number becomes visible only from its filing date, so a replayed scan holds only the stocks it could genuinely have found that day.

How is the dividend yield calculated?

Rupees per share paid over the trailing twelve months, dated by ex-date, divided by the day's close, both on the same split-adjusted basis, so a stock that split after paying does not show a doubled yield. A company that paid nothing reads 0 rather than empty. `dividend_yield(3y)`, `dividend_cagr(5y)` and `dividend_years(5y)` ask the same questions over other spans.

Why does a fundamental scan return fewer stocks than a price scan?

Coverage. Every listed instrument has a price bar, but a fundamental value exists only where a filing has been collected and parsed. ETFs and indices never file results at all. A stock with no data is NULL, and NULL matches nothing.