GARP on Indian Stocks: Barely Beats the Sensex (+0.10% Annually)

We tested Peter Lynch's GARP strategy on NSE stocks from 2000 to 2025. Against the Sensex benchmark, the excess is 0.10% per year. Against SPY, the apparent 3.20% excess reflects India's growth premium, not GARP alpha. 11.22% CAGR with higher risk than the index.

Growth of $10,000 invested in GARP India vs Sensex from 2000 to 2025.

We ran the Growth at a Reasonable Price (GARP) strategy — PEG < 1.5, revenue growth > 15%, ROE > 10% — on Indian stocks (NSE) from 2000 to 2025. The result: 11.22% annualized vs the Sensex's 11.12%. Against India's own benchmark, the margin is 0.10% per year. Against SPY's 8.02% in USD, the apparent excess is +3.20% — but that gap reflects India's stronger growth cycle, not the GARP signal itself. A $10,000 investment grew to $154,640.

Contents

  1. Method
  2. What is GARP?
  3. What We Found
  4. 11.22% CAGR. +0.10% above Sensex. Marginal edge on returns, higher risk.
  5. Year-by-Year Returns
  6. Cash in 2000–2004: missed a major Sensex rally
  7. 2005–2007: genuine outperformance
  8. 2008 and 2009: the crash and recovery
  9. The volatile middle years
  10. 2023 and 2024: the strongest stretch
  11. The Honest Assessment
  12. Limitations
  13. Takeaway
  14. Part of a Series
  15. Run This Screen Yourself
  16. References

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


Method

Data source: Ceta Research (FMP financial data warehouse) Universe: NSE, market cap > ₹20B (Indian Rupee) Period: 2000–2025 (25 years, 103 quarterly periods) Rebalancing: Quarterly (January, April, July, October), equal weight Benchmark: Sensex (^BSESN, in INR — local currency comparison) Returns: Calculated in INR (Indian Rupee) Cash rule: Hold cash if fewer than 10 stocks qualify

Financial data uses a 45-day lag on annual filings. PEG ratios, P/E, ROE, and debt-to-equity come from fiscal year filings as available at each rebalance date.


What is GARP?

GARP — Growth at a Reasonable Price — is Peter Lynch's framework from One Up on Wall Street (1989). The PEG ratio (P/E divided by earnings growth rate) is the central metric. A PEG of 1.0 means you're paying one dollar of P/E for each percentage point of growth. Lynch argued that PEG < 1.0 was cheap; we screen at PEG < 1.5.

All six filters must pass at each quarterly rebalance:

Filter Threshold Why
PEG ratio 0 < PEG < 1.5 Not overpaying for growth
P/E ratio 5 < P/E < 50 Exclude distressed and speculative
Revenue growth (YoY) > 15% Must be demonstrably growing
ROE > 10% Quality filter
Debt/Equity < 2.0 Leverage constraint
Market cap > ₹20B Institutional-grade Indian stocks

The portfolio holds the top 30 by lowest PEG ratio, equal weight.


What We Found

Growth of $10,000 invested in GARP India vs Sensex from 2000 to 2025.
Growth of $10,000 invested in GARP India vs Sensex from 2000 to 2025.

11.22% CAGR. +0.10% above Sensex. Marginal edge on returns, higher risk.

Metric GARP India Sensex
CAGR 11.22% 11.12%
Total Return 1,446% 1,411%
Max Drawdown -72.98% -51.34%
Volatility 32.61% 23.83%
Sharpe Ratio 0.145 0.194
Up Capture 113.3%
Down Capture 108.7%
Cash Periods 22 of 103
Avg Stocks (invested) 27.2

The return edge vs Sensex is 0.10% per year. The risk taken to get there is substantially higher: 32.6% annualized volatility vs 23.8% for the Sensex, and a -72.98% maximum drawdown vs -51.34% for the index.

The Sharpe ratio (0.145 vs 0.194) shows the Sensex has better risk-adjusted returns than India GARP over this period. The screen finds higher absolute CAGR but at a worse return-to-risk trade.

The up/down capture vs the Sensex (113%/109%) shows the portfolio amplifies both bull markets and bear markets relative to the Indian index — the opposite of the defensive asymmetry that appears when comparing to SPY in USD. That comparison masked a currency and economic growth effect, not a stock selection edge.


Year-by-Year Returns

