Earnings Growth Consistency on German Stocks (XETRA): 25-Year Backtest

Screened XETRA for 3-year net income growth streaks, ROE > 8%, D/E < 2.0. Result: 8.43% CAGR vs 5.04% DAX (+3.39%), Sharpe 0.374, 72% win rate, 0 cash periods. Signal works vs the local benchmark; absolute returns lower than Anglo-Saxon markets.

Earnings Growth Consistency vs DAX: Germany (XETRA) cumulative growth 2000-2025. 8.43% CAGR vs 5.04% DAX, +3.39% excess over 25 years.

Germany produces solid alpha against the local benchmark: CAGR of 8.43% vs 5.04% for the DAX. +3.39% per year excess. 0 cash periods. 20.6 stocks on average. Win rate of 72% against the DAX.

Contents

  1. Method
  2. The Signal
  3. The Screen (SQL)
  4. What We Found
  5. Positive alpha vs the local market. The signal works.
  6. Annual returns (July-to-July)
  7. 2001-2002: Early losses, but relative protection
  8. 2011 and 2017: The stand-out years
  9. 2013-2014: Mid-cycle strength
  10. 2024: The worst year in the study
  11. Why Germany Outperforms the DAX But Trails Anglo-Saxon Markets
  12. Backtest Methodology
  13. Limitations
  14. Takeaway
  15. Part of a Series

Compared to Anglo-Saxon markets, the absolute return is lower and the drawdowns are deeper. But the signal works clearly when measured against what German investors actually have access to: the domestic market. Germany is the European data point in this study, and it's a genuine positive result.

Understanding why Germany underperforms relative to Anglo-Saxon markets is as useful as understanding why it beats the local baseline.

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


Method

Universe: XETRA-listed stocks with market cap > €500M, actively trading Period: July 2000 to July 2025 (25 annual holding periods) Rebalancing: Annual, each July. Top 30 by ROE, equal weight. Benchmark: DAX Performance Index (total return, EUR) Execution: Next-day close (MOC) Cash rule: Hold cash if fewer than 10 stocks qualify. Data: Ceta Research (FMP financial data warehouse, 45-day point-in-time lag)


The Signal

Earnings streak: Net income grew year-over-year in each of the last three fiscal years. Four data points required. All must be positive.

ROE > 8%: Germany has many capital-intensive industrial companies with structurally lower returns on equity. This filter removes the low-efficiency industrial base while retaining higher-quality manufacturers and services businesses.

D/E < 2.0: Moderate leverage cap. German companies, particularly automotive and industrial, often carry meaningful debt. The 2.0 threshold accommodates manageable leverage while excluding distressed cases.

Portfolio: top 30 by ROE descending, equal weight.


The Screen (SQL)

WITH
fy_income AS (
    SELECT symbol, netIncome, dateEpoch,
        ROW_NUMBER() OVER (PARTITION BY symbol ORDER BY dateEpoch DESC) AS rn
    FROM income_statement
    WHERE period = 'FY'
      AND netIncome IS NOT NULL
      AND symbol IN (SELECT DISTINCT symbol FROM profile WHERE exchange IN ('XETRA'))
),
streak AS (
    SELECT y1.symbol
    FROM fy_income y1
    JOIN fy_income y2 ON y1.symbol = y2.symbol AND y2.rn = 2
    JOIN fy_income y3 ON y1.symbol = y3.symbol AND y3.rn = 3
    JOIN fy_income y4 ON y1.symbol = y4.symbol AND y4.rn = 4
    WHERE y1.rn = 1
      AND y1.netIncome > y2.netIncome
      AND y2.netIncome > y3.netIncome
      AND y3.netIncome > y4.netIncome
      AND y4.netIncome > 0
)
SELECT
    s.symbol,
    p.companyName,
    p.sector,
    ROUND(k.returnOnEquityTTM * 100, 1) AS roe_pct,
    ROUND(f.debtToEquityRatioTTM, 2)    AS debt_to_equity,
    ROUND(k.marketCap / 1e9, 2)         AS market_cap_b
