Earnings Growth Consistency on Indian Stocks (NSE): 25-Year Backtest

Screened NSE for 3-year net income growth streaks, ROE > 8%, D/E < 2.0. Result: 10.06% CAGR vs 12.06% Sensex (-1.99%). Strong absolute returns but underperforms local benchmark. 2009: +48.9% excess, 2014: +47.4% excess. 7 cash years (2000-2006), 18 invested years.

Earnings Growth Consistency vs Sensex: India (NSE) cumulative growth 2000-2025. 10.06% CAGR vs 12.06% Sensex. Cash 2000-2006; invested 2007-2024.

Earnings Growth Consistency on Indian Stocks (BSE + NSE): 25-Year Backtest

India delivers strong absolute returns — 10.06% CAGR — but doesn't beat the local Sensex benchmark, which returned 12.06% over the same period. -1.99% underperformance per year vs the Sensex. This is the honest result when comparing Indian equity returns to the Indian market, not to a USD benchmark like SPY.

Contents

  1. Method
  2. The Signal
  3. The Screen (SQL)
  4. What We Found
  5. Strong absolute returns but underperforms the Sensex.
  6. Annual returns (July-to-July)
  7. 2007: First invested year shows underperformance
  8. 2008-2009: Strong absolute returns but mixed vs Sensex
  9. 2014: The Modi election year
  10. 2018: The worst year
  11. Why India Doesn't Beat the Sensex
  12. Backtest Methodology
  13. Limitations
  14. Takeaway
  15. Part of a Series

Two important caveats before going further. First: the first seven years of the backtest (2000-2006) show no invested periods. NSE data coverage in FMP for that era is insufficient to run the screen. The reported CAGR reflects 18 invested years (2007-2024), not 25. Second: this backtest uses NSE only (not BSE+NSE as in prior studies) to avoid dual-listing bias.

With those caveats stated: the 2007-2024 results are clean. India's equity market was in a secular bull market over this period, and the Sensex outperformed. The earnings consistency filter delivers 10.06% absolute, but the broad market delivered more.

Data: FMP financial data warehouse, 2000–2025. Updated March 2026.


Method

Universe: NSE-listed stocks with market cap > ₹5B, actively trading Period: July 2000 to July 2025 (25 annual periods; 7 uninvested due to data coverage, 18 invested) Rebalancing: Annual, each July. Top 30 by ROE, equal weight. Benchmark: Sensex (BSE Sensex index, INR) Execution: Next-day close (MOC) Cash rule: Hold cash if fewer than 10 stocks qualify. Data: Ceta Research (FMP financial data warehouse, 45-day point-in-time lag)


The Signal

Earnings streak: Net income grew year-over-year in each of the last three fiscal years. Four data points required. All must be positive.

ROE > 8%: Filters for capital efficiency. India has a large number of profitable micro-caps; the ROE screen combined with the MCap threshold keeps the portfolio in investable quality businesses.

D/E < 2.0: Screens out financially distressed or excessively leveraged issuers. Indian infrastructure and public sector enterprises often carry high debt; this filter removes them.

Portfolio: top 30 by ROE descending, equal weight.


The Screen (SQL)

WITH
fy_income AS (
    SELECT symbol, netIncome, dateEpoch,
        ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY dateEpoch DESC) AS rn
    FROM income_statement
    WHERE period = 'FY'
      AND netIncome IS NOT NULL
      AND symbol IN (SELECT DISTINCT symbol FROM profile WHERE exchange IN ('NSE'))
),
streak AS (
    SELECT y1.symbol
    FROM fy_income y1
    JOIN fy_income y2 ON y1.symbol = y2.symbol AND y2.rn = 2
    JOIN fy_income y3 ON y1.symbol = y3.symbol AND y3.rn = 3
    JOIN fy_income y4 ON y1.symbol = y4.symbol AND y4.rn = 4
    WHERE y1.rn = 1
      AND y1.netIncome > y2.netIncome
      AND y2.netIncome > y3.netIncome
      AND y3.netIncome > y4.netIncome
      AND y4.netIncome > 0
)
SELECT
    s.symbol,
    p.companyName,
    p.sector,
    ROUND(k.returnOnEquityTTM * 100, 1) AS roe_pct,
    ROUND(f.debtToEquityRatioTTM, 2)    AS debt_to_equity,
    ROUND(k.marketCap / 1e9, 2)         AS market_cap_b
