52-Week Low Quality: Global Comparison Across 16 Exchanges

52-Week Low Quality: Global Comparison Across 14 Exchanges

The strategy is straightforward: buy financially healthy stocks that are near their annual lows, wait for them to recover, rotate quarterly. Simple premise. The question is whether the premise holds globally or just in certain market structures.

Contents

  1. Method
  2. What We Found
  3. Why Japan and Germany Work
  4. The US Paradox
  5. Where the Strategy Structurally Fails
  6. The Down-Capture Story
  7. Run It Yourself
  8. Limitations

We ran this screen on 16 exchanges covering 2002-2025, each measured against its local benchmark (Sensex for India, DAX for Germany, Nikkei for Japan, etc.). The results range from +3.08% annual excess in Japan to -10.86% in India. Four exchanges beat their local benchmark. The rest underperform, some catastrophically.

Here's the full picture.

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


Method

Every quarter (January, April, July, October), screen stocks trading within 15% of their 52-week low with a Piotroski F-score of 7 or higher. The Piotroski filter requires improving profitability, leverage, and efficiency, it removes companies that are cheap for fundamental reasons. Hold up to 30 stocks equal-weight, minimum 5 to deploy capital. Costs: 0.1% per trade. Filing lag: 45 days. Execution: next-day close (market-on-close).

Each exchange is benchmarked against its local index (Sensex, DAX, Nikkei, TSX Composite, etc.) to measure alpha in local currency terms. This is the correct comparison for a local investor.


What We Found

Exchange CAGR Benchmark vs Local Sharpe MaxDD Dn-Cap Cash% Avg Stks
JPX (Japan) 9.24% Nikkei 6.16% +3.08% 0.512 -45.73% 54.9% 4% 25.5
XETRA (Germany) 7.81% DAX 6.76% +1.05% 0.447 -33.44% 32.3% 1% 24.6
SHZ+SHH (China) 6.60% SSE 3.74% +2.86% 0.137 -52.46% 9% 26.5
US (NYSE+NASDAQ+AMEX) 6.56% S&P 500 9.67% -3.12% 0.214 -44.54% 114.5% 0% 28.5
India (NSE) 3.62% Sensex 14.48% -10.86% -0.114 -55.06% 77.6% 34% 22.0
TSX (Canada) 6.10% TSX Comp 5.95% +0.16% 0.227 -36.29% 78.3% 8% 20.0
LSE (UK) 3.75% FTSE 2.52% +1.22% 0.013 -46.82% 12%
STO (Sweden) 2.36% OMX30 5.09% -2.74% 0.021 -54.47% 53%
SES (Singapore) 1.59% STI 4.20% -2.62% -0.109 -17.92% 64%
KSC (Korea) 1.50% KOSPI 6.92% -5.41% -0.088 -40.99% 53.2% 36% 21.1
OSL (Norway) 0.36% Oslo AS 10.91% -10.55% -0.334 -18.91% 86%
TAI+TWO (Taiwan) 0.20% TAIEX 6.74% -6.54% -0.051 -46.11% 31%
SIX (Switzerland) 0.00% SMI 2.85% -2.85% -0.036 -59.50% 24% 17.7
SET (Thailand) -0.87% SET 6.25% -7.12% -0.160 -56.44% 39%
JNB (South Africa) -1.96% SPY* 9.67% -11.63% -0.741 -62.48% 78%
HKSE (Hong Kong) -2.51% Hang Seng 3.76% -6.27% -0.260 -79.92% 86.5% 15% 23.3

*JNB and PAR fall back to SPY (no local index data available in FMP). PAR excluded entirely (0 qualifying stocks in 95 quarters).

Four exchanges beat their local benchmark: Japan (+3.08%), China (+2.86%), Germany (+1.05%), and the UK (+1.22%). Canada essentially matches (+0.16%). The rest underperform, some severely.

52-Week Low Quality — CAGR by Exchange vs SPY
52-Week Low Quality — CAGR by Exchange vs SPY


Why Japan and Germany Work

Japan is the top performer: 9.24% CAGR, +3.08% vs the Nikkei 225, Sharpe 0.512, alpha +4.92%. Previously excluded from this study due to insufficient FY data, JPX now has enough coverage to run the full backtest. The result is striking. Only 4 cash periods in 95 quarters. Win rate of 57.89%, the highest of any exchange.

Japan's equity market shares structural similarities with Germany. The Tokyo Stock Exchange is dominated by precision manufacturers, automotive suppliers, electronics companies, and trading houses. These businesses have genuine earnings cycles. They trade near 52-week lows when exports slow or the yen strengthens. With Piotroski scores of 7+, they're operationally sound. When the headwind fades, they recover.

Germany is the second strongest result: 7.81% CAGR, +1.05% vs the DAX, Sharpe 0.447, alpha +3.77%. Max drawdown of -33.44% vs the DAX's -51.25%. The down-capture of 32.27% is the best in the table: when the DAX falls, this portfolio absorbs roughly a third of the loss.