FROM streak s
JOIN key_metrics_ttm k ON s.symbol = k.symbol
JOIN financial_ratios_ttm f ON s.symbol = f.symbol
JOIN profile p ON s.symbol = p.symbol
WHERE k.returnOnEquityTTM > 0.08
  AND f.debtToEquityRatioTTM >= 0
  AND f.debtToEquityRatioTTM < 2.0
  AND k.marketCap > 500000000
  AND p.exchange IN ('XETRA')
ORDER BY k.returnOnEquityTTM DESC
LIMIT 30

Run this query on Ceta Research


What We Found

Earnings Growth Consistency vs S&P 500: Germany (XETRA) cumulative growth 2000-2025.
Earnings Growth Consistency vs S&P 500: Germany (XETRA) cumulative growth 2000-2025.

Positive alpha vs the local market. The signal works.

Metric Earnings Consistency DAX
CAGR 8.43% 5.04%
Sharpe Ratio 0.374 -
Max Drawdown -36.3% -
Down Capture 27.1% 100%
Win Rate (annual vs DAX) 72% -
Avg Stocks per Period 20.6 -
Cash Periods 0 of 25 -

The max drawdown of -36.3% is high — Germany's market saw deep drawdowns in 2001-2002 and 2008. But the down capture of 27.1% vs the DAX shows the portfolio absorbed far less of those losses than the broad German market. Germany doesn't offer the drawdown protection seen in Canada or the UK, but it delivers genuine risk-adjusted outperformance against the local benchmark.

Annual returns (July-to-July)

Earnings Consistency vs S&P 500 annual returns 2000-2024, Germany (XETRA).
Earnings Consistency vs S&P 500 annual returns 2000-2024, Germany (XETRA).

Year Portfolio DAX Excess
2000 +2.4% -12.2% +14.6%
2001 -30.9% -31.3% +0.4%
2002 -7.8% -22.8% +15.0%
2003 +27.0% +23.4% +3.6%
2004 -10.4% +15.6% -26.0%
2005 +17.4% +23.6% -6.1%
2006 +18.5% +39.3% -20.8%
2007 -12.4% -20.8% +8.4%
2008 -17.1% -25.2% +8.1%
2009 +27.4% +23.6% +3.7%
2010 +28.6% +27.6% +1.1%
2011 +9.4% -12.7% +22.1%
2012 +8.7% +21.8% -13.1%
2013 +32.3% +25.3% +7.0%
2014 +22.7% +12.0% +10.7%
2015 -1.0% -12.5% +11.5%
2016 +23.4% +28.5% -5.1%
2017 +21.3% -1.9% +23.2%
2018 +8.5% +2.4% +6.1%
2019 +16.7% +0.7% +16.0%
2020 +34.9% +24.1% +10.8%
2021 -6.6% -18.4% +11.8%
2022 +20.0% +25.9% -5.8%
2023 +16.3% +14.3% +2.0%
2024 -3.4% +29.5% -32.9%

2001-2002: Early losses, but relative protection

-30.9% in 2001. The dot-com and telecom collapse hit Germany hard. German equity markets had heavy telecom exposure (Deutsche Telekom was one of the largest XETRA stocks). But vs the DAX, which fell -31.3%, the portfolio almost matched — just +0.4% excess. The screen held companies that had grown earnings through the tech boom. They fell, but so did the DAX.

2002 recovered the story: portfolio -7.8% vs DAX -22.8% (+15.0% excess). As the post-bubble correction deepened, earnings-consistent German companies proved significantly more resilient than the broad market.

2011 and 2017: The stand-out years

2011: portfolio +9.4% vs DAX -12.7% (+22.1% excess). 2017: portfolio +21.3% vs DAX -1.9% (+23.2% excess). These two years show the signal at its best in Germany. In 2011, the European debt crisis hit the DAX hard; consistent earners proved defensively positioned. In 2017, German exporters struggled while quality domestic businesses continued compounding.

