Sector Mean Reversion on UK Stocks (LSE): 9.42% CAGR, +7.86% vs FTSE 100

Sector mean reversion on LSE large-cap stocks from 2000 to 2025: 6.47% CAGR vs 8.02% S&P 500. The strategy consistently fires (101 of 104 quarters invested) but underperforms by -1.56% annually in GBP. Energy dominates as the most selected sector.

Growth of £10,000 in Sector Mean Reversion UK (LSE) vs FTSE 100 from 2000 to 2025

We ran a sector mean reversion strategy on London Stock Exchange large-cap stocks from 2000 to 2025. The result was 9.42% annualized in GBP, beating the FTSE 100 by +7.86% per year. The strategy was invested in 101 of 104 quarters, averaged 159 stocks per period, and compounded a £10,000 starting position to £93,775 by end of 2025.

Contents

  1. Method
  2. What is Sector Mean Reversion?
  3. The Screen
  4. What We Found
  5. 26 years. +7.86% annual excess vs the FTSE 100.
  6. Year-by-year returns
  7. 2000-2004: Early dominance
  8. 2009: The best year
  9. 2013-2015: The worst three years
  10. 2016: Post-Brexit recovery
  11. 2020 and beyond: Continued outperformance
  12. Backtest Methodology
  13. Limitations
  14. Takeaway
  15. Part of a Series
  16. References
  17. Run This Screen Yourself

That headline deserves unpacking. The FTSE 100 returned just 1.55% annually over 26 years as a price index. It excludes dividends. If you add UK dividend yields (historically around 3-4% annually), a total-return FTSE benchmark would be meaningfully higher, which would reduce the strategy's excess return. Against SPY on a total-return basis, the UK strategy at 9.42% CAGR beats the S&P 500 (8.02%) by approximately +1.40% annually. The picture is genuinely positive, but the size of the excess vs FTSE 100 is partly a function of how poorly the price-only FTSE 100 has done.

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


Method

Parameter Value
Data source Ceta Research (FMP financial data warehouse)
Universe LSE, market cap > £500M
Period 2000-2025 (26 years, 104 quarterly periods)
Rebalancing Quarterly (January, April, July, October), equal weight all qualifying stocks in selected sectors
Benchmark FTSE 100 (^FTSE)
Cash rule Hold cash if fewer than 5 stocks qualify across the bottom 2 sectors

What is Sector Mean Reversion?

At each quarterly rebalance, we rank all sectors by their equal-weighted 12-month trailing return. We buy every large-cap stock in the bottom 2 sectors. Next quarter, we re-rank and rotate. No discretion, no filters on fundamentals.

The academic foundation is Moskowitz and Grinblatt (1999), who showed that much of the momentum anomaly is explained by industry-level patterns. The corollary: when industry-level momentum is sufficiently negative, mean reversion tends to follow. Sectors that underperform for a full year carry depressed valuations and low sentiment. Both tend to normalize.

On LSE, that normalization happens at a rate that substantially beats the local index. The FTSE 100 is a slow-moving, commodity and finance-heavy index that has delivered almost nothing in price appreciation over 26 years. The strategy's Energy and Consumer Cyclical rotations capture violent recoveries that the buy-and-hold FTSE investor never holds through consistently.

The sectors that show up most often in the UK bottom 2 are:

Sector Quarters Selected (of 104)
Energy 32 (31%)
Utilities 25 (24%)
Consumer Cyclical 24 (23%)
Communication Services 22 (21%)
Real Estate 24 (23%)
Consumer Defensive 19 (18%)

Energy leads at 31 quarters. The LSE has a high concentration of FTSE-listed oil majors and commodity producers. When oil falls, Energy drags. The strategy buys in. Sometimes oil recovers quickly (2009, 2016). Sometimes it doesn't (2015). Over 26 years, the recoveries have outweighed the failed reversions.


The Screen

The screen below ranks LSE large-cap sectors by their current 12-month equal-weighted return. The bottom rows are what the strategy 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 > 500000000
      AND p.exchange IN ('LSE')
      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 stayed invested through almost all 26 years, with just 3 cash periods out of 104 quarters. The up capture of 172.51% and down capture of 91.27% tell the core story: the strategy captures substantially more upside than downside relative to the FTSE 100, and compounds that asymmetry over time.

Growth of £10,000 invested in Sector Mean Reversion UK (LSE) vs FTSE 100 from 2000 to 2025.
Growth of £10,000 invested in Sector Mean Reversion UK (LSE) vs FTSE 100 from 2000 to 2025.

26 years. +7.86% annual excess vs the FTSE 100.

