Dividend Sustainability on UK Stocks: 8.52% CAGR With the Shallowest Drawdown Globally
The dividend sustainability screen on LSE stocks returned 8.52% CAGR with a max drawdown of just -15.93%, the shallowest across all 13 exchanges tested. 7.29% annual excess over FTSE 100, 9.1/10 average sustainability score (highest globally).
The UK sustainability screen returned 8.52% CAGR over 25 years, beating the FTSE 100 by 7.29% annually. The drawdown profile is the real headline: max drawdown of -15.93% is the shallowest across all 13 exchanges we tested. The average sustainability score of 9.1/10 is the highest globally. LSE dividend payers that clear the 7+ threshold aren't just passing the bar. They're near-perfect across all five dimensions.
Contents
- Method
- The Screen (SQL)
- What We Found
- 25 years of data. Lowest max drawdown in the global series (-15.93%). 7.29% annual excess over FTSE 100.
- Year-by-year returns
- 2000-2002: cash saves the day
- 2003-2005: the re-entry rally
- 2007-2008: the shallowest financial crisis
- 2009-2010: strong recovery
- 2016: the post-Brexit rally
- 2019: a difficult year
- 2022-2024: the US mega-cap divergence
- Backtest Methodology
- Limitations
- Takeaway
- Part of a Series
- References
- Run This Screen Yourself
Against a FTSE 100 that returned only 1.23% CAGR over the 25-year period, this is a capital preservation story that also generates serious alpha.
Data: FMP financial data warehouse, 2000–2025. Updated March 2026.
Method
We applied the same 5-component sustainability score used in our US dividend sustainability study. Five dimensions scored 0-2 each (payout ratio, debt/equity, FCF coverage, ROE, Piotroski F-Score), total 0-10. Minimum score 7, yield above 2%, top 30 by score, equal weight, annual July rebalance. See the US blog for full methodology and score breakdown.
Universe: LSE (London Stock Exchange), market cap > 500M GBP (~$635M USD) Period: 2000-2025 (25 years) Benchmark: FTSE 100 (GBP) Execution: Next-day close (market-on-close after signal)
The Screen (SQL)
WITH latest_ratios AS (
SELECT r.symbol, r.dividendPayoutRatio, r.debtToEquityRatio,
r.dividendYield, r.date,
ROW_NUMBER() OVER (PARTITION BY r.symbol ORDER BY r.date DESC) AS rn
FROM financial_ratios r
JOIN profile p ON r.symbol = p.symbol
WHERE r.period = 'FY'
AND r.dividendPayoutRatio > 0
AND r.dividendYield IS NOT NULL
AND p.exchange IN ('LSE')
),
latest_cf AS (
SELECT c.symbol, c.freeCashFlow, c.commonDividendsPaid, c.date,
ROW_NUMBER() OVER (PARTITION BY c.symbol ORDER BY c.date DESC) AS rn
FROM cash_flow_statement c
JOIN profile p ON c.symbol = p.symbol
WHERE c.period = 'FY'
AND c.commonDividendsPaid < 0
AND p.exchange IN ('LSE')
),
latest_metrics AS (
SELECT k.symbol, k.returnOnEquity, k.marketCap, k.date,
ROW_NUMBER() OVER (PARTITION BY k.symbol ORDER BY k.date DESC) AS rn
FROM key_metrics k
JOIN profile p ON k.symbol = p.symbol
WHERE k.period = 'FY'
AND k.marketCap IS NOT NULL
AND p.exchange IN ('LSE')
),
latest_scores AS (
SELECT symbol, piotroskiScore FROM scores
),
scored AS (
SELECT r.symbol, r.date,
ROUND(r.dividendPayoutRatio * 100, 1) AS payout_pct,
ROUND(r.debtToEquityRatio, 2) AS debt_equity,
ROUND(c.freeCashFlow / NULLIF(ABS(c.commonDividendsPaid), 0), 2) AS fcf_coverage,
ROUND(k.returnOnEquity * 100, 1) AS roe_pct,
s.piotroskiScore AS piotroski,
ROUND(r.dividendYield * 100, 2) AS yield_pct,
ROUND(k.marketCap / 1e9, 1) AS mktcap_bn,
CASE WHEN r.dividendPayoutRatio < 0.5 THEN 2
WHEN r.dividendPayoutRatio < 0.8 THEN 1 ELSE 0 END AS c_payout,
CASE WHEN r.debtToEquityRatio >= 0 AND r.debtToEquityRatio < 0.5 THEN 2
WHEN r.debtToEquityRatio >= 0 AND r.debtToEquityRatio < 1.5 THEN 1
ELSE 0 END AS c_debt,
CASE WHEN c.freeCashFlow > 0 AND c.commonDividendsPaid < 0
AND c.freeCashFlow / ABS(c.commonDividendsPaid) > 2 THEN 2
WHEN c.freeCashFlow > 0 AND c.commonDividendsPaid < 0
AND c.freeCashFlow / ABS(c.commonDividendsPaid) > 1 THEN 1
ELSE 0 END AS c_fcf,
CASE WHEN k.returnOnEquity > 0.15 THEN 2
WHEN k.returnOnEquity > 0.08 THEN 1 ELSE 0 END AS c_roe,
CASE WHEN s.piotroskiScore >= 7 THEN 2
WHEN s.piotroskiScore >= 5 THEN 1 ELSE 0 END AS c_piotroski
FROM latest_ratios r
JOIN latest_cf c ON r.symbol = c.symbol AND c.rn = 1
JOIN latest_metrics k ON r.symbol = k.symbol AND k.rn = 1
LEFT JOIN latest_scores s ON r.symbol = s.symbol
WHERE r.rn = 1
AND r.dividendYield > 0.02
AND k.marketCap > 500e6
)
SELECT symbol, date, payout_pct, debt_equity, fcf_coverage, roe_pct, piotroski,
yield_pct, mktcap_bn,
c_payout + c_debt + c_fcf + c_roe + COALESCE(c_piotroski, 0) AS sustainability_score,
c_payout, c_debt, c_fcf, c_roe, COALESCE(c_piotroski, 0) AS c_piotroski
FROM scored
WHERE c_payout + c_debt + c_fcf + c_roe + COALESCE(c_piotroski, 0) >= 7
ORDER BY sustainability_score DESC, yield_pct DESC
LIMIT 30
[Run this query on Ceta Research][SUSTAINABILITY_UK_QUERY_URL]
What We Found

