FCF Compounders on German Stocks: Quality Cash Growth on XETRA for 25 Years
We screened XETRA for FCF compounders from 2000-2025. 9.0% CAGR vs 5.04% for the DAX with 22 invested years out of 25. Germany's industrial cash discipline beats the local benchmark by 3.96% annually.
FCF Compounders on German Stocks: Quality Cash Growth on XETRA for 25 Years
Germany's industrial economy rewards capital discipline. We applied the same FCF Compounders screen to XETRA-listed stocks from 2000 to 2025 and found 9.0% CAGR vs 5.04% for the DAX. The strategy was invested in 22 of 25 years, with an average of 16.5 qualifying stocks per period. The Mittelstand produces companies that grow free cash flow year after year, and the ROIC filter finds the ones doing it efficiently.
Data: FMP financial data warehouse, 2000–2025. Updated March 2026.
Method
Data source: Ceta Research (FMP financial data warehouse) Universe: XETRA (Deutsche Borse), market cap > ~€500M Period: 2000-2025 (25 years, 25 annual periods) Rebalancing: Annual (July), top 30 by highest ROIC, equal weight Benchmark: DAX (EUR, local currency index) 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)
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.
This is the German edition of our US FCF Compounders analysis.
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 ('XETRA')
ORDER BY k.returnOnInvestedCapitalTTM DESC
LIMIT 30
Run this query on Ceta Research
What We Found

$10,000 grew to $86,200. The DAX reached $34,200.
| Metric | FCF Compounders | DAX |
|---|---|---|
| CAGR | 9.0% | 5.04% |
| Total Return | 762% | 242% |
| Volatility | 17.35% | 22.93% |
| Max Drawdown | -43.27% | -57.72% |
| Sharpe Ratio | 0.403 | 0.171 |
| Sortino Ratio | 0.773 | 0.305 |
| Win Rate (annual) | 56% | - |
| Up Capture | 79.5% | - |
| Down Capture | 4.75% | - |
| Beta | 0.536 | - |
| Alpha | 5.37% | - |
| Avg Stocks per Period | 16.5 | - |
| Cash Periods | 3 of 25 (12%) | - |
The +3.96% excess CAGR vs the DAX compounded into a substantial terminal value gap. $10K became $86,200 vs $34,200 for the DAX. That's 2.5x the local benchmark over 25 years.
The 4.75% down capture appears remarkably low, but context matters: three of the worst DAX years (2001-2002 dot-com crash, 2003 bear market) coincided with cash periods, when the portfolio earned 0% while the DAX fell sharply. From 2005 onward, the strategy was invested continuously, and down capture tells a more representative story.
The Sharpe ratio of 0.403 vs 0.171 is a cleaner comparison: more than twice the risk-adjusted return of the DAX. Germany's industrial compounders delivered consistent alpha over 25 years with lower volatility than the index (17.35% vs 22.93%).
The 56% win rate means the strategy beat the DAX in 14 of 25 years. In the 14 winning years, average excess was +15.3%. In the 11 losing years, average shortfall was -12.1%. That asymmetry compounds over time.
Annual Returns

| Year | Strategy | DAX | Excess |
|---|---|---|---|
| 2000 | +13.1% | -12.2% | +25.4% |
| 2001 | -33.4% | -31.3% | -2.1% |
| 2008 | -18.7% | -25.2% | +6.5% |
| 2009 | +33.9% | +23.6% | +10.2% |
| 2011 | +15.8% | -12.7% | +28.6% |
| 2013 | +40.8% | +25.3% | +15.5% |
| 2014 | +31.0% | +12.0% | +19.0% |
| 2015 | +11.0% | -12.5% | +23.5% |
| 2017 | +25.8% | -1.9% | +27.7% |
| 2022 | +23.7% | +25.9% | -2.2% |
The standout periods are concentrated around market stress and recoveries. In 2009, German industrial compounders returned +33.9% vs +23.6% for the DAX. In 2011, the strategy gained +15.8% while the DAX fell -12.7%. In 2013-2015, three consecutive years of meaningful outperformance. In 2017, the strategy gained +25.8% while the DAX actually fell -1.9%.
2000 was the opening statement: +13.1% vs -12.2% for the DAX. The dot-com bubble destroyed German technology names, but the FCF compounders filter kept the portfolio in industrial compounders that were generating real cash.
2001 was the worst relative year: -33.4% vs -31.3%. The European recession hit German industrials hard, and even quality names fell significantly when the broader market cratered.
Why Germany Works for This Screen
Germany's industrial economy is structurally suited to a quality-growth screen. The Mittelstand produces companies with conservative accounting, tangible assets, and predictable cash flow cycles. Depreciation tracks actual capex. Working capital is disciplined. These traits produce the consistent FCF growth the screen rewards.
The XETRA universe skews toward industrials, chemicals, auto suppliers, and specialty manufacturing. These sectors generate reliable cash flow when managed well. The ROIC filter selects the best operators within this quality-rich universe.
Compared to the DAX, which includes more cyclical and capital-intensive businesses, the FCF compounders filter carves out a distinctly quality-oriented subset. That's why the volatility is meaningfully lower (17.35% vs 22.93%) despite similar sector exposure on paper.
Limitations
Smaller universe. 16.5 average stocks is below the 30-stock target. XETRA qualifies fewer names under these strict filters. Concentration risk is real.
Deeper drawdowns than the US. The -43.27% max drawdown is more severe than the US version (-29.63%). Germany's export-heavy economy amplifies global trade shocks.
Sector concentration. The portfolio skews toward industrials, chemicals, and specialty manufacturing. It won't resemble a diversified market benchmark.
Transaction costs are estimated. European trading costs vary. The size-tiered model is reasonable but approximate.
Early data coverage. The 3 cash periods in 2002-2004 are partly a data coverage artifact. FMP's XETRA data was thinnest in the early years of the period.
Run It Yourself
Live screen:
python3 fcf-compounders/screen.py --preset germany
Full backtest:
python3 fcf-compounders/backtest.py --preset germany --output results.json --verbose
Code: github.com/ceta-research/backtests/tree/main/fcf-compounders
Part of a Series
This is the Germany edition of our FCF Compounders analysis. We ran the same screen on 18 exchanges globally:
- US: +3.54% excess vs S&P 500, zero cash periods, the flagship result
- UK: +6.82% excess vs FTSE 100, 13 invested years out of 25
- Global comparison: exchanges with invested periods side by side
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