Germany FCF Growth: A Thin Edge Over the DAX, and Half the Drawdown

German FCF growth stocks beat the DAX by just 0.69 percentage points a year over 25 years, and a German-domicile test flips that negative. The durable result is risk: 42.9% down capture and a -28.62% worst drawdown against the index's -53.43%.

Growth of 10,000 euros invested in the FCF Growth Germany strategy vs the DAX from 2000 to 2025.

German FCF-growth stocks beat the DAX by 0.69 percentage points per year over 25 years. That is a thin edge, and it doesn't survive contact with a stricter universe test. The more durable finding is the risk profile: the portfolio absorbed 42.9% of the DAX's downside and took a -28.62% worst drawdown against the index's -53.43%.

Contents

  1. Method
  2. Read This Before the Results
  3. Results
  4. The Domicile Test
  5. When It Works
  6. When It Fails
  7. The 2008 Result
  8. Annual Returns
  9. Limitations
  10. Global Context
  11. Run It Yourself

Data: FMP financial data warehouse (XETRA), 2000–2025. Returns in EUR. Updated August 2026.


Method

Universe: XETRA (Deutsche Börse), market cap above €500M.

Signal: FCF growth year-over-year above 15%, OCF growth above 0%.

Quality filters: ROE above 10%, debt-to-equity below 1.5.

Selection: Top 30 stocks by FCF growth, equal weight. The XETRA universe is thinner than US markets, so the portfolio averaged 19.6 stocks in the years it was invested.

Rebalancing: Annual, July. 45-day data lag applied.

Costs: Size-tiered transaction costs modeled, charged on entry and exit.

Benchmark: DAX (^GDAXI). The DAX is a performance index, so it already reinvests dividends and is directly comparable to the portfolio's dividend-adjusted returns. Returns in EUR.

Cash rule: Hold cash when fewer than 10 names both pass the screen and have usable prices at the rebalance date. That happened in 6 of 25 periods. This matters a lot here, and the next section explains why.

Code: github.com/ceta-research/backtests

Reading the annual figures: each period runs July to July and is labelled by the year it begins, so "2008" means July 2008 through July 2009, not the calendar year. Period returns won't match calendar-year figures quoted elsewhere. Portfolio and index are measured over identical windows.


Read This Before the Results

Six of the 25 annual periods (2000, 2001, 2002, 2004, 2005, 2006) are cash years. The screen found qualifying German companies in those years. What it couldn't find was prices.

FMP's fundamentals history for XETRA runs much deeper than its end-of-day price history. Only 233 of 2,665 XETRA-listed symbols have any price data by 2001, rising to 2,295 by 2022. So in the early 2000s the screen would identify 30 qualifying names and only a handful of them, sometimes as few as one, had a tradeable price on the rebalance date.

Averaging those few names would not have measured the strategy. It would have measured whichever companies FMP happened to backfill first, which skews heavily toward large survivors. The honest treatment is to hold cash, and that's what the numbers below do.

This is a change from the earlier version of this post, which reported a +3.30% annual excess and a standout +27.9% return for the year 2000. That year rested on four priced stocks. It has been removed.


Results

Metric Portfolio DAX
CAGR (2000–2025) 5.73% 5.04%
Total Return 302.90% 241.86%
Max Drawdown -28.62% -53.43%
Volatility 16.76%
Sharpe Ratio 0.223
Sortino Ratio 0.411
Beta 0.566 1.00
Alpha (Jensen) +2.01%
Up Capture 72.3%
Down Capture 42.9%
Win Rate vs DAX 52% (13/25 periods)
Periods invested 19/25
Avg stocks when invested 19.6

€10,000 invested in 2000 grew to €40,290 in the portfolio versus €34,186 in the DAX.

Cumulative Growth
Cumulative Growth

The portfolio returned 5.73% annually. The DAX returned 5.04%. That's a +0.69% annualized excess, and roughly a fifth of the 25-year window was spent in cash, so the edge comes from 19 years of active investing rather than 25.