The XETRA composition explains this. Mittelstand-adjacent industrials, specialty chemicals, automotive suppliers, capital equipment companies. These businesses are genuinely cyclical. They trade near 52-week lows when order books dry up during slowdowns. They have strong Piotroski scores because their underlying business models are sound. And they mean-revert cleanly when the cycle turns.

Both Japan and Germany share three conditions: (1) industrial cyclicals dominate the exchange, (2) conservative accounting standards make the Piotroski score reliable, and (3) lower algo saturation than the US means the signal has time to play out at quarterly frequency.


The US Paradox

The US result is the most instructive failure. Zero cash periods, the market always had qualifying stocks. 6.56% CAGR vs SPY's 9.67%, a -3.12% annual drag. Down-capture of 114.5%.

The explanation: the US market is the most efficiently priced in the world. When a US stock drops to its 52-week low, thousands of analysts, quant funds, and algorithmic traders have already noticed. The mean-reversion signal gets arbitraged away before a quarterly rebalancing strategy can capture it. The 52-week-low discount exists, but it evaporates fast. By the time the screen fires and you buy, much of the recovery is already priced in.

The 114.5% down-capture is the other side of this problem. In US corrections, there's no flight to safety in beaten-down value stocks. Everything falls together. Liquidity and market depth mean these names correlate tightly with the index during risk-off episodes.

Canada (TSX) essentially matches its local benchmark at 6.10% CAGR vs TSX Composite's 5.95%. That +0.16% excess is barely positive. Canadian equities have more exposure to materials and energy companies, genuinely cyclical businesses where the mean-reversion mechanism works modestly better.


Where the Strategy Structurally Fails

Three exchanges are effectively unusable: Norway (86% cash), Singapore (64% cash), and South Africa (78% cash).

Norway's Sharpe of -0.334 is among the worst in the table. But the cash rate tells the real story. 86% of quarters had fewer than 5 qualifying stocks. The Oslo Bors is heavily weighted toward energy and shipping. The Piotroski screen is demanding, energy companies near lows often have deteriorating cash flows and leverage metrics. The screen correctly avoids them, but that means the strategy mostly sits idle. The Oslo All Share returned 10.91% annually, making the -10.55% excess gap enormous.

Singapore returned 1.59% CAGR vs the STI's 4.20%. 64% cash means you're earning money market rates for two-thirds of the test period. The exchange is too thin for this strategy.

South Africa has a -0.741 Sharpe, the worst absolute risk-adjusted number in the table. The 78% cash rate plus a -62.48% max drawdown when it does invest is a brutal combination.


The Down-Capture Story

Down-capture is the metric that separates useful strategies from expensive index tracking. With local benchmarks, the picture changes:

Exchange Benchmark Down-Capture
Germany (XETRA) DAX 32.3%
Japan (JPX) Nikkei 54.9%
Korea (KSC) KOSPI 53.2%
India (NSE) Sensex 77.6%
Hong Kong (HKSE) Hang Seng 86.5%
US S&P 500 114.5%

Germany's 32.3% down-capture vs the DAX is the standout. When the DAX falls, this portfolio absorbs roughly a third of the loss. Combined with +1.05% excess CAGR, that's genuine risk-adjusted outperformance.

Japan's 54.9% down-capture vs the Nikkei is solid but less dramatic. The +3.08% excess more than compensates. Japan is the highest absolute CAGR (9.24%) of any exchange in the test.

China now shows +2.86% excess vs the SSE Composite. The Sharpe of 0.137 is modest, but the strategy does generate local alpha in a market where retail sentiment dominates and fundamental quality is underpriced.

Germany and Japan are the two exchanges combining genuine crash protection with positive excess returns vs local benchmarks. Everything else involves a meaningful trade-off.


Run It Yourself

The query below screens all supported exchanges simultaneously. Filter by exchange column to isolate specific markets.