2013-2014: Mid-cycle strength

+32.3% in 2013 and +22.7% in 2014, vs DAX +25.3% and +12.0%. Germany's mid-cycle recovery from the European debt crisis benefited precisely the kind of companies the earnings consistency filter selects: Mittelstand industrials and specialty manufacturers with demonstrated earnings growth and moderate leverage.

2024: The worst year in the study

-3.4% vs DAX +29.5% — a -32.9% miss. This is the single worst year in the 25-year German backtest. The DAX surged on a combination of AI optimism, European reflation trades, and post-energy-crisis industrial recovery. Earnings-consistent German companies, which tend toward steady but not high-growth businesses, missed the rally entirely.

This is the strategy's fundamental risk in Germany: it selects quality earners, not growth momentum. When the market rewards catch-up growth — beaten-down cyclicals recovering, AI beneficiaries rerating — the consistent-earner portfolio is structurally excluded.


Why Germany Outperforms the DAX But Trails Anglo-Saxon Markets

The +3.39% excess return vs DAX is real, but the absolute CAGR of 8.43% trails the US (11.61%), UK (11.65%), and Canada (11.75%). The gap has a structural explanation.

Germany's economy concentrates in global cyclicals: automotive, chemicals, industrial machinery, capital goods. These sectors have episodic earnings growth. They compound well during global expansion and compress sharply during contractions. Consistent three-year growth streaks are less common in cyclical industrials than in defensive services or consumer businesses.

In the US, consistent earners include technology companies that grew earnings regardless of cycle. In Canada, they include banks and telecoms. In Germany, the consistent earner universe is smaller and more volatile in sector composition.

The DAX itself has been a weak benchmark in price terms because of Germany's economic challenges over the period. The strategy beats it clearly, but the underlying economy constrains what's achievable in absolute terms.


Backtest Methodology

Parameter Choice
Universe XETRA, Market Cap > €500M
Signal 3-year net income growth streak, ROE > 8%, D/E < 2.0
Portfolio Top 30 by ROE, equal weight
Rebalancing Annual (July)
Cash rule Hold cash if < 10 qualify
Benchmark DAX Performance Index (total return, EUR)
Execution Next-day close (MOC)
Period 2000-2025 (25 years, 25 annual periods)
Data lag Point-in-time, 45-day lag

Limitations

Cyclical sector risk. The XETRA universe is dominated by cyclical industrials. The earnings consistency filter reduces cyclical exposure but doesn't eliminate it. In downturns that hit German manufacturing — 2001-2002, 2008, 2024 — the strategy absorbs losses. The 2024 miss (-32.9% vs DAX) shows the risk acutely.

Small eligible universe. Averaging 20.6 qualifying stocks is on the low end. The filter is working with a narrower passing universe than the US (27.0 stocks) or India (25.5 stocks). Concentrated equal-weight portfolios in small universes have more idiosyncratic risk.

Currency effects. Returns are in EUR. Both the portfolio and the DAX benchmark are EUR-denominated, so currency movements don't affect the relative comparison.


Takeaway

Germany shows the signal working against the local benchmark: +3.39% excess return per year, 72% win rate, 0% cash periods, 27.1% down capture vs DAX. The absolute CAGR of 8.43% is lower than the Anglo-Saxon markets, reflecting Germany's economic structure — more cyclical, more export-dependent, more vulnerable to manufacturing recessions.

For investors with Germany exposure, the earnings consistency filter clearly improves risk-adjusted returns over the full cycle. It doesn't eliminate Germany's cyclical risk — 2024's -32.9% miss is evidence of that. But 72% of years it beats the DAX, and across 25 years it compounds at 8.43% vs the DAX's 5.04%.


Part of a Series


Data: Ceta Research, FMP financial data warehouse. Universe: XETRA. Annual rebalance (July), equal weight (top 30 by ROE), 2000-2025. Benchmark: DAX Performance Index (total return, EUR).