Price-to-Sales Below 1 in India: 15.53% CAGR Over BSE + NSE Data

Growth of $10,000 invested in P/S value screen India vs S&P 500 from 2004 to 2025. India portfolio grew to over $215K in INR terms, S&P 500 to approximately $68K.

We ran a P/S value screen on BSE and NSE from 2000 to 2025. The strategy requires P/S below 1.0, gross margin above 20%, operating margin above 5%, and ROE above 10%, with the top 30 by lowest P/S selected each quarter. Among all 13 exchanges tested, India produced the highest raw return: 15.53% CAGR vs 8.01% for the S&P 500. It also produced the worst max drawdown at -74.63%, and a Sharpe ratio of 0.226, well below SPY's 0.354. India's edge is real. So is its volatility.

Contents

  1. Method
  2. The Screen
  3. P/S Value Screen (SQL, India)
  4. What We Found
  5. 15.53% CAGR. Best raw return of all 13 exchanges. Worst drawdown of all dedicated blogs.
  6. Year-by-year returns
  7. 2004-2007: the opening run
  8. 2008-2009: the crash and the bounce
  9. The recurring pattern: big up, big down
  10. Where India diverged from SPY
  11. Backtest Methodology
  12. Limitations
  13. Takeaway
  14. Part of a Series
  15. References
  16. Run This Screen Yourself

Method

  • Data source: Ceta Research (FMP financial data warehouse)
  • Universe: BSE + NSE, market cap > ₹20B INR (approximately $240M USD)
  • Period: 2000-2025 (25 years, 100 quarterly periods; first qualifying stocks appear in 2004)
  • Rebalancing: Quarterly (January, April, July, October), equal weight, top 30 by lowest P/S
  • Benchmark: S&P 500 Total Return (SPY), USD terms
  • Cash rule: Hold cash if fewer than 10 stocks qualify

Financial data sourced from financial_ratios (FY) for P/S ratio and margins, key_metrics (FY) for ROE and market cap. 45-day lag on all financial statements to prevent look-ahead bias. Returns are in INR terms.


The Screen

The same four-filter screen as the US version, adjusted for the Indian market cap threshold.

Valuation:

Criterion Metric Threshold
Cheap on sales Price-to-Sales (FY) < 1.0

Quality Filters:

Criterion Metric Threshold
Margin quality Gross Margin > 20%
Operational efficiency Operating Margin > 5%
Capital returns Return on Equity > 10%

Size:

Criterion Metric Threshold
Mid-cap and above Market Cap > ₹20B INR

The ₹20B threshold targets the mid-cap and large-cap segment where FMP data coverage is reliable. At current exchange rates it's roughly $240M USD, capturing a different size tier than the US screen's $1B USD cutoff. This matters for interpretation: the Indian screen includes smaller companies with more room to re-rate.

P/S Value Screen (SQL, India)

SELECT
 f.symbol,
 p.companyName,
 p.exchange,
 p.sector,
 ROUND(f.priceToSalesRatioTTM, 3) AS ps_ratio,
 ROUND(f.grossProfitMarginTTM * 100, 1) AS gross_margin_pct,
 ROUND(f.operatingProfitMarginTTM * 100, 1) AS op_margin_pct,
 ROUND(k.returnOnEquityTTM * 100, 1) AS roe_pct,
 ROUND(k.marketCap / 1e9, 2) AS mktcap_b
FROM financial_ratios_ttm f
JOIN key_metrics_ttm k ON f.symbol = k.symbol
JOIN profile p ON f.symbol = p.symbol
WHERE f.priceToSalesRatioTTM > 0
 AND f.priceToSalesRatioTTM < 1
 AND f.grossProfitMarginTTM > 0.20
 AND f.operatingProfitMarginTTM > 0.05
 AND k.returnOnEquityTTM > 0.10
 AND k.marketCap > 20000000000
 AND p.exchange IN ('BSE', 'NSE')
QUALIFY ROW_NUMBER() OVER (PARTITION BY f.symbol ORDER BY f.priceToSalesRatioTTM ASC) = 1
ORDER BY f.priceToSalesRatioTTM ASC
LIMIT 30