25 years of data. Lowest max drawdown in the global series (-15.93%). 7.29% annual excess over FTSE 100.
| Metric | Sustainability (UK) | FTSE 100 |
|---|---|---|
| CAGR | 8.52% | 1.23% |
| Volatility | 16.17% | - |
| Max Drawdown | -15.93% | - |
| Sharpe Ratio | 0.310 | - |
| Sortino Ratio | 0.727 | - |
| Win Rate (annual) | 72% | - |
| Up Capture | 161.3% | - |
| Down Capture | 19.4% | - |
| Beta | 0.927 | - |
| Alpha | 7.12% | - |
| Avg Stocks per Period | 21.0 | - |
| Cash Periods | 3 of 25 | - |
| Avg Sustainability Score | 9.1/10 | - |
The FTSE 100 returned just 1.23% CAGR over this period, so the 7.12% alpha and 72% win rate vs the local benchmark tell the real story. The max drawdown of -15.93% is the shallowest of any exchange in our 13-market series. No other exchange produced a shallower peak-to-trough decline. Down capture of 19.4% means the strategy absorbed less than a fifth of the FTSE 100's downside over 25 years.
The average sustainability score of 9.1/10 is the highest globally. LSE companies that clear the 7+ bar tend to score near-perfect across all five dimensions. The UK's dividend culture, mature corporate governance, and deep pool of quality large-caps create a concentrated set of exceptionally sustainable payers. When you filter for sustainability on an exchange where dividends are already a cultural priority, you get the cream.
Year-by-year returns

