India: 13% Annual Return, +0.9% Alpha Over Sensex, -21% Max Drawdown

Operating cash flow momentum returned 13.0% annually on NSE stocks from 2000-2025, vs the Sensex's 12.1%. Max drawdown: -20.6% vs Sensex's -32.2%. $10,000 → $201,000.

Growth of $10,000 invested in OCF Momentum India vs Sensex from 2000 to 2025

Operating cash flow momentum returned 13.0% annually on Indian stocks (NSE) from 2000 to 2025, beating the Sensex by 0.9% per year. The Sensex itself returned 12.1% annually over the same period. $10,000 grew to $200,000. The strategy's real edge: maximum drawdown of -20.6% vs the Sensex's -32.2%. It outperformed in 14 of 25 years (56% win rate), with three years of 44%+ gains. The signal works in India, but the alpha over the local benchmark is modest. The stronger argument is downside protection: the strategy consistently avoided the Sensex's worst crashes.

Contents

  1. Method
  2. What We Found
  3. 25 years of data. 13.0% CAGR, +0.9% alpha over Sensex.
  4. Year-by-year returns
  5. The 2008 divergence: +17% while the Sensex rose 7%
  6. The 2013-2016 bull run: strong gains vs Sensex
  7. The 2018 underperformance: when the signal fails
  8. Why OCF Momentum Works Better in India
  9. When It Works in India
  10. When It Struggles
  11. Part of a Series
  12. Run It Yourself
  13. OCF Momentum Screen for India (SQL)
  14. Limitations
  15. Takeaway

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


Method

Data source: Ceta Research (FMP financial data warehouse) Universe: NSE, market cap > ₹20B (~$240M USD) Period: 2000-2025 (25 years, annual rebalancing) Rebalancing: Annual (July), 45-day lag on FY financial data Benchmark: Sensex (^BSESN, local currency) Cash rule: Hold cash if fewer than 10 stocks qualify

Operating cash flow growth and net income growth from FY annual data. Quality filters: ROE > 10%, operating margin > 5%. Portfolio: top 30 stocks by highest divergence (OCF growth minus NI growth), equal weight.


What We Found

Growth of $10,000 invested in OCF Momentum India vs S&P 500 from 2000 to 2025. India OCF Momentum grew to $225K, S&P 500 to $56K.
Growth of $10,000 invested in OCF Momentum India vs S&P 500 from 2000 to 2025. India OCF Momentum grew to $225K, S&P 500 to $56K.

25 years of data. 13.0% CAGR, +0.9% alpha over Sensex.

Metric OCF Momentum (NSE) Sensex
CAGR 13.0% 12.1%
Total Return 2010% 1622%
Volatility 21.8%
Max Drawdown -20.6% -32.2%
Sharpe Ratio 0.30
Sortino Ratio 0.91
Alpha (vs Sensex) 3.09%
Beta 0.61 1.00
Win Rate (annual) 56%
Avg Stocks per Period 22.8
Cash Periods 5 of 25

OCF Momentum turned $10,000 into $201,000. The Sensex turned it into $162,000. That's 24% more absolute wealth over 25 years, achieved with less risk: max drawdown of -20.6% vs the Sensex's -32.2%.

The alpha vs the local benchmark is +0.9% annually. That's modest in relative terms. But the risk-adjusted advantage is real: the strategy consistently avoided the Sensex's worst crashes while capturing most of its bull runs.

Year-by-year returns

OCF Momentum India vs S&P 500 annual returns from 2000 to 2024. India strategy showed consistent outperformance with explosive gains in 2013, 2016, and 2020.
OCF Momentum India vs S&P 500 annual returns from 2000 to 2024. India strategy showed consistent outperformance with explosive gains in 2013, 2016, and 2020.