Run this query on Ceta Research


What We Found

Growth of $10,000 invested in P/S value screen India vs S&P 500. India portfolio grew to over $215K (in INR terms) from 2004 to 2025, S&P 500 to approximately $68K.
Growth of $10,000 invested in P/S value screen India vs S&P 500. India portfolio grew to over $215K (in INR terms) from 2004 to 2025, S&P 500 to approximately $68K.

15.53% CAGR. Best raw return of all 13 exchanges. Worst drawdown of all dedicated blogs.

Metric P/S Screen (India) S&P 500
CAGR 15.53% 8.01%
Excess Return +7.52% -
Sharpe Ratio 0.226 0.354
Max Drawdown -74.63% -45.53%
Avg Stocks per Period 27.5 (when invested) -
Cash Periods 16 of 100 -

The gap between return and Sharpe tells the whole story. India delivers exceptional compounding, but the path is brutal. A Sharpe of 0.226 means you're getting very little return per unit of risk relative to the benchmark. The return still wins over time because the upside years are so large. But the volatility isn't incidental, it's structural.

The cash periods (16 of 100) are concentrated in 2000-2003. FY financial data for Indian companies didn't arrive in sufficient volume until 2004, so the early quarters show no qualifying stocks. The effective investment period is roughly 21 years. The 15.53% CAGR is computed over the full 25-year window including those cash years.

India's risk-free rate runs around 6.5% (10-year government bond yield). The strategy clears that threshold meaningfully, even after accounting for the volatility. It's a different benchmark than the US context.

Year-by-year returns

P/S value screen India vs S&P 500 annual returns 2000 to 2025. India in cash 2000-2003, then explosive returns 2004-2007, severe crash 2008, recovery 2009. High variance throughout.
P/S value screen India vs S&P 500 annual returns 2000 to 2025. India in cash 2000-2003, then explosive returns 2004-2007, severe crash 2008, recovery 2009. High variance throughout.

Year P/S Screen S&P 500 Excess
2000 0.0% (cash) -10.50% -
2001 0.0% (cash) -9.17% -
2002 0.0% (cash) -19.92% -
2003 0.0% (cash) +24.12% -
2004 +59.94% +10.24% +49.70%
2005 +33.47% +7.17% +26.30%
2006 +60.14% +13.65% +46.49%
2007 +100.02% +4.40% +95.62%
2008 -72.76% -34.31% -38.45%
2009 +182.70% +24.73% +157.97%
2010 +18.32% +14.31% +4.01%
2011 -48.34% +2.46% -50.80%
2012 +40.82% +17.09% +23.73%
2013 -2.13% +27.77% -29.90%
2014 +63.22% +14.50% +48.72%
2015 -2.94% -0.12% -2.82%
2016 +13.83% +14.45% -0.62%
2017 +48.97% +21.64% +27.33%
2018 -39.99% -5.15% -34.84%
2019 -19.10% +32.31% -51.41%
2020 +35.53% +15.64% +19.89%
2021 +95.06% +31.26% +63.80%
2022 +25.86% -18.99% +44.85%
2023 +79.09% +26.00% +53.09%
2024 +29.71% +25.28% +4.43%
2025 -8.00% +15.34% -23.34%

2004-2007: the opening run

The first four years of active investment were extraordinary. The screen captured India's mid-cap expansion in the pre-crisis boom. Companies with P/S below 1 and decent margins re-rated sharply as the broader BSE Sensex climbed. The 2007 return of +100.02% in a single year isn't a data error. It reflects concentrated exposure to stocks that doubled.

2008-2009: the crash and the bounce

2008 was the defining risk event: -72.76%. This is the strategy's max drawdown in a single year, and it exceeds the US market's -34.31% by a wide margin. Indian small and mid-cap stocks with illiquid ownership structures collapsed further than large-cap indices during the global credit freeze. Quality filters don't protect against a market-wide liquidity crisis.

2009 reversed it in spectacular fashion: +182.70%. If you held through 2008, the recovery was complete within the year. If you sold at the bottom, you missed one of the largest single-year returns in this entire dataset. This is the practical challenge of the India strategy. The drawdowns are severe enough to force selling at exactly the wrong moment for many investors.

