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

Sector mean reversion on LSE large caps from 2000 to 2025: 6.51% CAGR in GBP vs 1.55% for the price-only FTSE 100, a +4.96% annual edge. Energy is the most-selected sector at 31% of quarters. Against SPY (8.02%) the strategy trails by -1.51% a year.

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 6.51% annualized in GBP, beating the FTSE 100 by +4.96% per year. The strategy was invested in all 104 quarters, averaged 106 stocks per period, and compounded a £10,000 starting position to £51,566 by end of 2025.

Contents

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

That headline deserves unpacking. The FTSE 100 returned 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 erase most of the strategy's excess return. Against SPY on a total-return basis, the UK strategy at 6.51% CAGR trails the S&P 500 (8.02%) by -1.51% annually. The local edge is real, but its size is mostly a function of how poorly the price-only FTSE 100 has done.

Data: FMP financial data warehouse, 2000-2025. Updated August 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
Execution Entry at the next available close after the signal date
Benchmark FTSE 100 (^FTSE)
Cash rule Hold cash if fewer than 5 sectors qualify, or fewer than 10 stocks pass the filters
Transaction costs Size-tiered model, applied to every position

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. This is a pure price signal.

Moskowitz and Grinblatt (1999) established the part this strategy leans on: much of the momentum anomaly is explained by industry-level patterns, so sector membership is where the signal lives. What they documented at a 12-month horizon was continuation, not reversal, so this strategy runs against their result rather than following from it. The contrarian premise is a separate claim: sectors that underperform for a full year carry depressed valuations and low sentiment, and both tend to normalize.

On LSE, that normalization happens at a rate that beats the local index by a wide margin. 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 33 (31%)
Communication Services 25 (24%)
Real Estate 24 (23%)
Utilities 23 (22%)
Consumer Cyclical 23 (22%)
Basic Materials 19 (18%)
Consumer Defensive 17 (16%)
Technology 16 (15%)
Healthcare 11 (10%)
Financial Services 11 (10%)
Industrials 6 (5%)

Energy leads at 33 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 all 26 years, with zero cash periods across 104 quarters. The up capture of 159.83% and down capture of 106.02% tell the core story, and it isn't the flattering one: the strategy amplifies FTSE gains and also amplifies FTSE losses. All of the edge comes from the upside.

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. +4.96% annual excess vs the FTSE 100.

Metric Strategy FTSE 100
CAGR 6.51% 1.55%
Excess vs FTSE 100 +4.96%
Total Return 415.66% 49.29%
Volatility 23.83% 14.19%
Max Drawdown -50.70% -43.69%
Sharpe Ratio 0.126 -0.137
Sortino Ratio 0.194 -0.173
Calmar Ratio 0.128 0.036
Up Capture 159.83%
Down Capture 106.02%
Beta 1.147
Alpha (Jensen) 5.24%
Win Rate vs FTSE 100 (quarters) 60.58%
Avg Stocks per Period 106.2
Cash Periods 0 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 consume most of the strategy's +4.96% excess return. Against SPY (which is total return), the UK strategy at 6.51% CAGR trails the S&P 500's 8.02% by -1.51% annually. That's the more honest global comparison, and it's negative.

The up capture of 159.83% is the standout number. The strategy doesn't just keep pace with FTSE gains, it amplifies them by more than half again. That reflects the strategy's rotational edge: buying beaten-down Energy, Consumer Cyclical, and Utilities that recover sharply when their cycle turns. But the down capture of 106.02% is above 100, so the portfolio falls slightly harder than the FTSE 100 in bad years. There's no downside protection here. The strategy wins by taking more risk in both directions and being paid for it on net, which is also visible in the beta of 1.147 and a volatility of 23.83% against the index's 14.19%.

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 +18.30% -7.37% +25.67%
2001 -23.82% -15.49% -8.33%
2002 -26.02% -23.16% -2.86%
2003 +42.52% +12.49% +30.04%
2004 +17.43% +7.47% +9.96%
2005 +16.81% +17.22% -0.41%
2006 +25.05% +11.08% +13.97%
2007 -15.86% +1.68% -17.54%
2008 -37.59% -28.91% -8.68%
2009 +79.71% +20.57% +59.14%
2010 +10.98% +9.34% +1.65%
2011 -2.98% -5.22% +2.24%
2012 +17.01% +5.74% +11.27%
2013 -2.38% +11.46% -13.83%
2014 -3.76% -2.53% -1.23%
2015 -22.62% -6.94% -15.68%
2016 +55.89% +17.80% +38.10%
2017 +7.17% +6.55% +0.62%
2018 -10.99% -11.95% +0.96%
2019 +26.94% +12.92% +14.02%
2020 +20.22% -13.58% +33.80%
2021 +25.31% +14.20% +11.11%
2022 -13.28% +0.65% -13.94%
2023 +11.47% +2.22% +9.25%
2024 +13.43% +6.97% +6.46%
2025 +17.39% +20.47% -3.08%