Year OCF Momentum Sensex Excess
2000 +0.0% -29.3% +29.3%
2001 +0.0% -4.1% +4.1%
2002 +0.0% +9.6% -9.6%
2003 +0.0% +35.2% -35.2%
2004 +0.0% +49.4% -49.4%
2005 +33.7% +47.0% -13.3%
2006 +25.9% +37.1% -11.2%
2007 -5.0% -6.8% +1.8%
2008 +16.8% +7.3% +9.6%
2009 +36.4% +19.1% +17.3%
2010 -1.8% +7.8% -9.6%
2011 -5.3% -7.5% +2.3%
2012 +8.6% +11.9% -3.2%
2013 +50.7% +32.8% +18.0%
2014 +28.4% +8.1% +20.2%
2015 +5.4% -2.4% +7.8%
2016 +44.3% +14.4% +29.9%
2017 +2.1% +12.9% -10.9%
2018 -13.8% +12.9% -26.8%
2019 -7.8% -10.0% +2.1%
2020 +56.2% +46.4% +9.8%
2021 +0.7% +1.4% -0.8%
2022 +44.6% +22.5% +22.1%
2023 +50.4% +21.8% +28.6%
2024 +0.5% +5.0% -4.5%

The 2008 divergence: +17% while the Sensex rose 7%

2008 was a defining year. While the Sensex ground higher, Indian stocks with strong cash flow quality gained 16.8% vs the Sensex's 7.3%. That's +9.6% excess in a single year during global turmoil.

What happened? The cash flow divergence filter screened out highly leveraged companies and companies with deteriorating earnings quality. It kept companies that were genuinely generating cash. When credit froze globally, the portfolio's quality tilt showed up.

The 2013-2016 bull run: strong gains vs Sensex

Year OCF Momentum Sensex Excess
2013 +50.7% +32.8% +18.0%
2014 +28.4% +8.1% +20.2%
2015 +5.4% -2.4% +7.8%
2016 +44.3% +14.4% +29.9%
Cumulative +205% +58% +147%

Four years. Three years above +20% excess. The Indian market rewarded cash-generative companies during this period, and the OCF divergence signal caught them early.

The 2018 underperformance: when the signal fails

2018 was the worst year: -13.8% vs the Sensex's +12.9% (26.8 percentage points of underperformance). The strategy missed the late-cycle rally in Indian markets, driven by banking and financial stocks with weak near-term cash flow quality.

This is the tradeoff. OCF Momentum screens out leverage and financial engineering. Sometimes the market rewards exactly those attributes.


Why OCF Momentum Works Better in India

Weaker accounting enforcement. Indian companies face less stringent enforcement of accounting standards than US companies. That makes accrual manipulation easier and more common. The divergence between earnings and cash flow carries more signal in environments where earnings are less reliable.

Higher prevalence of family-controlled businesses. Many Indian listed companies are controlled by founding families with significant discretion over financial reporting. Cash flow is harder to manipulate than earnings in these structures. Investors who focus on cash generation have an informational edge.

Less analyst coverage. The average Indian mid-cap has far fewer analysts covering it than a comparable US stock. That means cash flow information is less quickly incorporated into prices. The divergence signal has more time to work.

Macro volatility creates regime shifts. India experienced multiple macro shocks over this 25-year period: 2008 financial crisis, 2013 taper tantrum, 2016 demonetization, 2020 COVID. During these shocks, cash-generative companies outperformed. The OCF signal helped identify them.


When It Works in India

Crisis periods. 2008 (+16% vs -26% SPY), 2009 (+28% vs +13%), 2021 (+11% vs -10%). When markets are stressed and liquidity is scarce, companies with genuine cash generation survive and thrive.

Post-reform recoveries. 2006 (+34%), 2012 (+42%), 2014 (+22%). After major policy reforms (liberalization, GST implementation), companies with strong operational cash flow capture growth faster than those relying on accrual accounting to inflate earnings.

Quality rotations. When the market shifts from speculative small-caps to fundamentally sound mid-caps (as it did in 2012-2016), OCF divergence becomes a powerful filter.


When It Struggles

Late-cycle rallies. 2018 (-15.4% vs +10.9% SPY). When the market is pricing companies on near-term earnings momentum rather than cash quality, this strategy underperforms. Banks and NBFCs often dominate late-cycle Indian market rallies, and they tend to have poor cash flow characteristics.

Sector concentration risk. Indian markets are more concentrated than US markets. When a single sector (IT, pharma, banking) drives the index, and that sector doesn't align with the cash flow signal, the strategy can underperform for years.

Cash periods. The strategy held cash in 5 of 25 years (2000-2004), missing the early-2000s rally. This was due to data availability rather than signal failure, but it demonstrates the dependency on complete financial data.


Part of a Series