The recurring pattern: big up, big down

Cycle Run-up Crash Recovery
2004-2007 / 2008 / 2009 +60% to +100% per year -72.76% +182.70%
2012 / 2013 / 2014 +40.82%, -2.13% (2018: -40%, 2019: -19%) 2020-2023 run
2020-2023 / 2025 +35% to +95% per year -8% (2025) TBD

India's pattern is consistent: the strategy overshoots on both sides. Strong years are very strong (+95% in 2021, +79% in 2023). Bad years are severe (-72.76% in 2008, -48% in 2011, -40% in 2018). The long-run compounding works because the recoveries are proportionally larger than the crashes.

Where India diverged from SPY

Two stretches stand out as painful underperformance:

2013 and 2018-2019: In 2013, global investors pulled capital from emerging markets during the taper tantrum. The strategy lost 2.13% while the S&P 500 gained 27.77%. In 2018-2019, India's domestic credit crisis (IL&FS collapse in 2018) and slower earnings recovery in 2019 combined with SPY's 32.31% gain to produce a two-year gap of over 90 percentage points. These are currency-independent losses in INR terms. The domestic economic cycle drove them.

2022: India's best relative year. While SPY fell 18.99%, India's P/S screen gained 25.86%, a gap of +44.85%. Rising global rates triggered a flight from loss-making growth companies. The Indian market's heavier weight in profitable mid-caps with low revenue multiples worked in the strategy's favor.


Backtest Methodology

Parameter Choice
Universe BSE + NSE, Market Cap > ₹20B INR
Signal P/S < 1.0, Gross Margin > 20%, Op. Margin > 5%, ROE > 10%
Portfolio Top 30 by lowest P/S, equal weight
Rebalancing Quarterly (January, April, July, October)
Cash rule Hold cash if < 10 qualify
Benchmark S&P 500 Total Return (SPY)
Period 2000-2025 (25 years, 100 quarterly periods)
Data Point-in-time (45-day lag on FY financial statements)
Returns INR terms

Limitations

Extreme drawdown risk. -74.63% max drawdown is the worst result of all dedicated exchange blogs in this series. Investors need to hold conviction through crashes of that magnitude. Most won't.

Low Sharpe ratio. 0.226 vs 0.354 for SPY means the risk-adjusted case is weak. The return premium is real, but it comes with volatility that makes it difficult to hold in practice.

Currency risk. Returns are in INR. USD-based investors face additional FX exposure. The INR has depreciated against the USD over this period, which would reduce returns in USD terms.

Cash drag in early years. Sixteen cash periods, mostly 2000-2003, reflect data availability rather than any signal. This is a limitation of the historical dataset, not the screen's logic.

Survivorship bias. Exchange membership uses current profiles, not historical. Delistings and corporate failures aren't tracked over time.

Transaction costs not included. Indian mid-cap stocks can carry higher bid-ask spreads than US large-caps. Quarterly rebalancing of 30 names at 0.3-0.8% one-way transaction costs is approximately 0.8-2.0% annual drag depending on portfolio size and execution quality.

Data coverage. FMP's Indian data depth improves substantially after 2004. The early backtest years may have coverage gaps that affect stock selection at the margin.


Takeaway

India is the highest-returning exchange in this series. 15.53% CAGR, +7.52% excess return over SPY, compounding from $10,000 to over $215,000 in INR terms across 21 active investment years. No other exchange in the dataset comes close on raw return.

The cost is volatility that most investors won't survive psychologically. -74.63% max drawdown means you'd watch a portfolio fall from $100,000 to $25,400 before the recovery comes. In 2008, that recovery took one year. In other cycles, it took three. You don't know in advance which scenario you're in.

The quality filters (gross margin > 20%, operating margin > 5%, ROE > 10%) matter more in India than in the US. Without them, the P/S screen at low thresholds would capture commodity and trading businesses with structurally thin margins. The version tested here selects companies that are genuinely cheap on sales and genuinely profitable, a combination that exists in India's manufacturing, healthcare, and services sectors in larger numbers than many developed markets.

