FCF Compounders on UK Stocks: +6.82% Annual Excess vs FTSE 100 Over 25 Years

FCF Compounders screen on LSE from 2000-2025. 8.04% CAGR vs 1.23% for the FTSE 100. The filter was invested in only 13 of 25 years, but when it fired, it beat the benchmark by an average of 15% per year.

Growth of $10,000 invested in FCF Compounders vs FTSE 100 on UK stocks from 2000 to 2025. Strategy grew to $69K, FTSE to $14K.

FCF Compounders on UK Stocks: Quality Cash Growth on the LSE for 25 Years

The FTSE 100 gained 1.23% annually over 25 years. A strict quality screen for LSE-listed FCF compounders returned 8.04% over the same period. The filter couldn't find 10 qualifying stocks in 12 of those 25 years, holding cash instead. But when it could build a portfolio, it beat the benchmark consistently. The 13 invested years averaged strong double-digit returns, and the +6.82% annual excess vs the FTSE 100 is the most direct measure of the signal's strength in UK equities.

Contents

  1. Method
  2. The Signal
  3. The Screen (SQL)
  4. What We Found
  5. $10,000 grew to $69,200. The FTSE 100 reached $13,600.
  6. The 12 Cash Years
  7. Annual Returns (Invested Years)
  8. The Cash Drag Problem
  9. Limitations
  10. Run It Yourself
  11. Part of a Series

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


Method

Data source: Ceta Research (FMP financial data warehouse) Universe: LSE (London Stock Exchange), market cap > £500M Period: 2000-2025 (25 years, 25 annual periods) Rebalancing: Annual (July), top 30 by highest ROIC, equal weight Benchmark: FTSE 100 (^FTSE price index, GBP) Cash rule: Hold cash if fewer than 10 stocks qualify Costs: Size-tiered transaction costs (0.1% large-cap, 0.3% mid-cap, 0.5% small-cap)

Note on the benchmark: The ^FTSE price index doesn't include dividends. FTSE 100 total return (with dividends) is meaningfully higher — roughly 4-5% annually. Strategy returns use FMP adjClose, which is dividend-adjusted for individual stocks. This creates a partial mismatch that modestly overstates the raw excess. The strategy's consistent outperformance suggests the signal is real regardless, but readers should interpret the +6.82% figure as an upper bound.

Financial data uses a 45-day lag to prevent look-ahead bias. July rebalancing ensures annual filings are available. Full methodology: Ceta Research Backtest Methodology.


The Signal

Filter Threshold Why
FCF growth years >= 4 of last 5 FY years Consistent cash generation
All FCF positive Every year > 0 No negative cash flow years
ROIC > 15% Capital-efficient business
Operating Margin > 15% Real pricing power
Market Cap > £500M Liquid stocks only

Selection: Top 30 by highest ROIC, equal weight.


The Screen (SQL)

WITH yearly_fcf AS (
  SELECT
    symbol,
    freeCashFlow,
    date,
    LAG(freeCashFlow) OVER (PARTITION BY symbol ORDER BY date) AS prev_fcf
  FROM cash_flow_statement
  WHERE period = 'FY'
    AND freeCashFlow IS NOT NULL
),
fcf_stats AS (
  SELECT
    symbol,
    COUNT(*) AS total_pairs,
    SUM(CASE WHEN freeCashFlow > prev_fcf AND prev_fcf > 0 THEN 1 ELSE 0 END) AS growth_years,
    MIN(freeCashFlow) AS min_fcf,
    MIN(prev_fcf) AS min_prev_fcf
  FROM yearly_fcf
  WHERE prev_fcf IS NOT NULL
    AND date >= '2019-01-01'
  GROUP BY symbol
  HAVING COUNT(*) >= 4
)
SELECT
  fs.symbol,
  p.companyName,
  p.sector,
  fs.growth_years,
  ROUND(k.returnOnInvestedCapitalTTM * 100, 1) AS roic_pct,
  ROUND(r.operatingProfitMarginTTM * 100, 1) AS op_margin_pct,
  ROUND(k.marketCap / 1e9, 1) AS market_cap_billions
FROM fcf_stats fs
JOIN key_metrics_ttm k ON fs.symbol = k.symbol
JOIN financial_ratios_ttm r ON fs.symbol = r.symbol
JOIN profile p ON fs.symbol = p.symbol
WHERE fs.growth_years >= 4
  AND fs.min_fcf > 0
  AND fs.min_prev_fcf > 0
  AND k.returnOnInvestedCapitalTTM > 0.15
  AND r.operatingProfitMarginTTM > 0.15
  AND k.marketCap > 500000000
  AND p.exchange IN ('LSE')
ORDER BY k.returnOnInvestedCapitalTTM DESC
LIMIT 30

Run this query on Ceta Research


What We Found

$10,000 grew to $69,200. The FTSE 100 reached $13,600.

