52-Week Low Quality: 24-Year Hong Kong Backtest (HKSE)
A $10,000 investment in 2002 following this strategy on the Hong Kong Stock Exchange was worth $5,472 by end of 2025. That's a 45% nominal loss over 24 years, not accounting for inflation.
Contents
This is the worst result across every exchange we tested. And the reasons explain something specific: a quality filter built around financial statements can't protect you from geopolitical risk.
Data: FMP financial data warehouse, 2000–2025. Updated March 2026.
Method
Each quarter (January, April, July, October), screen for stocks within 15% of their 52-week low. Require a Piotroski F-score of 7 or higher, meaning the stock must show improving profitability, leverage, and operating efficiency. Hold up to 30 stocks equal-weight. Minimum 5 qualifying names to deploy capital. Sit in cash otherwise. Transaction costs: 0.1% per trade. Filing lag: 45 days.
Benchmark: Hang Seng Index (^HSI), 3.76% CAGR over 2002-2025.
What We Found
| Metric | 52-Low Quality (HKSE) | Hang Seng |
|---|---|---|
| CAGR | -2.51% | 3.76% |
| Total Return | -45.27% | 140.39% |
| Excess Return vs Hang Seng | -6.27% | — |
| Max Drawdown | -79.92% | -48.50% |
| Sharpe Ratio | -0.260 | 0.036 |
| Sortino Ratio | -0.354 | — |
| Calmar Ratio | -0.031 | — |
| Volatility | 21.19% | 21.05% |
| Up-Capture | 59.55% | — |
| Down-Capture | 86.45% | — |
| Beta | 0.782 | — |
| Alpha | -6.10% | — |
| Win Rate vs bench | 36.84% | — |
| Cash Periods | 14/95 quarters | — |
| Avg Stocks (when invested) | 23.3 | — |
| $10k → | $5,473 | $24,039 |
The down-capture of 86.45% means the portfolio falls nearly as much as the Hang Seng during selloffs, while the up-capture of 59.55% means it captures only 60% of the upside. That asymmetry is the core problem. An alpha of -6.10% means you were losing about 6 percentage points per year relative to the Hang Seng on a risk-adjusted basis. Still clearly bad.
The max drawdown of -79.92% is not a theoretical figure. The portfolio actually lost nearly 80% of its peak value across the worst stretch of this test.

