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.
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
- Method
- The Signal
- The Screen (SQL)
- What We Found
- Positive alpha vs the local market. The signal works.
- Annual returns (July-to-July)
- 2001-2002: Early losses, but relative protection
- 2011 and 2017: The stand-out years
- 2013-2014: Mid-cycle strength
- 2024: The worst year in the study
- Why Germany Outperforms the DAX But Trails Anglo-Saxon Markets
- Backtest Methodology
- Limitations
- Takeaway
- 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

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)

| 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
- Earnings Growth Consistency: US Results — 11.61% CAGR, flagship study
- Earnings Growth Consistency: Canada Results — best Sharpe globally
- Earnings Growth Consistency: UK Results — best max drawdown globally
- Earnings Growth Consistency: India Results — high absolute returns, mixed vs local benchmark
- Earnings Growth Consistency: Global Comparison — 17 exchanges
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).