Metric FCF Compounders FTSE 100
CAGR 8.04% 1.23%
Total Return 592% 36%
Volatility 13.78% 15.42%
Max Drawdown -10.41% -39.57%
Sharpe Ratio 0.330 0.004
Sortino Ratio 1.070 0.007
Win Rate (annual) 64% -
Up Capture 103.8% -
Down Capture -46.3% -
Beta 0.326 -
Alpha 5.28% -
Avg Stocks per Period 17.6 -
Cash Periods 12 of 25 (48%) -

The -46.3% down capture needs explanation. When the FTSE 100 fell, the FCF compounders portfolio either gained or fell much less. Part of this is a cash period effect: in many years when the FTSE dropped (2001-2002 dot-com, 2007-2008 GFC), the filter couldn't find 10 qualifying stocks, so the portfolio held cash and earned 0% while the index fell. A 0% return vs a -20% benchmark produces strongly negative down capture without the strategy ever "protecting" anything actively.

The important number is the Sharpe ratio: 0.330 vs 0.004 for the FTSE 100 price index. On a risk-adjusted basis, this isn't close.

The 12 Cash Years

The filter was invested in only 13 of 25 years. Cash periods:

2000-2009: The filter found qualifying stocks in only 2 of these 10 years (2010, 2011 being the first invested years). The LSE simply didn't have enough companies passing the strict 4/5 FCF growth + ROIC > 15% + OPM > 15% filter with the required data history in the early period.

2010 onward: The strategy was invested in 11 of 15 years. As FMP's LSE data coverage improved and UK financial reporting became more standardized, more companies accumulated the required 6+ years of consecutive FY data.

Annual Returns (Invested Years)

Year Strategy FTSE 100 Excess
2010 +45.2% +24.4% +20.8%
2011 +12.3% -6.3% +18.6%
2014 +23.7% -2.7% +26.5%
2015 -6.9% -1.6% -5.3%
2016 +32.5% +13.1% +19.4%
2017 +17.4% +2.3% +15.1%
2018 +2.2% +0.2% +2.1%
2019 +22.6% -17.5% +40.0%
2020 +23.9% +14.2% +9.8%
2021 -10.4% +1.5% -11.9%
2022 +18.8% +4.1% +14.8%
2023 +16.6% +7.9% +8.7%
2024 +22.9% +8.1% +14.8%

2019 stands out: +22.6% vs -17.5% for the FTSE 100. The FTSE fell sharply due to Brexit uncertainty and the initial COVID panic in late 2019. FCF compounders — cash-generative businesses with low leverage — held up and gained. The 40-point spread is the largest in the series.

2010 was the first invested year: +45.2% vs +24.4%. The recovery from the GFC was aggressive for high-quality cash compounders that survived with their balance sheets intact.

2021 was the worst year: -10.4% vs +1.5%. The strategy lagged in a year where cyclical and recovery stocks dominated.


The Cash Drag Problem

The 48% cash rate is the core limitation. Over 25 years, the portfolio spent more time in cash than invested. In the 12 cash years, the strategy earned 0% while the FTSE 100 accumulated both gains and losses. Net effect: cash periods missed most of the early FTSE gains in 2003-2006, which is partly why the FTSE comparison looks so dramatic.

In the 13 invested years, the strategy's average annual return was substantially higher than the 8.04% CAGR suggests. The CAGR calculation includes the cash years (at 0%), pulling the compounding average down. The signal, when it fires, is strong.

The practical implication: Running this screen on LSE requires patience. Expect to be uninvested roughly half the time. The filter is too strict for consistent deployment in a 500-company universe.


Limitations

Benchmark mismatch. ^FTSE is a price-only index. FTSE 100 total return (with dividends, roughly 3-4% annually) would reduce the stated excess. The strategy still outperforms, but by a smaller margin.

Cash period dominance. 48% cash reduces compounding severely and distorts most relative metrics. Down capture, beta, and win rate all look unusually favorable partly because cash years are included in the calculation.

Small invested universe. 17.6 stocks per period is concentrated. If any sector experiences simultaneous FCF deterioration, the portfolio could be undiversified at the worst time.

Data coverage. FMP's early LSE coverage (2000-2009) is thinner than US data. The cash periods in the first decade reflect partly a data constraint, not purely a signal failure.

Currency. Returns are in GBP. No currency hedging or conversion is modeled.


Run It Yourself

Live screen:

python3 fcf-compounders/screen.py --preset uk

Full backtest:

python3 fcf-compounders/backtest.py --preset uk --output results.json --verbose

Code: github.com/ceta-research/backtests/tree/main/fcf-compounders


Part of a Series

This is the UK edition of our FCF Compounders analysis. We ran the same screen on 18 exchanges globally:


Past performance does not guarantee future results. Backtested returns are hypothetical and subject to survivorship bias, look-ahead bias, and estimated transaction costs. This is research content, not investment advice.

Data: Ceta Research (FMP financial data warehouse), 2000-2025. Full methodology: github.com/ceta-research/backtests/blob/main/METHODOLOGY.md