The risk numbers are the stronger result. Down capture of 42.9% means the portfolio absorbed well under half the DAX's losses in down years, and beta of 0.566 confirms it. The -28.62% max drawdown against the DAX's -53.43% is the single clearest number in this study: the index halved, and this portfolio didn't.

Up capture of 72.3% is the cost. The portfolio gives up more than a quarter of the market's gains in rising years. Over 25 years that nearly cancels the downside benefit, which is exactly why the excess return is 0.69% and not 3%.


The Domicile Test

XETRA lists a lot of companies that aren't German. Screening everything listed on the exchange is not the same as screening German businesses.

Re-running the identical backtest restricted to German-domiciled companies gives a different answer:

Universe CAGR Excess vs DAX Periods invested
XETRA-listed (published above) 5.73% +0.69% 19/25
German-domiciled only 3.71% -1.33% 18/25

The excess return flips negative. Notably, the domiciled portfolio holds more names when invested (23.3 versus 19.6), because the foreign secondary listings that crowd into the top 30 by FCF growth are also the ones FMP is least likely to have priced.

Every number published on this page uses the XETRA-listed universe, which is the convention applied across all 13 exchanges in this study. But a +0.69% edge that inverts to -1.33% under a reasonable alternative definition of "German stocks" is not a finding to build a portfolio on. Treat the German result as inconclusive on alpha and informative on risk.


When It Works

With the early cash years removed, the outperformance concentrates in a handful of specific years.

2007: -4.4% vs DAX -20.8%, +16.3% excess. The best year in the dataset. The portfolio declined but held up far better than the German market as the financial crisis began showing cracks. The quality filters and FCF discipline kept it away from the most leveraged names.

2017: +9.7% vs DAX -1.9%, +11.6% excess. The DAX had a weak year while German FCF compounders posted solid returns on steady corporate earnings.

2014 (+8.3% excess), 2015 (+8.0% excess), and 2019 (+7.7% excess) are the consistent middle of the record. In each, the broad index was flat to negative and the cash-generating names kept compounding.

2020: +30.6% vs DAX +24.1%, +6.4% excess. Recovery from the COVID crash. FCF growers in export industries bounced harder as global trade rebounded.

The pattern is narrow but real: this screen earns its excess when the DAX is falling or flat, not when it's running.


When It Fails

2022: +6.1% vs DAX +25.9%, -19.8% excess. The worst year by a wide margin, costing close to a full point of annualised excess on its own across a 25-year record. The DAX rebounded hard on cyclical and energy names while the FCF screen sat in quality. It is not what pulled this study's German result down from the +3.30% previously published: that came from holding the unpriceable early years in cash.

2018 (-8.0% excess) and 2021 (-8.0% excess). In 2021 both fell, but the portfolio fell harder, -26.3% against -18.4%. Global growth-at-any-price dominated and FCF discipline is a value-adjacent signal.

2023: +6.4% vs DAX +14.3%, -7.8% excess. Momentum and cyclical themes drove the German market's recovery.

2003: +16.7% vs DAX +23.4%, -6.7% excess. The first investable year, and the portfolio lagged the post-dot-com bounce.

The failure mode is consistent and predictable: when momentum or cyclical recovery plays lead the DAX, this strategy trails. That's a feature of a quality screen, not a bug in it.


The 2008 Result

2008 is the only major crisis year that falls inside the investable window.

The portfolio lost -25.3% while the DAX lost -25.2%, a -0.1% excess. The FCF growth screen provided essentially no protection in the worst single year.

That sits oddly next to a 42.9% down capture, and the explanation matters. Down capture is an average across down years. It's carried by 2007, 2015 and 2019, when the portfolio fell much less than the index or rose while it fell. In a genuine credit crisis, correlations converge and a quality filter doesn't save you. The average protection is real; the worst-case protection isn't.


Annual Returns

Annual Returns
Annual Returns