FROM streak s
JOIN key_metrics_ttm k ON s.symbol = k.symbol
JOIN financial_ratios_ttm f ON s.symbol = f.symbol
JOIN profile p ON s.symbol = p.symbol
WHERE k.returnOnEquityTTM > 0.08
  AND f.debtToEquityRatioTTM >= 0
  AND f.debtToEquityRatioTTM < 2.0
  AND k.marketCap > 5000000000
  AND p.exchange IN ('NSE')
ORDER BY k.returnOnEquityTTM DESC
LIMIT 30

Run this query on Ceta Research


What We Found

Earnings Growth Consistency vs S&P 500: India (BSE+NSE) cumulative growth 2000-2025.
Earnings Growth Consistency vs S&P 500: India (BSE+NSE) cumulative growth 2000-2025.

Strong absolute returns but underperforms the Sensex.

Metric Earnings Consistency Sensex
CAGR 10.06% 12.06%
Excess CAGR -1.99% -
Sharpe Ratio 0.152 -
Max Drawdown -18.4% -
Down Capture 24.3% 100%
Win Rate (annual vs Sensex) 52% -
Avg Stocks when invested 25.2 -
Cash Periods 7 of 25 (2000-2006) -

The strategy's 10.06% CAGR is solid. But India's broad equity market, as measured by the Sensex, delivered 12.06% over the same period. The earnings consistency filter doesn't beat the market in India — it underperforms by 2% per year. This is the opposite of what we see in Anglo-Saxon markets, where the same filter beats local benchmarks.

Annual returns (July-to-July)

Earnings Consistency vs S&P 500 annual returns 2000-2024, India (BSE+NSE).
Earnings Consistency vs S&P 500 annual returns 2000-2024, India (BSE+NSE).

Year Portfolio Sensex Excess Note
2000 0.0% -29.3% +29.3% Cash (data coverage)
2001 0.0% -4.1% +4.1% Cash (data coverage)
2002 0.0% +9.6% -9.6% Cash (data coverage)
2003 0.0% +35.2% -35.2% Cash (data coverage)
2004 0.0% +49.4% -49.4% Cash (data coverage)
2005 0.0% +47.0% -47.0% Cash (data coverage)
2006 0.0% +37.1% -37.1% Cash (data coverage)
2007 -11.3% -6.8% -4.5% First invested year
2008 +6.5% +7.3% -0.7% Both positive in this July-July period
2009 +68.0% +19.1% +48.9% Strong recovery year
2010 +14.5% +7.8% +6.7%
2011 -6.3% -7.5% +1.3%
2012 +9.7% +11.9% -2.1%
2013 +41.9% +32.8% +9.1%
2014 +55.5% +8.1% +47.4% Modi election rally
2015 -0.2% -2.4% +2.1%
2016 +21.5% +14.4% +7.1%
2017 +8.0% +12.9% -5.0%
2018 -15.7% +12.9% -28.6% Worst miss
2019 +3.2% -10.0% +13.2%
2020 +62.5% +46.4% +16.1% COVID recovery
2021 -18.4% +1.4% -19.8%
2022 +22.1% +22.5% -0.4%
2023 +37.0% +21.8% +15.2%
2024 +5.4% +5.0% +0.4%

2007: First invested year shows underperformance

2007: portfolio -11.3% vs Sensex -6.8% (-4.5% excess). The first year the strategy had enough NSE data to invest immediately showed the filter underperforming the broad market.

2008-2009: Strong absolute returns but mixed vs Sensex

2008 (July 2008 to July 2009): portfolio +6.5% vs Sensex +7.3%. Both positive. This period includes the Oct 2008 crash and the early 2009 recovery. By July 2009, both the earnings portfolio and the Sensex had recovered to slightly positive for the 12-month period. The portfolio barely underperformed (-0.7%).

2009: +68.0% vs Sensex +19.1% (+48.9% excess). India's recovery year. Companies that had grown earnings consistently entered 2009 with intact balance sheets and accelerated as domestic demand surged and global risk-on flows returned to emerging markets. This is the single best excess year in the India study vs the Sensex.

The 2009 year is the defining positive data point. No other year shows +48.9% excess vs the local benchmark.

2014: The Modi election year

+55.5% in 2014 vs Sensex +8.1% (+47.4% excess). This was the year Narendra Modi's BJP won a decisive parliamentary majority. Indian equity markets surged. The earnings consistency portfolio participated fully — the +55.5% absolute return is the second-best year in the study. And vs the Sensex, +47.4% excess is the second-best relative year after 2009.

