Sector Mean Reversion on Hong Kong: 6.51% CAGR, -1.51% vs S&P 500
Hong Kong's sector mean reversion result is a mixed picture. Over 26 years, the strategy returned 6.51% annualized in HKD, trailing the S&P 500's 8.02% by 1.51% per year. But the year-by-year story is anything but flat. 2009 delivered +105.53%, the second-highest single-year return in the entire 14-exchange study. 2008 was -53.09%, worse than SPY. 2023 was -15.66% while SPY gained +26%. HKSE produces dramatic individual years that don't average out to competitive long-run performance.
Contents
- Method
- What is Sector Mean Reversion?
- Most Selected Sectors (of 97 invested quarters)
- The Screen
- What We Found
- 26 years. -1.51% annual gap vs the S&P 500.
- Year-by-Year Returns
- Notable Periods
- 2003: SARS recovery, +73.88%
- 2007: Pre-GFC China boom, +42.59%
- 2008-2009: The crash and the recovery
- 2013-2014: Two years near zero
- 2021-2023: Three years of persistent underperformance
- 2025: Sharp reversal, +42.35%
- Backtest Methodology
- Limitations
- Takeaway
- Part of a Series
- References
- Run This Screen Yourself
Method
- Data source: Ceta Research (FMP financial data warehouse)
- Universe: HKSE (Hong Kong Stock Exchange), market cap > HKD $3B (~USD $400M)
- Period: 2000-2025 (26 years, 104 quarterly periods)
- Rebalancing: Quarterly (January, April, July, October)
- Signal: Buy all stocks in the bottom 2 sectors by 12-month trailing equal-weighted return
- Portfolio construction: Equal weight all qualifying stocks in selected sectors
- Benchmark: S&P 500 Total Return (SPY)
- Cash rule: Hold cash if fewer than 5 stocks qualify
- Currency note: Returns are in HKD (local currency). Benchmark is SPY in USD.
Historical financial data with 45-day lag to prevent look-ahead bias. Full methodology: backtests/METHODOLOGY.md
What is Sector Mean Reversion?
The strategy is simple. At each quarterly rebalance, we rank all sectors by their equal-weighted 12-month trailing return. We buy every qualifying stock in the bottom 2 sectors. Next quarter, we re-rank and rotate.
The academic basis comes from Moskowitz and Grinblatt (1999), who showed that industry-level momentum explains much of the stock momentum anomaly. The reverse holds too: sectors that have underperformed for a full year tend to carry suppressed valuations and depressed sentiment that eventually normalize.
Hong Kong is a structurally unusual market for this strategy. It's classified as a developed market, but a large portion of its listed companies are mainland Chinese firms (H-shares, Red Chips) that trade in Hong Kong but operate under PRC regulatory and economic conditions. The sector underperformance that drives the strategy's signal in HK often reflects policy risk, regulatory crackdowns, and real estate sector stress, not the sentiment-driven cycles that fuel reversion in Western markets. That structural difference shows up in the results.
With an average of 72.3 stocks per quarter across the two selected sectors, the portfolio is more concentrated than the US (603 stocks) but comparable to other Asian markets.
Most Selected Sectors (of 97 invested quarters)
| Sector | Quarters Selected |
|---|---|
| Communication Services | 31 (32%) |
| Technology | 22 (23%) |
| Real Estate | 22 (23%) |
| Healthcare | 21 (22%) |
| Basic Materials | 20 (21%) |
| Energy | 18 (19%) |
Communication Services leads at 32%. HK's telecom and media stocks were beaten down repeatedly through the study period. Tech and Real Estate tie at 22 quarters each, with Real Estate reflecting the Evergrande-era stress that began in 2020 and accelerated through 2022-2023. Healthcare's 22-quarter presence reflects the biotech and pharmaceutical segment that repeatedly underperformed before recovering. The sector mix reflects a market where China-linked sectors cycle through regulatory and macro risk as much as sentiment.
The Screen
The screen below runs live. It ranks HKSE sectors by their current 12-month equal-weighted return. The bottom rows are what the backtest would buy today.
WITH prices AS (
SELECT e.symbol, e.adjClose, CAST(e.date AS DATE) AS trade_date
FROM stock_eod e
JOIN profile p ON e.symbol = p.symbol
WHERE p.sector IS NOT NULL AND p.sector != ''
AND p.marketCap > 3000000000
AND p.exchange IN ('HKSE')
AND CAST(e.date AS DATE) >= CURRENT_DATE - INTERVAL '400' DAY
AND e.adjClose IS NOT NULL AND e.adjClose > 0
),
recent AS (
SELECT symbol, adjClose AS recent_price
FROM prices
QUALIFY ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY trade_date DESC) = 1
),
year_ago AS (
SELECT symbol, adjClose AS old_price
FROM prices
WHERE trade_date <= CURRENT_DATE - INTERVAL '252' DAY
QUALIFY ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY trade_date DESC) = 1
),
stock_returns AS (
SELECT r.symbol, pr.sector,
(r.recent_price / ya.old_price - 1) * 100 AS return_12m
FROM recent r
JOIN year_ago ya ON r.symbol = ya.symbol
JOIN profile pr ON r.symbol = pr.symbol
WHERE ya.old_price > 0 AND r.recent_price > 0
AND (r.recent_price / ya.old_price - 1) BETWEEN -0.99 AND 5.0
)
SELECT pr.sector,
ROUND(AVG(sr.return_12m), 2) AS avg_return_12m_pct,
COUNT(DISTINCT sr.symbol) AS n_stocks,
ROW_NUMBER() OVER (ORDER BY AVG(sr.return_12m) ASC) AS rank_worst
FROM stock_returns sr
JOIN profile pr ON sr.symbol = pr.symbol
GROUP BY pr.sector
HAVING COUNT(DISTINCT sr.symbol) >= 5
ORDER BY avg_return_12m_pct ASC
What We Found
The strategy produced volatile, dramatic years that didn't compound into a market-beating outcome. The down capture of 87.28%, while better than the US strategy's 113.65%, wasn't enough to compensate for persistent underperformance in recent years.