Year Portfolio DAX Excess
2000 cash -12.2% +12.2%
2001 cash -31.3% +31.3%
2002 cash -22.8% +22.8%
2003 +16.7% +23.4% -6.7%
2004 cash +15.6% -15.6%
2005 cash +23.6% -23.6%
2006 cash +39.3% -39.3%
2007 -4.4% -20.8% +16.3%
2008 -25.3% -25.2% -0.1%
2009 +24.2% +23.6% +0.6%
2010 +31.3% +27.6% +3.7%
2011 -16.8% -12.7% -4.0%
2012 +19.2% +21.8% -2.6%
2013 +28.9% +25.3% +3.6%
2014 +20.3% +12.0% +8.3%
2015 -4.5% -12.5% +8.0%
2016 +30.8% +28.5% +2.3%
2017 +9.7% -1.9% +11.6%
2018 -5.6% +2.4% -8.0%
2019 +8.4% +0.7% +7.7%
2020 +30.6% +24.1% +6.4%
2021 -26.3% -18.4% -8.0%
2022 +6.1% +25.9% -19.8%
2023 +6.4% +14.3% -7.8%
2024 +26.6% +29.5% -2.9%

The cash years cut both ways. Sitting out 2000-2002 avoided a brutal three-year DAX decline and contributed +66 percentage points of cumulative excess. Sitting out 2004-2006 missed a strong run and gave back -78. Neither is a strategy decision. Both are consequences of missing price data, and they're the reason the headline win rate of 52% overstates how much this record tells you.

Counting only the 19 invested periods, the portfolio beat the DAX in 10 of them.


Limitations

Price coverage, not just signal quality. Six of 25 periods aren't investable in this dataset. Any 25-year CAGR built on 19 years of exposure carries more uncertainty than the single number suggests.

The domicile result. Restricting to German-domiciled companies flips the excess to -1.33%. The alpha claim is not robust to how you define the universe.

Backward-looking signal. FCF growth from the prior fiscal year doesn't predict next year's. The screen captures historical quality, not future quality.

Currency risk. All returns are in EUR. For USD-based investors, EUR/USD moves would change realized returns.

Export exposure. Germany's market is heavily weighted toward exporters. Without sector-neutral analysis, it's unclear how much of the excess comes from the FCF signal versus a sector tilt.

Concentration. An average of 19.6 equal-weighted names is not deep diversification. One sector rotation can drive a large single-year swing, as 2022 shows. The effective count is lower still, because the universe is built from listings rather than companies, so a business with more than one listed line can occupy more than one slot.

Transaction costs. Size-tiered estimates: 0.1% one-way above $10B market cap, 0.3% from $2B to $10B, 0.5% below, charged on both entry and exit. Real costs depend on sizing, liquidity and execution.

Point-in-time data. All rebalances use data available 45 days after fiscal year-end to prevent lookahead bias.


Global Context

This analysis covers XETRA-listed stocks only. Germany's +0.69% excess puts it mid-pack among the 13 exchanges tested, well behind Canada (+5.03% vs the TSX Composite) and Switzerland (+3.53% vs the SMI), and ahead of Japan (-0.08%) and the US (-1.28%). A full global comparison is covered in the companion blog on international FCF growth results.


Run It Yourself

The full backtest code is open source at github.com/ceta-research/backtests. You can reproduce every number in this post.

To run the Germany FCF growth strategy:

python3 fcf-growth/backtest.py --preset germany --output results/returns_XETRA.json

To reproduce the domicile test:

python3 fcf-growth/backtest.py --preset germany --domicile-filter --output results/dom_XETRA.json

The data runs through Ceta Research's data platform, which covers 70,000+ global securities with FMP fundamentals, EOD prices, and a DuckDB query layer. You can explore the underlying financial data directly at cetaresearch.com/data-explorer before running anything locally.


Data: Ceta Research (FMP warehouse), TTM metrics. Backtest period: 2000–2025. Returns in EUR. Execution: MOC (next-day close). Benchmark: DAX. Not investment advice.