This is a real result. But it's also a concentration of political risk. A single election outcome created +47% excess in one year.

2018: The worst year

2018: -15.7% vs Sensex +12.9% (-28.6% excess). The single worst miss in the India study. India's equity market suffered from rising US interest rates (which pulled capital from emerging markets), rupee depreciation, and IL&FS Infrastructure's debt crisis. The Sensex still gained +12.9%. The earnings consistency portfolio fell -15.7%. A 28-point gap.


Why India Doesn't Beat the Sensex

The earnings consistency signal delivers 10.06% CAGR but underperforms the Sensex by -1.99% per year. Three structural reasons explain this:

  1. India's broad bull market. The Sensex itself returned 12.06% per year from 2007-2024 (the invested period). India's equity market as a whole was in a secular bull driven by domestic growth, foreign inflows, and corporate earnings expansion. A quality filter that narrows the universe to consistent earners missed some of the highest-growth companies.
  2. Growth beats quality in India. Indian markets reward growth more than defensive quality. The Sensex includes high-growth financials, energy, and technology companies whose earnings are lumpy but whose returns are driven by multiple expansion. The earnings consistency filter excludes these companies and selects steady earners — IT services, pharma, FMCG. Those sectors underperformed India's growth sectors over the period.
  3. High-volatility years favor the Sensex. India's 2004-2006 bull run (cash years for this portfolio but huge for the Sensex), 2018 NBFC resilience (+12.9% Sensex vs -15.7% portfolio), and 2021-2022 recovery all show the Sensex participating in high-amplitude moves that the quality filter missed.

The caveat: the Sharpe of 0.152 is low. The strategy's returns are volatile, and the Sensex's returns were both higher and more consistent over this period. India is the one major market where the earnings consistency filter doesn't add value vs the local benchmark.


Backtest Methodology

Parameter Choice
Universe NSE, Market Cap > ₹5B
Signal 3-year net income growth streak, ROE > 8%, D/E < 2.0
Portfolio Top 30 by ROE, equal weight
Rebalancing Annual (July)
Execution Next-day close (MOC)
Cash rule Hold cash if < 10 qualify
Benchmark Sensex (BSE Sensex index, INR)
Period 2000-2025 (7 cash years: 2000-2006, 18 invested years: 2007-2024)
Data lag Point-in-time, 45-day lag

Limitations

7 cash periods (2000-2006). The CAGR of 10.06% is computed over all 25 annual periods, but the portfolio was invested in only 18 of them. The 2000-2006 cash years missed India's early bull run (Sensex returned +49.4% in 2004 alone, +47.0% in 2005). This understates the strategy's underperformance vs the Sensex over the full market cycle.

NSE only, not BSE+NSE. This backtest uses NSE-listed stocks only, not both exchanges. BSE was excluded to avoid dual-listing bias (38% of stocks trade on both exchanges). Prior studies used BSE+NSE and showed different results.

Political event concentration. The 2014 +55.5% year reflects the Modi election rally. That single year contributes meaningfully to the multi-year CAGR but is inseparable from political timing.

Emerging market volatility. The Sharpe of 0.152 is low. India's return stream has high standard deviation, and the Sensex delivered better risk-adjusted returns. High absolute return, yes. Risk-adjusted alpha, no.


Takeaway

India's earnings consistency portfolio delivers strong absolute returns (10.06% CAGR) but underperforms the Sensex by -1.99% per year. The strategy doesn't beat the local market. This is the opposite of what we see in Anglo-Saxon markets, where the same filter generates clear alpha.

The defining years tell the story clearly: - Wins: 2009 (+48.9% excess), 2014 (+47.4% excess), 2020 (+16.1%), 2023 (+15.2%) - Losses: 2018 (-28.6% excess), 2021 (-19.8%), 2007 (-4.5%)

The wins are large and infrequent. The losses are equally large. Over 18 invested years, the Sensex delivered higher and more consistent returns.

The earnings consistency filter doesn't work in India the way it works in the US, UK, or Canada. India's broad market rewards growth over quality, and the Sensex — which includes high-growth companies with episodic earnings — outperformed a quality-filtered subset.


Part of a Series


Data: Ceta Research, FMP financial data warehouse. Universe: NSE. Annual rebalance (July), equal weight (top 30 by ROE), 2000-2025. Benchmark: Sensex (INR). Note: 7 cash periods in 2000-2006 due to data coverage; invested periods are 2007-2024.