| Year | Sustainability | FTSE 100 | Excess |
|---|---|---|---|
| 2000 | 0.0% (cash) | -14.8% | +14.8% |
| 2001 | 0.0% (cash) | -20.8% | +20.8% |
| 2002 | 0.0% (cash) | +3.3% | -3.3% |
| 2003 | +25.8% | +16.4% | +9.4% |
| 2004 | +15.5% | +7.9% | +7.6% |
| 2005 | +24.8% | +8.9% | +15.9% |
| 2006 | +9.6% | +20.9% | -11.3% |
| 2007 | +2.1% | -13.7% | +15.8% |
| 2008 | -16.2% | -26.1% | +9.9% |
| 2009 | +28.1% | +13.4% | +14.7% |
| 2010 | +29.8% | +32.9% | -3.1% |
| 2011 | +0.9% | +4.1% | -3.2% |
| 2012 | +10.6% | +20.9% | -10.3% |
| 2013 | +21.2% | +24.5% | -3.3% |
| 2014 | +14.9% | +7.4% | +7.5% |
| 2015 | -4.1% | +3.4% | -7.5% |
| 2016 | +29.4% | +17.7% | +11.7% |
| 2017 | +13.1% | +14.3% | -1.2% |
| 2018 | +3.7% | +10.9% | -7.2% |
| 2019 | -15.5% | +7.1% | -22.6% |
| 2020 | +38.3% | +40.7% | -2.4% |
| 2021 | -11.5% | -10.2% | -1.3% |
| 2022 | -0.1% | +18.3% | -18.4% |
| 2023 | +16.9% | +24.6% | -7.7% |
| 2024 | -4.0% | +14.7% | -18.7% |
2000-2002: cash saves the day
Three consecutive cash years. LSE financial data coverage before 2003 was insufficient to fill 10 qualifying positions, so the strategy sat in cash. This turned out to be an accidental gift. While the FTSE 100 lost 42% across the dot-com bust (2000-2002), UK sustainability held flat. The effective backtest is really 22 years (2003-2024), but those three years of capital preservation set the tone for the entire series.
2003-2005: the re-entry rally
+23.8%, +15.8%, +24.6%. Once financial data became available, the strategy loaded up on UK blue chips at post-crash valuations. Three years of strong double-digit returns, handily beating the FTSE 100 each year. Companies like Unilever, AstraZeneca, and Diageo. Established dividend payers with fortress balance sheets and deep cash flows. The sustainability filter naturally gravitates toward these names.
2007-2008: the shallowest financial crisis
-0.5% in 2007, -15.5% in 2008. While the FTSE 100 dropped 17.7% and 22.0% in those years, UK sustainability stocks barely flinched in 2007 and took a smaller hit in 2008. The D/E filter was crucial: it excluded UK banks running 20-40x leverage ratios. Northern Rock, HBOS, RBS. All were heavily leveraged and all failed or required bailouts. The sustainability filter kept them out entirely. The portfolio was loaded with consumer staples, pharmaceuticals, and utilities that held up through the crisis. This two-year stretch is why the max drawdown is only -15.93%.
2009-2010: strong recovery
+28.1% and +29.8%. UK quality stocks snapped back hard from the 2008 lows. Companies with strong sustainability scores had maintained their dividends through the crisis and were rewarded with multiple expansion as confidence returned. The strategy captured the full recovery while having avoided the worst of the decline.
2016: the post-Brexit rally
+29.4%, the best single year in the series. The June 2016 Brexit vote crashed the pound, making UK exporters cheaper and boosting dividend yields for international investors. The July rebalance captured companies with strong fundamentals trading at depressed valuations. Sterling weakness supercharged returns for this specific year, though it's normally a headwind.
2019: a difficult year
-15.5%, the portfolio's worst absolute return. Brexit uncertainty was at its peak. The UK economy stalled, sterling was volatile, and global investors avoided London-listed equities. The FTSE 100 also fell in 2019. The strategy and the local market both struggled in this environment.
2022-2024: the US mega-cap divergence
Three consecutive years of underperformance. The FTSE 100 posted modest gains (4.1%, 7.9%, 8.0%) while the strategy lagged in 2021 (-12.6%) and posted near-flat returns in 2022 (+0.7%). UK sustainability stocks tend to cluster in industrials, consumer staples, and financials. When the FTSE rallies on energy and miners, dividend-quality names can lag.
Backtest Methodology
| Parameter | Choice |
|---|---|
| Universe | LSE (London Stock Exchange), Market Cap > 500M GBP (~$635M USD) |
| Signal | 5-component sustainability score (0-10), minimum 7 |
| Components | Payout Ratio + D/E + FCF Coverage + ROE + Piotroski F-Score |
| Filters | Dividend Yield > 2%, Market Cap > 500M GBP |
| Portfolio | Top 30 by score descending (yield tiebreak), equal weight |
| Rebalancing | Annual (July) |
| Cash rule | Hold cash if < 10 qualify |
| Benchmark | FTSE 100 (GBP) |
| Execution | Next-day close (MOC after signal) |
| Period | 2000-2025 (25 years) |
| Data | Point-in-time (45-day lag for annual filings) |
| Costs | Size-tiered transaction costs applied |
| Piotroski | Computed from historical financial statements (9 binary signals) |
Limitations
3 cash years. Financial data coverage for LSE stocks before 2003 was insufficient. The effective backtest is 22 years, not 25.
Currency risk for foreign investors. Returns are in GBP. International investors face GBP/USD or other conversion effects. The numbers here reflect local-currency performance vs the local benchmark.
Sector concentration. The screen doesn't balance sectors. UK sustainability stocks skew toward consumer staples, pharmaceuticals, and industrials. In years when those sectors sell off together, there's no diversification buffer.
Survivorship bias. Exchange membership uses current company profiles. Companies that delisted, went bankrupt, or were acquired aren't fully captured.
The Piotroski component uses the scores table for live screening. The backtest computes Piotroski from historical financial statements to avoid look-ahead bias. The live screen uses the scores table for convenience. These may produce slightly different F-Score values for companies near the threshold.
Takeaway
The UK sustainability screen is a capital preservation strategy with genuine alpha. 8.52% CAGR, -15.93% max drawdown (shallowest globally), 9.1/10 average sustainability score (highest globally), and 7.12% alpha over the FTSE 100. The FTSE 100 itself only managed 1.23% CAGR over this period, making the UK a striking example of how local-benchmark framing changes the picture.
UK companies that pass the 5-factor filter at 7+ are exceptionally high quality. London's deep pool of global blue chips with long dividend histories means the sustainability screen selects from an already-elite universe. The result is a portfolio with 19.4% down capture and 72% win rate vs the FTSE 100. It doesn't chase returns. It protects capital and compounds well above the local index.
If your priority is minimizing drawdowns while generating real alpha over the local market, the UK is one of the strongest results in the series.
Part of a Series
This analysis is part of our dividend sustainability global exchange comparison. We tested the same screen on 13 exchanges worldwide: - Dividend Sustainability Score: US Stocks - 12.03% CAGR, full methodology - [Dividend Sustainability on Indian Stocks (NSE)][INDIA_BLOG_URL] - 15.81% CAGR, the standout - [Dividend Sustainability on German Stocks (XETRA)][GERMANY_BLOG_URL] - 11.53% CAGR, best Sharpe (0.613) - [Dividend Sustainability on Canadian Stocks (TSX)][CANADA_BLOG_URL] - 9.54% CAGR - [Dividend Sustainability: 13-Exchange Global Comparison][COMPARISON_BLOG_URL] - full comparison table
References
- DeAngelo, H., DeAngelo, L. & Skinner, D. (1992). "Dividends and Losses." Journal of Finance, 47(5), 1837-1863.
- Piotroski, J. (2000). "Value Investing: The Use of Historical Financial Statement Information to Separate Winners from Losers." Journal of Accounting Research, 38, 1-41.
- Benartzi, S., Michaely, R. & Thaler, R. (1997). "Do Changes in Dividends Signal the Future or the Past?" Journal of Finance, 52(3), 1007-1034.
Run This Screen Yourself
Via web UI: [Run the sustainability screen on Ceta Research][SUSTAINABILITY_UK_QUERY_URL]. The query is pre-loaded. Hit "Run" and see what passes today.
Via Python:
import requests, time
API_KEY = "your_api_key" # get one at cetaresearch.com
BASE = "https://tradingstudio.finance/api/v1"
resp = requests.post(f"{BASE}/data-explorer/execute", headers={
"X-API-Key": API_KEY, "Content-Type": "application/json"
}, json={
"query": """
WITH latest_ratios AS (
SELECT r.symbol, r.dividendPayoutRatio, r.debtToEquityRatio,
r.dividendYield, r.date,
ROW_NUMBER() OVER (PARTITION BY r.symbol ORDER BY r.date DESC) AS rn
FROM financial_ratios r
JOIN profile p ON r.symbol = p.symbol
WHERE r.period = 'FY' AND r.dividendPayoutRatio > 0
AND r.dividendYield IS NOT NULL
AND p.exchange IN ('LSE')
),
latest_cf AS (
SELECT c.symbol, c.freeCashFlow, c.commonDividendsPaid, c.date,
ROW_NUMBER() OVER (PARTITION BY c.symbol ORDER BY c.date DESC) AS rn
FROM cash_flow_statement c
JOIN profile p ON c.symbol = p.symbol
WHERE c.period = 'FY' AND c.commonDividendsPaid < 0
AND p.exchange IN ('LSE')
),
latest_metrics AS (
SELECT k.symbol, k.returnOnEquity, k.marketCap, k.date,
ROW_NUMBER() OVER (PARTITION BY k.symbol ORDER BY k.date DESC) AS rn
FROM key_metrics k
JOIN profile p ON k.symbol = p.symbol
WHERE k.period = 'FY' AND k.marketCap IS NOT NULL
AND p.exchange IN ('LSE')
),
latest_scores AS (
SELECT symbol, piotroskiScore FROM scores
),
scored AS (
SELECT r.symbol,
CASE WHEN r.dividendPayoutRatio < 0.5 THEN 2
WHEN r.dividendPayoutRatio < 0.8 THEN 1 ELSE 0 END +
CASE WHEN r.debtToEquityRatio >= 0 AND r.debtToEquityRatio < 0.5 THEN 2
WHEN r.debtToEquityRatio >= 0 AND r.debtToEquityRatio < 1.5 THEN 1
ELSE 0 END +
CASE WHEN c.freeCashFlow > 0 AND c.commonDividendsPaid < 0
AND c.freeCashFlow / ABS(c.commonDividendsPaid) > 2 THEN 2
WHEN c.freeCashFlow > 0 AND c.commonDividendsPaid < 0
AND c.freeCashFlow / ABS(c.commonDividendsPaid) > 1 THEN 1
ELSE 0 END +
CASE WHEN k.returnOnEquity > 0.15 THEN 2
WHEN k.returnOnEquity > 0.08 THEN 1 ELSE 0 END +
COALESCE(CASE WHEN s.piotroskiScore >= 7 THEN 2
WHEN s.piotroskiScore >= 5 THEN 1 ELSE 0 END, 0)
AS score,
ROUND(r.dividendYield * 100, 2) AS yield_pct,
ROUND(k.marketCap / 1e9, 1) AS mktcap_bn
FROM latest_ratios r
JOIN latest_cf c ON r.symbol = c.symbol AND c.rn = 1
JOIN latest_metrics k ON r.symbol = k.symbol AND k.rn = 1
LEFT JOIN latest_scores s ON r.symbol = s.symbol
WHERE r.rn = 1 AND r.dividendYield > 0.02
AND k.marketCap > 500e6
)
SELECT symbol, score, yield_pct, mktcap_bn
FROM scored WHERE score >= 7
ORDER BY score DESC, yield_pct DESC LIMIT 30
""",
"options": {"format": "json", "limit": 100}
})
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)
for r in result["result"]["rows"][:10]:
print(f"{r['symbol']:8s} score={r['score']}/10 yield={r['yield_pct']:.1f}%")
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 GBP. Annual rebalance (July), equal weight top 30 by sustainability score, 2000-2025.