GARP India vs Sensex annual returns 2000–2025.
GARP India vs Sensex annual returns 2000–2025.

Year GARP India Sensex Excess
2000–2004 0.00% (cash) varies n/a
2005 +31.3% +40.6% -9.3%
2006 +53.9% +48.5% +5.4%
2007 +83.0% +46.8% +36.2%
2008 -70.7% -51.3% -19.4%
2009 +137.3% +76.3% +61.0%
2010 +15.8% +17.1% -1.3%
2011 -36.9% -24.5% -12.4%
2012 +56.8% +27.0% +29.7%
2013 -9.2% +6.0% -15.2%
2014 +67.5% +33.5% +34.0%
2015 +5.2% -8.1% +13.3%
2016 +2.6% +3.8% -1.2%
2017 +56.0% +27.1% +28.9%
2018 -33.7% +6.2% -39.8%
2019 -10.6% +16.0% -26.5%
2020 +24.7% +15.7% +8.9%
2021 +29.7% +22.9% +6.8%
2022 +3.0% +3.4% -0.3%
2023 +70.5% +17.5% +52.9%
2024 +38.2% +11.2% +27.0%
2025 -11.8% +1.6% -13.3%

Cash in 2000–2004: missed a major Sensex rally

During 2000–2004, the GARP screen found fewer than 10 qualifying Indian companies. NSE didn't have enough mid-to-large cap companies simultaneously showing 15%+ revenue growth, PEG < 1.5, and ROE > 10%. The screen went to cash.

The outcome vs the Sensex was mixed. India's market was volatile in 2000 (-25%) and 2001 (-19%), and cash avoided those falls. But 2003 saw the Sensex surge +79% — cash missed the entire recovery. The net effect of the 2000–2004 cash periods is a drag on GARP's long-run relative performance.

2005–2007: genuine outperformance

When the signal fired in 2005, it found what it was designed for: fast-growing Indian companies at reasonable valuations. IT services, pharmaceuticals, and infrastructure companies were expanding at 20–40% annually with PEG ratios below 1.5. 2007 delivered +83% vs Sensex's +47% — a 36-point gap that reflects real informational edge in a period when systematic factor investing in India was nascent.

2008 and 2009: the crash and recovery

The 2008 crash took India GARP down 70.7% vs the Sensex's 51.3%. Concentrated growth stocks in an emerging market sell off harder. 2009 recovered +137.3% vs Sensex +76.3% — another large positive year. The crash and recovery net out to roughly the same trajectory, but the drawdown was severe.

The volatile middle years

From 2010–2022, the pattern is alternating strong years (2012: +30% excess, 2014: +34%, 2017: +29%) and weak years (2011: -12%, 2013: -15%, 2018: -40%, 2019: -27%). 2018 was the worst miss: GARP -33.7% while the Sensex returned +6.2% — a 40-point gap in a single year. The NBFC crisis froze credit, hitting growth companies hard.

2023 and 2024: the strongest stretch

2023 returned +70.5% vs Sensex +17.5%, and 2024 returned +38.2% vs Sensex +11.2%. These two years built back accumulated underperformance. India's manufacturing buildout, digital economy growth, and improving corporate governance created genuine GARP opportunities. Combined, they added roughly 79 percentage points of excess in two years.


The Honest Assessment

The 0.10% excess vs Sensex over 25 years isn't statistically different from zero. There are years where the screen clearly outperforms — 2007, 2009, 2014, 2023, 2024 — and years where it clearly underperforms — 2005, 2008, 2018, 2019, 2025. The net result over 25 years is essentially at parity with the index.

The apparent +3.20% excess vs SPY comes from India's stronger economic growth cycle relative to US equities. A simple Sensex index fund would have shown similar "excess" vs SPY. GARP's contribution is the marginal 0.10% above Sensex — real, but barely measurable.

What the screen does provide: access to concentrated growth cycles when they appear. The exceptional years (2007, 2009, 2023, 2024) are real and meaningful. But the strategy also suffers concentrated drawdowns when conditions shift — 2008, 2011, 2018, 2019.

For Indian investors, GARP is a reasonable systematic approach to a growth-focused portfolio. Don't expect to beat the Sensex consistently. Expect higher volatility, occasional large outperformance, and a portfolio that requires conviction to hold through the bad years.


Limitations