Year-by-Year
| Year | Portfolio | Hang Seng |
|---|---|---|
| 2002 | +0.79% | -17.49% |
| 2003 | -5.46% | +36.69% |
| 2004 | -3.98% | +11.22% |
| 2005 | -2.90% | +4.97% |
| 2006 | +24.99% | +35.90% |
| 2007 | +30.94% | +35.70% |
| 2008 | -58.09% | -45.42% |
| 2009 | +1.00% | +45.07% |
| 2010 | +8.43% | +7.39% |
| 2011 | -25.65% | -19.45% |
| 2012 | +15.14% | +23.49% |
| 2013 | -2.83% | +0.12% |
| 2014 | -3.97% | +2.22% |
| 2015 | -13.90% | -10.61% |
| 2016 | +2.37% | +3.86% |
| 2017 | +18.33% | +37.76% |
| 2018 | -19.12% | -17.65% |
| 2019 | +4.05% | +13.58% |
| 2020 | +9.04% | -3.75% |
| 2021 | -9.31% | -15.28% |
| 2022 | -12.64% | -13.45% |
| 2023 | -10.24% | -16.66% |
| 2024 | +33.03% | +16.89% |
| 2025 | +13.39% | +39.05% |
The early years looked fine. 2006 and 2007 delivered decent returns, though the portfolio lagged the Hang Seng in both years (+24.99% vs +35.90%, +30.94% vs +35.70%). Then 2008 erased it all, with a -58.09% loss against the Hang Seng's -45.42%. The strategy fell harder than the benchmark during the crash.
The failure to recover in 2009 (+1.00% vs the Hang Seng's +45.07%) is the defining moment. Mean-reversion strategies are supposed to benefit from post-crash bounces. Hong Kong stocks near lows after 2008 were often cheap for real reasons. The Piotroski filter looked backward at financial statements. The economic disruption ahead was not in those statements yet.
The 2020-2023 stretch is actually where the strategy held up better against the local benchmark. The Hang Seng itself was negative in three of those four years. The portfolio still lost money, but the gap narrowed. In 2020, the portfolio returned +9.04% while the Hang Seng fell -3.75%.
The 2024 recovery of +33.03% outpaced the Hang Seng's +16.89%. But 2025 reversed: the portfolio returned +13.39% while the Hang Seng surged +39.05%.

Why Hong Kong Breaks This Strategy
The Piotroski F-score checks nine items: positive net income, positive cash flow from operations, improving return on assets, improving cash flow quality, decreasing leverage, improving current ratio, no equity dilution, improving asset turnover, and improving gross margin. A score of 7+ means the company is passing most of these tests.
None of those tests can identify whether a company's primary customer is a property developer now drowning in debt. None of them flag whether a sector is about to be declared a "common prosperity" target by Beijing. None of them account for the risk that a stock exchange loses its reputation as a rule-of-law jurisdiction.
That's what happened in Hong Kong.
The companies that qualified for this screen in 2020 and 2021 often had solid F-scores. They were profitable, had improving margins, and weren't over-leveraged. But they were operating inside a macroeconomic and political environment that was structurally deteriorating. The strategy's -6.10% alpha against the Hang Seng still represents consistent value destruction by the stock selection process.
Three distinct crashes compound to create the -79.92% max drawdown: 1. 2008 GFC (-58.09% in the portfolio) 2. The 2011 European sovereign debt crisis spillover (-25.65% that year) 3. The 2020 to 2023 China/HK policy and regulatory spiral
Each time, the portfolio was loaded with Piotroski-qualified stocks that looked financially healthy going in. Financial health doesn't equal price recovery when the macro environment is actively hostile.
The 86.45% down-capture tells the story more precisely. In periods when the Hang Seng fell, this portfolio fell about 86% as much. Combined with the 59.55% up-capture, the asymmetry is consistently wrong-way. The 14/95 cash periods (15% of all quarters) mean the portfolio was mostly invested during these drawdowns. It didn't dodge them.
Run It Yourself
The live screen below shows current HKSE stocks within 15% of their 52-week low with Piotroski F-score ≥ 7.
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.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 AND p.exchange = 'HKSE'
JOIN price_summary ps ON pio.symbol = ps.symbol
JOIN key_metrics_ttm k ON pio.symbol = k.symbol
WHERE k.marketCap > 500000000
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 this on Ceta Research Data Explorer with your API key.
Limitations
Survivorship bias: Delisted Hong Kong companies are not included. Given the number of HK companies that were suspended or delisted between 2020 and 2024, this meaningfully overstates returns. The actual results from a live strategy would likely be worse.
Geopolitical risk is not captured in backtests: The 2020 to 2023 Hong Kong regulatory environment was unprecedented. Backtests assume the future looks like the past. When political regimes shift, that assumption fails.
Currency: Returns and benchmark are both in HKD. The HKD peg to USD means currency risk is minimal for USD-based investors, but this also means the exchange doesn't benefit from currency appreciation that can lift returns in freely floating markets.
Market cap filter: We used HKD 500M (~USD 64M) as the minimum. This is a reasonable threshold for liquidity, but it excludes a significant portion of HKSE-listed names that are smaller Chinese companies with genuinely different risk profiles.
Forward-looking note: The 2024 recovery (+33.03%) is real. Some investors believe Chinese regulatory headwinds have peaked and valuations are genuinely cheap. This backtest doesn't predict what happens next. It documents what happened across 24 years.
Data: Ceta Research (FMP financial data warehouse), 2002-2025. Full methodology: backtests/METHODOLOGY.md. Backtest code: backtests/52-week-low/.