WITH
inc AS (
    SELECT symbol, netIncome, grossProfit, revenue,
           ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY dateEpoch DESC) AS rn
    FROM income_statement WHERE period = 'FY' AND netIncome IS NOT NULL
),
bal AS (
    SELECT symbol, totalAssets, totalCurrentAssets, totalCurrentLiabilities,
           longTermDebt, totalStockholdersEquity,
           ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY dateEpoch DESC) AS rn
    FROM balance_sheet WHERE period = 'FY' AND totalAssets > 0
),
cf AS (
    SELECT symbol, operatingCashFlow,
           ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY dateEpoch DESC) AS rn
    FROM cash_flow_statement WHERE period = 'FY' AND operatingCashFlow IS NOT NULL
),
piotroski AS (
    SELECT ic.symbol,
        CASE WHEN ic.netIncome > 0 THEN 1 ELSE 0 END
        + CASE WHEN cfc.operatingCashFlow > 0 THEN 1 ELSE 0 END
        + CASE WHEN (ic.netIncome/bc.totalAssets) > (ip.netIncome/bp.totalAssets) THEN 1 ELSE 0 END
        + CASE WHEN cfc.operatingCashFlow/bc.totalAssets > ic.netIncome/bc.totalAssets THEN 1 ELSE 0 END
        + CASE WHEN (COALESCE(bc.longTermDebt,0)/bc.totalAssets) < (COALESCE(bp.longTermDebt,0)/bp.totalAssets) THEN 1 ELSE 0 END
        + CASE WHEN (bc.totalCurrentAssets/bc.totalCurrentLiabilities) > (bp.totalCurrentAssets/bp.totalCurrentLiabilities) THEN 1 ELSE 0 END
        + CASE WHEN bc.totalStockholdersEquity >= bp.totalStockholdersEquity THEN 1 ELSE 0 END
        + CASE WHEN (ic.revenue/bc.totalAssets) > (ip.revenue/bp.totalAssets) THEN 1 ELSE 0 END
        + CASE WHEN (ic.grossProfit/ic.revenue) > (ip.grossProfit/ip.revenue) THEN 1 ELSE 0 END
        AS f_score
    FROM (SELECT * FROM inc WHERE rn=1) ic
    JOIN (SELECT * FROM inc WHERE rn=2) ip ON ic.symbol = ip.symbol
    JOIN (SELECT * FROM bal WHERE rn=1) bc ON ic.symbol = bc.symbol
    JOIN (SELECT * FROM bal WHERE rn=2) bp ON ic.symbol = bp.symbol
    JOIN (SELECT * FROM cf WHERE rn=1) cfc ON ic.symbol = cfc.symbol
),
prices_52w AS (
    SELECT symbol,
           LAST_VALUE(adjClose) OVER (PARTITION BY symbol ORDER BY dateEpoch ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS current_price,
           MIN(adjClose) OVER (PARTITION BY symbol) AS low_52w
    FROM stock_eod
    WHERE date >= CURRENT_DATE - INTERVAL '365 days' AND adjClose > 0
),
price_summary AS (
    SELECT symbol, MAX(current_price) AS current_price, MIN(low_52w) AS low_52w
    FROM prices_52w GROUP BY symbol
)
SELECT pio.symbol, p.companyName, p.exchange, p.sector,
       pio.f_score,
       ROUND(ps.current_price, 2) AS current_price,
       ROUND(ps.low_52w, 2) AS low_52w,
       ROUND((ps.current_price - ps.low_52w)/ps.low_52w * 100, 1) AS pct_above_low,
       ROUND(k.marketCap/1e9, 2) AS mktcap_b
FROM piotroski pio
JOIN profile p ON pio.symbol = p.symbol
JOIN price_summary ps ON pio.symbol = ps.symbol
JOIN key_metrics_ttm k ON pio.symbol = k.symbol
WHERE k.marketCap > 100000000
  AND pio.f_score >= 7
  AND (ps.current_price - ps.low_52w)/ps.low_52w <= 0.15
  AND ps.current_price >= 1.0
ORDER BY (ps.current_price - ps.low_52w)/ps.low_52w ASC
LIMIT 30

Run the live global screen on Ceta Research Data Explorer.

52-Week Low Quality — Sharpe Ratio by Exchange vs SPY
52-Week Low Quality — Sharpe Ratio by Exchange vs SPY


Limitations

Local benchmarks are the correct comparison. Each exchange uses its local index (DAX, Sensex, Nikkei, etc.) rather than SPY. This measures alpha in the currency and market structure relevant to a local investor. The trade-off: cross-exchange comparison is harder when each benchmark is different.

Currency effects: All returns are in local currency. Exchange rates matter for international investors. The Swiss franc's safe-haven appreciation, the Indian rupee's depreciation, and the HKD's USD peg all affect USD-denominated returns differently.

Survivorship bias: Delisted companies are excluded across all exchanges. This effect is most pronounced in markets with high delistings (Hong Kong 2020-2024, emerging markets generally). Results are modestly overstated in those markets.

Period dependency: 2002-2025 includes two global crashes, a long QE-driven bull market, and a tech-led recovery. Results from other 24-year windows would differ. Japan and Germany's outperformance is consistent across sub-periods; other results are more period-sensitive.

Market structure changes: The strategy's performance in some exchanges (Hong Kong, China) reflects regime changes not present in the backtest's early years. Mean-reversion assumptions break down when market structure shifts.

The bottom line: this strategy has two reliable implementations, JPX (Japan) and XETRA (Germany), both beating their local benchmarks with Sharpe ratios above 0.44. China shows promise (+2.86% excess) but with higher volatility. The rest are either structural misfits (too few qualifying stocks) or markets where the mean-reversion mechanism doesn't hold.


Data: Ceta Research (FMP financial data warehouse), 2002–2025. Full methodology: backtests/METHODOLOGY.md. Backtest code: backtests/52-week-low/.