Currency risk. Returns are in INR. An INR/USD depreciation reduces the USD equivalent of returns. The Sensex comparison avoids this, but international investors face it.

High volatility. 32.6% annualized volatility is 37% higher than the Sensex (23.8%). The -72.98% maximum drawdown is severe. An investor who entered in 2007 and needed to exit in 2009 would have been down 70.7%.

Liquidity. India's mid-cap segment has thinner order books. Transaction costs modeled here are size-tiered but may not fully capture real market impact.

Thin coverage in early years. The 2000–2004 cash periods reflect real data limitations. The 2003 Sensex rally (+79%) was missed entirely. This drag affects the long-run relative return.

Survivorship bias. Profiles use current exchange listings. Indian companies that delisted or failed aren't tracked through failure.


Takeaway

India GARP returns 11.22% over 25 years, barely ahead of the Sensex's 11.12%. The risk-adjusted case is weaker than the index: higher volatility, deeper drawdowns, lower Sharpe. Against SPY, India GARP shows +3.20% — driven by India's growth premium, not GARP-specific alpha.

The screen does find genuine opportunities in specific cycles (2007, 2009, 2014, 2023–2024). The problem is that the years of underperformance (2008, 2011, 2018, 2019) offset those gains over the full period. India is the strongest GARP market globally, but the edge vs the local index is thin.


Part of a Series

This post is part of our GARP global exchange comparison:


Run This Screen Yourself

Current GARP screen (Indian stocks, TTM data):

WITH latest_income AS (
    SELECT symbol, revenue, dateEpoch,
           ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY dateEpoch DESC) AS rn
    FROM income_statement WHERE period = 'FY' AND revenue > 0
),
rev_growth AS (
    SELECT c.symbol,
           ROUND((c.revenue - p.revenue) / ABS(p.revenue) * 100, 1) AS rev_growth_pct
    FROM latest_income c
    JOIN latest_income p ON c.symbol = p.symbol AND c.rn = 1 AND p.rn = 2
    WHERE p.revenue > 0 AND (c.revenue - p.revenue) / ABS(p.revenue) > 0.15
)
SELECT f.symbol, p.companyName, p.sector,
    ROUND(f.priceToEarningsGrowthRatioTTM, 3) AS peg_ratio,
    ROUND(f.priceToEarningsRatioTTM, 2) AS pe_ratio,
    ROUND(k.returnOnEquityTTM * 100, 1) AS roe_pct,
    ROUND(f.debtToEquityRatioTTM, 2) AS debt_to_equity,
    g.rev_growth_pct,
    ROUND(k.marketCap / 1e9, 2) AS mktcap_b_inr
FROM financial_ratios_ttm f
JOIN key_metrics_ttm k ON f.symbol = k.symbol
JOIN profile p ON f.symbol = p.symbol
JOIN rev_growth g ON f.symbol = g.symbol
WHERE f.priceToEarningsGrowthRatioTTM > 0 AND f.priceToEarningsGrowthRatioTTM < 1.5
  AND f.priceToEarningsRatioTTM > 5 AND f.priceToEarningsRatioTTM < 50
  AND k.returnOnEquityTTM > 0.10
  AND f.debtToEquityRatioTTM >= 0 AND f.debtToEquityRatioTTM < 2.0
  AND k.marketCap > 20000000000
  AND p.exchange IN ('NSE')
QUALIFY ROW_NUMBER() OVER (PARTITION BY f.symbol ORDER BY f.priceToEarningsGrowthRatioTTM ASC) = 1
ORDER BY f.priceToEarningsGrowthRatioTTM ASC LIMIT 30

Run this screen on Ceta Research

The full backtest code (Python + DuckDB) is on GitHub.


References

  • Lynch, P. (1989). One Up on Wall Street. Simon & Schuster.
  • Bae, K., Stulz, R. & Tan, H. (2008). "Do Local Analysts Know More? A Cross-Country Study of the Performance of Local Analysts and Foreign Analysts." Journal of Financial Economics, 88(3), 581–606.
  • Rouwenhorst, K. (1999). "Local Return Factors and Turnover in Emerging Stock Markets." Journal of Finance, 54(4), 1439–1464.

Data: Ceta Research, FMP financial data warehouse. Universe: NSE. Quarterly rebalance, equal weight, transaction costs included, 2000–2025. Returns in INR.