If you have a long horizon, high volatility tolerance, and local currency exposure to INR, this is the strongest-performing screen in the series. If any of those conditions don't hold, the US or Germany results may serve you better.


Part of a Series

This analysis is part of our global P/S value screen comparison. We tested the same screen across 13 exchanges worldwide: - P/S Value Screen on US Stocks (NYSE + NASDAQ + AMEX) - 11.14% CAGR, the flagship analysis - P/S Value Screen on German Stocks (XETRA) - P/S Value Screen on Canadian Stocks (TSX) - P/S Value Screen on Swedish Stocks (STO) - P/S Value Screen on South African Stocks (JNB) - P/S Value Screen on Japanese Stocks (JPX) - P/S Value Screen: Global Exchange Comparison


References

  • Fisher, K. (1984). Super Stocks. Dow Jones-Irwin.
  • Barbee, W., Mukherji, S. & Raines, G. (1996). "Do Sales-Price and Debt-Equity Explain Stock Returns Better than Book-Market and Firm Size?" Financial Analysts Journal, 52(2), 56-60.
  • Gray, W. & Vogel, J. (2012). "Analyzing Valuation Measures: A Performance Horse-Race over the Past 40 Years." Journal of Portfolio Management, 39(1), 112-121.
  • Novy-Marx, R. (2013). "The Other Side of Value: The Gross Profitability Premium." Journal of Financial Economics, 108(1), 1-28.

Run This Screen Yourself

Via web UI: Run the India P/S value screen on Ceta Research. The query is pre-loaded. Hit "Run" and see what qualifies today.

Via Python:

import requests, time

API_KEY = "your_api_key" # get one at cetaresearch.com
BASE = "https://tradingstudio.finance/api/v1"

resp = requests.post(f"{BASE}/data-explorer/execute", headers={
 "X-API-Key": API_KEY, "Content-Type": "application/json"
}, json={
 "query": """
 SELECT f.symbol, p.companyName, p.sector,
 ROUND(f.priceToSalesRatioTTM, 3) AS ps_ratio,
 ROUND(f.grossProfitMarginTTM * 100, 1) AS gross_margin_pct,
 ROUND(f.operatingProfitMarginTTM * 100, 1) AS op_margin_pct,
 ROUND(k.returnOnEquityTTM * 100, 1) AS roe_pct,
 ROUND(k.marketCap / 1e9, 2) AS mktcap_b
 FROM financial_ratios_ttm f
 JOIN key_metrics_ttm k ON f.symbol = k.symbol
 JOIN profile p ON f.symbol = p.symbol
 WHERE f.priceToSalesRatioTTM > 0
 AND f.priceToSalesRatioTTM < 1
 AND f.grossProfitMarginTTM > 0.20
 AND f.operatingProfitMarginTTM > 0.05
 AND k.returnOnEquityTTM > 0.10
 AND k.marketCap > 20000000000
 AND p.exchange IN ('BSE', 'NSE')
 QUALIFY ROW_NUMBER() OVER (PARTITION BY f.symbol ORDER BY f.priceToSalesRatioTTM ASC) = 1
 ORDER BY f.priceToSalesRatioTTM ASC
 LIMIT 30
 """,
 "options": {"format": "json", "limit": 100}
})
task_id = resp.json()["taskId"]

while True:
 result = requests.get(f"{BASE}/tasks/data-query/{task_id}",
 headers={"X-API-Key": API_KEY}).json()
 if result["status"] in ("completed", "failed"):
 break
 time.sleep(2)

for r in result["result"]["rows"][:10]:
 print(f"{r['symbol']:12s} P/S={r['ps_ratio']:.3f} GM={r['gross_margin_pct']:.1f}% ROE={r['roe_pct']:.1f}%")

Get your API key at cetaresearch.com. The full backtest code (Python + DuckDB) is on GitHub.


Data: Ceta Research, FMP financial data warehouse. Universe: BSE + NSE. Returns in INR. Quarterly rebalance, equal weight, 2000-2025.

Read more