26 years. -1.51% annual gap vs the S&P 500.
| Metric | Portfolio | S&P 500 |
|---|---|---|
| CAGR | 6.51% | 8.02% |
| Excess CAGR | -1.51% | — |
| Volatility | 27.82% | — |
| Max Drawdown | -54.26% | -45.53% |
| Sharpe Ratio | 0.126 | — |
| Sortino Ratio | 0.212 | — |
| Calmar Ratio | 0.120 | — |
| Win Rate vs SPY | 47.12% | — |
| Up Capture | 98.04% | — |
| Down Capture | 87.28% | — |
| Avg Stocks per Period | 72.3 | — |
| Cash Periods | 7 of 104 | — |
The numbers tell a consistent story. The strategy captures 98% of SPY's upside but still loses 87.28% of its downside, that combination doesn't generate alpha over 26 years. The Sharpe of 0.126 is among the lowest in the study. The -54.26% max drawdown is worse than SPY's -45.53%. The win rate of 47.12% means the strategy trailed SPY in the majority of quarters.
Seven cash periods versus 3 for the US reflects the thinner sector universe in Hong Kong. When markets were badly dislocated, the strategy occasionally couldn't find 5 qualifying stocks across two sectors.
Year-by-Year Returns

| Year | Portfolio | S&P 500 | Excess |
|---|---|---|---|
| 2000 | 0.00% (cash) | -10.50% | +10.50% |
| 2001 | -1.16% | -9.17% | +8.01% |
| 2002 | -5.62% | -19.92% | +14.30% |
| 2003 | +73.88% | +24.12% | +49.76% |
| 2004 | -8.49% | +10.24% | -18.73% |
| 2005 | +4.74% | +7.17% | -2.43% |
| 2006 | +25.36% | +13.65% | +11.71% |
| 2007 | +42.59% | +4.40% | +38.19% |
| 2008 | -53.09% | -34.31% | -18.78% |
| 2009 | +105.53% | +24.73% | +80.80% |
| 2010 | +11.98% | +14.31% | -2.33% |
| 2011 | -20.66% | +2.46% | -23.12% |
| 2012 | +19.94% | +17.09% | +2.85% |
| 2013 | +0.90% | +27.77% | -26.87% |
| 2014 | +0.45% | +14.50% | -14.05% |
| 2015 | -8.92% | -0.12% | -8.80% |
| 2016 | +16.45% | +14.45% | +2.00% |
| 2017 | +16.38% | +21.64% | -5.26% |
| 2018 | -19.61% | -5.15% | -14.46% |
| 2019 | +24.16% | +32.31% | -8.15% |
| 2020 | +5.11% | +15.64% | -10.53% |
| 2021 | +2.07% | +31.26% | -29.19% |
| 2022 | +5.11% | -18.99% | +24.10% |
| 2023 | -15.66% | +26.00% | -41.66% |
| 2024 | +6.90% | +25.28% | -18.38% |
| 2025 | +42.35% | +17.88% | +24.47% |
Notable Periods
2003: SARS recovery, +73.88%
SARS crushed Hong Kong in early 2003. Retail, travel, and hospitality-linked sectors were decimated. By mid-2003, the epidemic was contained and the China-driven economic boom resumed. Beaten-down sectors that the strategy had loaded up on. Communication Services and Technology among them, recovered hard. The +49.76% excess over SPY was the single best year for HK's strategy until 2009.
2007: Pre-GFC China boom, +42.59%
The run-up to the Global Financial Crisis was a period of exceptional performance for Chinese and HK-listed companies. Mainland Chinese companies were listing in Hong Kong, and capital was flowing into the China growth story. The strategy's selected sectors caught the tail end of that boom: +42.59% vs SPY's +4.40%, a 38-point gap. In retrospect, the concentration of risk was building. 2008 would collect it.
2008-2009: The crash and the recovery
2008 was -53.09%, against SPY's -34.31%, an 18.78-point gap in the wrong direction. HK's heavy exposure to mainland Chinese financial and real estate companies amplified the GFC shock. Property stocks and banks that had surged in 2007 collapsed.
2009 then produced +105.53%, the second-highest single-year return in the entire 14-exchange study. Only China's 2007 result exceeded it. This is sector mean reversion working exactly as designed, the sectors most destroyed in 2008 recovered most violently in 2009. Communication Services, Technology, and Real Estate all contributed. The +80.80% excess over SPY in 2009 is remarkable in isolation.
The problem is sequencing. Losing 53% then gaining 106% gets you back to roughly where you started. The compounding math is unforgiving. The strategy needed the 2009 recovery just to recover 2008 losses, not to build on them.
2013-2014: Two years near zero
2013: +0.90%. 2014: +0.45%. Combined excess: -40.92% over two years. SPY returned +27.77% and +14.50% in those same years. HK's strategy was effectively in suspended animation while global equities rallied. The sectors selected. Real Estate and Communication Services, were facing structural headwinds: HK's real estate market was cooling under government cooling measures, and telecom competition was eroding margins. The sentiment signal didn't find tradeable undervaluation. It found genuine fundamental weakness.
2021-2023: Three years of persistent underperformance
This is the period that defines the modern HK experience. The Chinese regulatory crackdown on tech, education, and fintech companies (2021) hit HK-listed stocks directly. Evergrande's collapse and the subsequent Chinese real estate contagion (2021-2023) demolished Real Estate and related sectors. These weren't sentiment cycles. They were structural and regulatory shifts.
2021: +2.07% vs SPY +31.26% (-29.19% excess) 2022: +5.11% vs SPY -18.99% (+24.10% excess, one of the good years, as SPY fell hard and HK held up) 2023: -15.66% vs SPY +26.00% (-41.66% excess)
The -41.66% excess in 2023 is the largest single-year underperformance gap in the HK backtest and one of the largest in the entire study. The sectors the strategy was buying. Real Estate, Communication Services, didn't recover. They kept falling as the China real estate crisis worsened and regulatory uncertainty persisted.
2025: Sharp reversal, +42.35%
2025 delivered +42.35% vs SPY's +17.88%, a +24.47% excess. Sectors beaten down through 2023-2024 finally reverted. Whether this marks a regime change or a temporary bounce remains to be seen.
Backtest Methodology
| Parameter | Value |
|---|---|
| Signal | 12-month trailing equal-weighted sector return |
| Selection | Bottom 2 sectors each quarter |
| Universe | HKSE, market cap > HKD $3B |
| Portfolio | Equal weight all qualifying stocks in selected sectors |
| Rebalancing | Quarterly (Jan, Apr, Jul, Oct) |
| Cash rule | Hold cash if < 5 qualifying stocks |
| Transaction costs | Size-tiered model |
| Data lag | 45 days (prevents look-ahead bias) |
| Period | 2000-2025 (104 quarterly periods) |
| Benchmark | S&P 500 Total Return (SPY) |
Limitations
Mainland China exposure creates non-cyclical risk. The biggest issue for sector mean reversion in Hong Kong is that a large portion of the HKSE universe is mainland Chinese companies (H-shares, Red Chips). Their underperformance often reflects regulatory decisions, political risk, and policy shifts, not the sentiment-driven cycles that this strategy is designed to exploit. The 2021-2023 period is the clearest example: Real Estate underperformance was driven by Evergrande and PRC policy, not temporary investor pessimism.
-54.26% max drawdown. Worse than SPY's -45.53% and worse than most other exchanges in the study. HK's combination of GFC sensitivity (2008) and China regulatory risk (2021-2023) produced a deeper drawdown profile than a diversified global portfolio.
87.28% down capture doesn't offset 98.04% up capture. You need the down capture to be substantially lower than the up capture to generate alpha. At 98% up and 87% down, the math produces slightly negative excess returns. Compare Korea (108% up, 37% down) to see what the asymmetry needs to look like.
Currency. Returns are in HKD. The HKD is pegged to the USD within a narrow band (7.75-7.85), so currency risk is minimal for USD-based investors, the currency itself isn't the issue.
Thin universe relative to US. At 72.3 stocks per quarter, the portfolio is diversified but concentrated enough that a few bad sectors can have a large impact. The 7 cash periods (vs 3 for the US) show that the smaller universe occasionally hits the 5-stock minimum rule.
Survivorship bias. Exchange membership uses current profiles, not historical. Companies that were delisted, acquired, or privatized aren't tracked.
Takeaway
Sector mean reversion on HKSE doesn't work over 26 years. The -1.51% annual underperformance reflects a structural problem: Hong Kong's sector underperformance cycles are often driven by China-specific regulatory and policy risk, not the temporary sentiment dislocations that fuel reversion in Western and even other Asian markets.
The headline numbers look dramatic, 2009 was +105.53%, 2003 was +73.88%, 2025 was +42.35%. But those standout years are matched by crashes (-53.09% in 2008) and multi-year stagnation (2013-2014, 2021-2023). The strategy generates extreme variance without generating excess return.
The 87.28% down capture is the one genuine positive. In bad markets, the strategy tends to fall less than SPY. But it's not low enough to compensate for the underperformance in good markets.
HK sits in an unusual position in this study: enough volatility to produce dramatic individual years, not enough structural mean reversion to compound into positive long-run alpha.
Part of a Series
This analysis is part of our Sector Mean Reversion global exchange comparison. We tested the same strategy across multiple exchanges: - Sector Mean Reversion on US Stocks (NYSE + NASDAQ + AMEX), 10.59% CAGR, +2.57% vs SPY - Sector Mean Reversion on Indian Stocks (BSE + NSE), 16.42% CAGR, +8.40% vs SPY - Sector Mean Reversion on Korean Stocks (KSC), 14.65% CAGR, best risk-adjusted of 14 exchanges - Sector Mean Reversion on Taiwanese Stocks (TAI + TWO), 14.61% CAGR - Sector Mean Reversion on Swedish Stocks (STO) - Sector Mean Reversion: Global Exchange Comparison
References
Moskowitz, T. J., & Grinblatt, M. (1999). Do industries explain momentum? Journal of Finance, 54(4), 1249-1290.
Run This Screen Yourself
Via web UI: Run the sector screen on Ceta Research Data Explorer. Paste the SQL above, set exchange to HKSE, and hit Run to see current sector rankings.
Via Python:
import requests, time
API_KEY = "your_api_key" # get one at cetaresearch.com
BASE = "https://tradingstudio.finance/api/v1"
query = """
WITH prices AS (
SELECT e.symbol, e.adjClose, CAST(e.date AS DATE) AS trade_date
FROM stock_eod e
JOIN profile p ON e.symbol = p.symbol
WHERE p.sector IS NOT NULL AND p.sector != ''
AND p.marketCap > 3000000000
AND p.exchange IN ('HKSE')
AND CAST(e.date AS DATE) >= CURRENT_DATE - INTERVAL '400' DAY
AND e.adjClose IS NOT NULL AND e.adjClose > 0
),
recent AS (
SELECT symbol, adjClose AS recent_price
FROM prices
QUALIFY ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY trade_date DESC) = 1
),
year_ago AS (
SELECT symbol, adjClose AS old_price
FROM prices
WHERE trade_date <= CURRENT_DATE - INTERVAL '252' DAY
QUALIFY ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY trade_date DESC) = 1
),
stock_returns AS (
SELECT r.symbol, pr.sector,
(r.recent_price / ya.old_price - 1) * 100 AS return_12m
FROM recent r
JOIN year_ago ya ON r.symbol = ya.symbol
JOIN profile pr ON r.symbol = pr.symbol
WHERE ya.old_price > 0 AND r.recent_price > 0
AND (r.recent_price / ya.old_price - 1) BETWEEN -0.99 AND 5.0
)
SELECT pr.sector,
ROUND(AVG(sr.return_12m), 2) AS avg_return_12m_pct,
COUNT(DISTINCT sr.symbol) AS n_stocks,
ROW_NUMBER() OVER (ORDER BY AVG(sr.return_12m) ASC) AS rank_worst
FROM stock_returns sr
JOIN profile pr ON sr.symbol = pr.symbol
GROUP BY pr.sector
HAVING COUNT(DISTINCT sr.symbol) >= 5
ORDER BY avg_return_12m_pct ASC
"""
resp = requests.post(f"{BASE}/data-explorer/execute", headers={
"X-API-Key": API_KEY, "Content-Type": "application/json"
}, json={
"query": query,
"options": {"format": "json", "limit": 100},
"resources": {"memoryMb": 16384, "threads": 6}
})
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)
print("Sector rankings (worst to best, 12-month return):")
for r in result["result"]["rows"]:
flag = " <-- BUY" if r["rank_worst"] <= 2 else ""
print(f"#{r['rank_worst']} {r['sector']:30s} {r['avg_return_12m_pct']:+.1f}% ({r['n_stocks']} stocks){flag}")
Get your API key at cetaresearch.com. The full backtest code (Python + DuckDB) is on GitHub.
Part of a Series: US | Global | Global | US | UK | Thailand | Taiwan | Taiwan
Data: Ceta Research, FMP financial data warehouse. Universe: HKSE, market cap > HKD $3B. Quarterly rebalance, equal weight, 2000-2025. Returns in HKD. Past performance doesn't guarantee future results.