Metric Strategy FTSE 100
CAGR 9.42% 1.55%
Total Return 937.75%
Excess vs FTSE 100 +7.86%
Volatility 23.97%
Max Drawdown -48.45%
Sharpe Ratio 0.241
Calmar Ratio 0.194
Win Rate vs FTSE 100 60.58%
Up Capture 172.51%
Down Capture 91.27%
Avg Stocks per Period 159.5
Cash Periods 3 of 104

Important caveat on the benchmark: The FTSE 100 is a price return index. It doesn't include dividends. UK dividend yields have historically run around 3-4% annually. Adding dividends would push a total-return FTSE benchmark 3-4% higher annually, which would reduce the strategy's +7.86% excess return. Against SPY (which is total return), the UK strategy at 9.42% CAGR beats the S&P 500's 8.02% by approximately +1.40% annually. That's the more honest global comparison.

The up capture of 172.51% is the standout number. The strategy doesn't just keep pace with FTSE gains. It amplifies them. That reflects the strategy's rotational edge: buying beaten-down Energy, Consumer Cyclical, and Utilities that recover sharply when their cycle turns. The down capture of 91.27% is slightly below 100%, meaning the portfolio falls a bit less than the FTSE 100 in bad years. That combination, capturing more on the upside and slightly less on the downside, is what generates the 60.58% win rate.

Year-by-year returns

Sector Mean Reversion vs FTSE 100 annual returns UK (LSE) from 2000 to 2025.
Sector Mean Reversion vs FTSE 100 annual returns UK (LSE) from 2000 to 2025.

Year Strategy FTSE 100 Excess
2000 +11.71% -7.37% +19.07%
2001 -7.70% -15.49% +7.79%
2002 +11.02% -23.16% +34.19%
2003 +47.29% +12.49% +34.80%
2004 +30.04% +7.47% +22.57%
2005 +12.92% +17.22% -4.30%
2006 +34.07% +11.08% +22.99%
2007 -9.47% +1.68% -11.14%
2008 -37.18% -28.91% -8.28%
2009 +76.03% +20.57% +55.45%
2010 +10.53% +9.34% +1.20%
2011 -9.98% -5.22% -4.76%
2012 +10.74% +5.74% +5.00%
2013 -3.24% +11.46% -14.70%
2014 -9.53% -2.53% -6.99%
2015 -16.92% -6.94% -9.98%
2016 +41.43% +17.80% +23.63%
2017 +7.44% +6.55% +0.89%
2018 -9.46% -11.95% +2.49%
2019 +27.32% +12.92% +14.40%
2020 +19.58% -13.58% +33.16%
2021 +24.45% +14.20% +10.25%
2022 -10.89% +0.65% -11.54%
2023 +19.75% +2.22% +17.53%
2024 +18.66% +6.97% +11.69%
2025 +18.06% +20.47% -2.41%

2000-2004: Early dominance

The strategy opened strong. In 2000, the FTSE 100 fell -7.37% while the strategy returned +11.71%. The dot-com bust hammered tech and telecom stocks globally, but the LSE's rotation into beaten-down defensives and commodity sectors sidestepped most of it.

2002 was one of the most striking years: +11.02% for the strategy while the FTSE 100 dropped -23.16%, a +34.19% excess. This is the strategy at its best: the beaten-down sectors of 2001 didn't fall further while the index's growth-heavy components did.

2003-2004 extended the run: +47.29% and +30.04% against a recovering FTSE. Energy and Basic Materials, left for dead in 2001-2002, drove both years.

2009: The best year

2009 produced +76.03% vs FTSE 100 +20.57%. That's a 55-point gap. After the financial crisis, Financial Services and Real Estate were two of the most battered sectors on the LSE. The UK had deep exposure to global banking through Barclays, HSBC, and Lloyds. When those sectors recovered in 2009, they recovered hard. The strategy had rotated in at the bottom.

2013-2015: The worst three years

The 2013-2015 period is the most damaging stretch. Three consecutive years of underperformance vs the FTSE 100:

  • 2013: -3.24% portfolio vs +11.46% FTSE, -14.70% excess
  • 2014: -9.53% portfolio vs -2.53% FTSE, -6.99% excess
  • 2015: -16.92% portfolio vs -6.94% FTSE, -9.98% excess

What happened. Oil fell roughly 60% from mid-2014 to early 2016. Iron ore and copper fell sharply too. The strategy kept reloading into Energy and Basic Materials, exactly what the signal required, and both kept declining. These are the years where mean reversion became a value trap. The sectors were cheap because the structural headwind was real, not temporary.

2016: Post-Brexit recovery