2000-2004: A strong start, then two bad years

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

Then the bear market caught up with it. 2001 was -23.82% against a FTSE that fell -15.49%. 2002 was -26.02% against -23.16%. Two consecutive years of losing more than an index that was itself falling hard. Buying whatever had underperformed over the previous 12 months, in a market where everything kept underperforming, produced no protection at all.

2003-2004 got it back: +42.52% and +17.43% against a recovering FTSE, for +30.04% and +9.96% of excess. Energy and Basic Materials, left for dead in 2001-2002, drove both years.

2009: The best year

2009 produced +79.71% vs FTSE 100 +20.57%. That's a 59-point gap, the largest in the record. 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.

2007: The single worst year

2007 was -15.86% while the FTSE 100 gained 1.68%, a -17.54% excess and the worst single year in the record. The index held up through the first cracks in the credit cycle. The strategy did not. This is the failure mode of a backward-looking signal at a cycle top: what looked cheap in 2006 was cheap for a reason that only became visible later.

2013-2015: The worst stretch

The 2013-2015 period is the most damaging run of consecutive years:

  • 2013: -2.38% portfolio vs +11.46% FTSE, -13.83% excess
  • 2014: -3.76% portfolio vs -2.53% FTSE, -1.23% excess
  • 2015: -22.62% portfolio vs -6.94% FTSE, -15.68% 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 +55.89% vs FTSE 100 +17.80%, a +38.10% excess and the second-best year in the record. 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 +20.22% for the strategy while the FTSE 100 dropped -13.58%, a +33.80% 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, the exception being 2022 at -13.94% excess.


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 sectors qualify or < 10 stocks pass filters
Execution Next available close after the signal date
Transaction costs Size-tiered model
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 consume most of the strategy's stated excess of +4.96%. The more honest global comparison is against SPY (total return): UK strategy at 6.51% vs SPY at 8.02%, a -1.51% annual shortfall 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 6.51% CAGR looks weaker still to a USD-based investor.

No downside protection. Down capture is 106.02%, above 100. The strategy falls harder than the FTSE 100 in bad years and the max drawdown is deeper (-50.70% vs -43.69%). Every point of excess return comes from the up capture of 159.83%, which is another way of saying it comes from carrying more risk.

Energy concentration. Energy was selected in 33 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), 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.

Costs are modelled, not measured. A size-tiered cost model is applied to every position, but bid-ask spread and market impact aren't. With 106 stocks and quarterly rebalancing, turnover is meaningful and real execution would reduce net returns.


Takeaway

Sector mean reversion on LSE large caps delivers 6.51% CAGR over 26 years, beating the FTSE 100 by +4.96% annually. The strategy beat the index in 63 of 104 quarters (60.58%) and in 16 of 26 calendar years.

The honest framing has two parts, and they point in opposite directions. Against the FTSE 100 price index (1.55% CAGR), the strategy looks strong. Against SPY (8.02%), it loses by -1.51% annually. Add dividends back to the FTSE and most of the local edge goes with them. A UK investor who wanted equity exposure over these 26 years was better served by a global tracker than by this rotation.

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), the returns are large. Two years do a lot of the work: 2009 and 2016 supply 97 of the 183 points of cumulative annual excess, better than half of it from 8% of the sample. What you're buying for the rest of the time is a -50.70% drawdown and a Sharpe of 0.126.


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 (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.


Past performance does not guarantee future results. This is educational content, not investment advice.