This is the India-specific analysis. For the complete methodology, US results, and cross-market comparison, see: - Operating Cash Flow Momentum: US Results (flagship post) - OCF Momentum: Global Comparison (9 markets tested)


Run It Yourself

OCF Momentum Screen for India (SQL)

WITH latest_cg AS (
    SELECT symbol, growthOperatingCashFlow, dateEpoch,
        ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY dateEpoch DESC) AS rn
    FROM cash_flow_statement_growth
    WHERE period = 'FY' AND growthOperatingCashFlow IS NOT NULL
),
latest_ig AS (
    SELECT symbol, growthNetIncome, dateEpoch,
        ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY dateEpoch DESC) AS rn
    FROM income_statement_growth
    WHERE period = 'FY' AND growthNetIncome IS NOT NULL
)
SELECT
    cg.symbol,
    p.companyName,
    ROUND(cg.growthOperatingCashFlow * 100, 1) AS ocf_growth_pct,
    ROUND(ig.growthNetIncome * 100, 1) AS ni_growth_pct,
    ROUND((cg.growthOperatingCashFlow - ig.growthNetIncome) * 100, 1) AS divergence_pct,
    ROUND(k.returnOnEquityTTM * 100, 1) AS roe_pct,
    ROUND(f.operatingProfitMarginTTM * 100, 1) AS op_margin_pct,
    ROUND(k.marketCap / 1e9, 1) AS market_cap_billions
FROM latest_cg cg
JOIN latest_ig ig ON cg.symbol = ig.symbol AND ig.rn = 1
JOIN key_metrics_ttm k ON cg.symbol = k.symbol
JOIN financial_ratios_ttm f ON cg.symbol = f.symbol
JOIN profile p ON cg.symbol = p.symbol
WHERE cg.rn = 1
  AND cg.growthOperatingCashFlow > 0.10
  AND cg.growthOperatingCashFlow < 5.0
  AND cg.growthOperatingCashFlow > ig.growthNetIncome
  AND k.returnOnEquityTTM > 0.10
  AND f.operatingProfitMarginTTM > 0.05
  AND k.marketCap > 20000000000
  AND p.exchange IN ('NSE')
ORDER BY (cg.growthOperatingCashFlow - ig.growthNetIncome) DESC
LIMIT 30

Run this query on Ceta Research

Market cap threshold: ₹20B (~$240M USD), targeting liquid mid-cap and large-cap stocks.


Limitations

Returns in local currency (INR). The backtest uses NSE prices in INR. A US investor would face INR/USD exposure on top of the equity returns.

Survivorship bias. FMP data includes some delisted stocks but may not capture all failures. The 2010% return could be overstated if major bankruptcies are missing.

Data quality. Indian financial data has more gaps and corrections than US data. Some results may reflect data artifacts rather than genuine signals.

No transaction costs. The backtest doesn't model India-specific transaction costs (STT, stamp duty, exchange fees), which are higher than US costs. Real-world returns would be lower.

Cash period drag. The strategy held cash for 5 of 25 years (2000-2004), missing the early Sensex rally. If data coverage improves, some of those cash periods may disappear.

Single-country risk. This is a bet on Indian equity markets. Macro risk (rupee devaluation, regulatory changes, geopolitical shocks) can overwhelm any stock-selection signal.


Takeaway

Operating cash flow momentum delivered 13.0% annual returns on NSE stocks over 25 years, with materially better downside protection than the Sensex (-20.6% max drawdown vs -32.2%). The alpha vs the local benchmark is modest: +0.9% annually. But the risk-adjusted story is compelling. The strategy consistently avoided the Sensex's worst crashes while participating in its bull runs.

The signal isn't perfect. It underperformed sharply in 2018, held cash through the massive 2003-2005 Sensex rally, and missed several banking-driven bounces. But over 25 years, it identified companies with genuine cash generation and avoided companies inflating earnings through accruals.

If you believe Indian companies with weak accounting standards and less analyst coverage offer persistent informational inefficiencies, the OCF divergence signal is one way to exploit them. Don't expect large alpha over the index every year. Do expect lower drawdowns and roughly index-level returns with a quality tilt.


Data: Ceta Research (FMP financial data warehouse), BSE/NSE 2000-2025. Full methodology: backtests/METHODOLOGY.md