2016 returned +41.43% vs FTSE 100 +17.80%. The Brexit vote in June 2016 hammered sterling and initially hurt UK equities in GBP terms. But the devaluation of sterling was a tailwind for FTSE-listed multinationals that earn in USD. Energy majors like BP and Shell, which report and pay dividends in USD, saw GBP-translated earnings jump. The strategy was well-positioned in Energy going into the year, and commodity prices bottomed in early 2016 and recovered sharply.

2020 and beyond: Continued outperformance

2020 was +19.58% for the strategy while the FTSE 100 dropped -13.58%, a +33.16% excess. The COVID crash hit the FTSE hard given its weight in banks, travel, and energy. The strategy's rotation avoided the worst of it and captured the recovery. From 2019 to 2024, the strategy beat the FTSE 100 in 5 of 6 years.


Backtest Methodology

Parameter Choice
Universe LSE, Market Cap > £500M
Signal Bottom 2 sectors by equal-weighted 12-month trailing return
Portfolio All qualifying stocks in selected sectors, equal weight
Rebalancing Quarterly (January, April, July, October)
Cash rule Hold cash if < 5 stocks qualify
Benchmark FTSE 100 (^FTSE)
Period 2000-2025 (26 years, 104 quarters)
Data Ceta Research (FMP financial data warehouse)

Limitations

FTSE 100 is price-only. The benchmark used here is the FTSE 100 price return index, which excludes dividends. UK stocks have historically paid 3-4% annual dividend yields. A total-return FTSE 100 benchmark would be meaningfully higher, which would reduce the strategy's stated excess of +7.86%. The more honest global comparison is against SPY (total return): UK strategy at 9.42% vs SPY at 8.02%, a +1.40% annual edge over 26 years.

Currency mismatch vs SPY. Returns are in GBP. When sterling weakens against the dollar (as it did sharply after Brexit), a GBP-denominated 9.42% CAGR looks somewhat weaker to a USD-based investor.

Energy concentration. Energy was selected in 32 of 104 quarters. This makes the strategy's performance heavily dependent on oil and commodity cycles. A strategy with 31% Energy exposure over 26 years isn't sector-diversified in any meaningful sense. When Energy recovers (2009, 2016, 2022), the portfolio wins. When it doesn't (2013-2015), losses compound.

LSE sector structure. The London Stock Exchange is disproportionately weighted toward Financials, Energy, Mining, and Pharmaceuticals. Tech is underrepresented. A sector rotation approach built on 12-month trailing returns on LSE is effectively rotating between commodity, financial, and real estate cycles. The low FTSE 100 baseline (1.55% CAGR price-only) makes outperformance easier to achieve than against a global total-return benchmark.

Brexit as a structural break. The 2016 Brexit vote changed UK market dynamics. Sterling devaluation helped multinationals in 2016 but created prolonged uncertainty for domestic-oriented UK stocks. A 26-year backtest spans two regulatory and currency regimes.

Survivorship bias. Exchange membership uses current profiles, not historical. Delisted companies, including failures, aren't tracked over time.

No transaction costs. The backtest doesn't include transaction costs or market impact. With 159 stocks and quarterly rebalancing, turnover is meaningful.


Takeaway

Sector mean reversion on LSE large caps delivers 9.42% CAGR over 26 years, beating the FTSE 100 by +7.86% annually. The 60.58% win rate, 172.51% up capture, and -48.45% max drawdown all reflect a strategy that captures sector dislocations effectively in the UK market.

The honest framing has two parts. Against the FTSE 100 price index (1.55% CAGR), the strategy looks exceptional. Against a total-return benchmark or against SPY (8.02%), the edge narrows to roughly +1.40% annually. Still positive, but more modest.

The core driver is the LSE's structural tilt toward commodity cycles and Financials. When those sectors fall (Energy in 2014-2015, Financials in 2008), the strategy loads up at depressed prices. When they recover (2009, 2016, 2022), the returns are large. The win rate of 60.58% means you're ahead of the local index in most years, not just in the dramatic ones.


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) - Sector Mean Reversion on Indian Stocks (BSE + NSE) - Sector Mean Reversion on Korean Stocks (KSC) - Sector Mean Reversion on Taiwanese Stocks (TAI + TWO) - Sector Mean Reversion on Swedish Stocks (STO) - Sector Mean Reversion: Global Exchange Comparison


References

  • Moskowitz, T. & Grinblatt, M. (1999). "Do Industries Explain Momentum?" Journal of Finance, 54(4), 1249-1290.

Run This Screen Yourself

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 > 500000000
      AND p.exchange IN ('LSE')
      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("LSE 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.


Data: Ceta Research, FMP financial data warehouse. Universe: LSE, market cap > £500M. Quarterly rebalance, equal weight, 2000-2025. Returns in GBP. Benchmark: FTSE 100 (^FTSE, price return). Past performance does not guarantee future results.