Buy the ten German-domiciled companies on XETRA with the strongest twelve-month return, equal weighted, rebalance monthly, hold cash when the DAX is below its 200-day average. 2000–2026, 319 months, 40bps round-trip costs. Live since August 2026. This report is the complete specification, the record, every parameter choice with the sweep behind it, and the data audit.
The DAX returned +5.0% over the same window. The strategy beat it in 20 of 27 years. One euro became €105 against €3.68 in the index.
| Universe | XETRA, German domicile only — read from the ISIN country prefix, not the exchange country field, which tags every US cross-listing as German |
| Size filter | Top 70% by market cap (P30), measured against that month’s own universe |
| Signal | 12-month total return, no skip month |
| Portfolio | Top 10, equal weight, 10% each |
| Rebalance | Monthly |
| Regime | DAX vs its 200-day moving average; below → 100% cash for the month |
| Fundamental filter | None |
| Liquidity filter | None — 60-day average euro turnover is computed and reported per name, not filtered on |
| Costs | 40bps round-trip on realised turnover |
| Signal / execution | Rank on the last trading day of the month, buy at the close of the next |
The ranking is computed from closing prices on the final trading day of the month. Nothing is bought that day — by the time the close is known it has happened. Positions are taken at the close of the following trading day and the return is booked from that price. The regime is read on the signal day and governs the whole following month; it is not re-checked intra-month.
Shaded where the index sits below its average and the strategy stands aside. That is 32% of months since 2000.
Log scale. The strategy compounds to roughly 105x against the DAX’s 3.7x, with the whole gap opening in three stretches: 2003–2007, 2009–2015 and 2019–2021.
Six falls past 10% in 26 years. The deepest is the one running now.
| Started | Trough | Depth | To trough | To recover |
|---|---|---|---|---|
| 2021-07 | 2023-12 | -39.1% | 29m | 14m |
| 2007-11 | 2009-06 | -32.5% | 19m | 8m |
| 2026-06 | 2026-07 | -28.1% | 1m | open |
| 2000-03 | 2003-05 | -22.9% | 38m | 2m |
| 2011-01 | 2012-01 | -22.4% | 12m | 10m |
| 2005-11 | 2005-11 | -21.4% | 0m | 3m |
Green where invested, red where in cash. The filter has taken the book to cash in roughly a third of all months.
Worst month -17.0%, best +28.6%, positive in 43% of months. The distribution has a long right tail and a short, fat left one — the shape of a trend strategy.
| Year | Strategy | DAX | Excess |
|---|---|---|---|
| 2000 | +21.1% | -7.5% | +28.6pp |
| 2001 | -2.0% | -19.8% | +17.8pp |
| 2002 | -0.1% | -43.9% | +43.9pp |
| 2003 | +58.3% | +37.1% | +21.2pp |
| 2004 | +33.3% | +7.3% | +26.0pp |
| 2005 | +45.7% | +27.1% | +18.6pp |
| 2006 | +42.3% | +22.0% | +20.3pp |
| 2007 | -1.3% | +22.3% | -23.6pp |
| 2008 | -18.2% | -40.4% | +22.2pp |
| 2009 | +34.3% | +23.8% | +10.5pp |
| 2010 | +37.0% | +16.1% | +21.0pp |
| 2011 | -16.8% | -14.7% | -2.1pp |
| 2012 | +36.8% | +29.1% | +7.7pp |
| 2013 | +68.0% | +25.5% | +42.5pp |
| 2014 | +2.3% | +2.7% | -0.4pp |
| 2015 | +46.9% | +9.6% | +37.3pp |
| 2016 | +2.1% | +6.9% | -4.8pp |
| 2017 | +69.7% | +12.5% | +57.2pp |
| 2018 | +8.2% | -18.3% | +26.4pp |
| 2019 | +47.1% | +25.5% | +21.6pp |
| 2020 | +18.7% | +3.5% | +15.2pp |
| 2021 | +12.6% | +15.8% | -3.2pp |
| 2022 | -7.9% | -12.3% | +4.5pp |
| 2023 | -16.2% | +20.3% | -36.5pp |
| 2024 | +37.8% | +18.8% | +19.0pp |
| 2025 | +48.4% | +23.0% | +25.4pp |
| 2026 | -18.4% | +4.7% | -23.1pp |
Mean +21.2%, range -10.5% to +62.1%, negative in 8% of windows.
| Period | Months | Strategy | DAX | Excess | Defensive | |
|---|---|---|---|---|---|---|
| Dot-com crash | 2000-03 to 2003-03 | 37 | -22.7% | -68.3% | +45.6pp | 30 cash |
| Global financial crisis | 2007-10 to 2009-03 | 18 | -25.0% | -48.0% | +23.0pp | 15 cash |
| Euro sovereign crisis | 2011-05 to 2012-06 | 14 | -4.7% | -14.6% | +10.0pp | 5 cash |
| 2018 selloff | 2018-01 to 2018-12 | 12 | +8.2% | -18.3% | +26.4pp | 10 cash |
| COVID crash | 2020-01 to 2020-03 | 3 | -5.0% | -25.0% | +20.1pp | 2 cash |
| 2022 bear market | 2022-01 to 2022-09 | 9 | -9.0% | -23.7% | +14.7pp | 9 cash |
| Current drawdown | 2026-05 to 2026-07 | 3 | -23.9% | +5.5% | -29.4pp | 0 cash |
The regime filter did its job in every historical drawdown — between +10 and +46 points of excess, with the book in cash for most of each one. The current episode is the exception and it is worth dwelling on: the strategy is down 23.9% while the DAX is up 5.5%. This is not the market falling. It is the momentum names unwinding while the index holds, which is precisely the case the regime filter cannot see and was never built to catch.
The sweep below puts 12/0 at the top, and the neighbourhood holds rather than falling away. Short lookbacks degrade materially: 3 months returns half the Sharpe.
Cutting the smallest 30% costs little and removes the names where the price series itself is least reliable. Tightening further to the top 50% or 30% reduces returns without improving risk — the edge in this market lives in mid-caps, not large ones.
Sharpe climbs monotonically from MA50 (0.433) through MA125, MA150 and MA200 (0.716), then falls at MA250 and MA300. That shape — a rise, a peak, a fall — is a plateau rather than a fitted point. A ±2% hysteresis band gives the same return with a shallower drawdown and is a reasonable alternative.
Twenty is better on the numbers and is not what runs. See Section XII.
Cash earns nothing in this backtest. At a 3% deposit rate the historical CAGR would be roughly 1.2pp higher; the published figure is the conservative one.
| Lookback | Skip | Sharpe | Sortino | CAGR | MaxDD |
|---|---|---|---|---|---|
| 3M | skip 0 | 0.491 | 1.17 | +18.1% | -48.0% |
| 3M | skip 1 | 0.589 | 1.27 | +18.6% | -52.3% |
| 6M | skip 0 | 0.604 | 1.40 | +19.5% | -31.5% |
| 6M | skip 1 | 0.514 | 1.07 | +16.1% | -38.2% |
| 9M | skip 0 | 0.604 | 1.28 | +18.9% | -39.4% |
| 9M | skip 1 | 0.601 | 1.12 | +16.3% | -37.0% |
| 12M | skip 0 | 0.716 | 1.34 | +19.1% | -39.1% |
| 12M | skip 1 | 0.722 | 1.34 | +18.8% | -32.3% |
| N | Sharpe | Sortino | CAGR | MaxDD |
|---|---|---|---|---|
| 5 | 0.274 | 0.45 | +10.8% | -59.8% |
| 7 | 0.566 | 1.03 | +17.7% | -46.4% |
| 10 | 0.716 | 1.34 | +19.1% | -39.1% |
| 15 | 0.794 | 1.46 | +18.0% | -33.1% |
| 20 | 0.899 | 1.73 | +19.0% | -27.8% |
| 25 | 0.919 | 1.76 | +18.2% | -24.4% |
| 30 | 1.019 | 1.98 | +18.7% | -25.0% |
N=20 is the better configuration and is not the one that runs. Sharpe 0.899 against 0.716, MaxDD −27.8% against −39.1%, for the same CAGR. Ten is run for practicality: twenty positions is a lot of book to turn over every month, and the ten that N=20 adds are largely the ones that cannot be filled. On 2026-09-20 four of ranks 11–20 traded under €42k a day, Nuernberger at €1,201 against €1.43B of market cap. Eleven points of drawdown is the price of that choice and it is paid knowingly.
| Filter | Sharpe | Sortino | CAGR | MaxDD |
|---|---|---|---|---|
| None (live config) | 0.716 | 1.34 | +19.1% | -39.1% |
| NetIncome(TTM)>0 | 0.859 | 1.59 | +18.0% | -29.9% |
| EBIT(TTM)>0 | 0.895 | 1.71 | +18.3% | -28.1% |
| GrossProfit(TTM)>0 | 0.776 | 1.41 | +16.7% | -28.1% |
| ROE(TTM)>0 | 0.838 | 1.55 | +17.5% | -28.7% |
Every profitability screen raises Sharpe and cuts the drawdown at a cost in CAGR. None is applied live.
| Cost | Sharpe | CAGR | MaxDD |
|---|---|---|---|
| 0bps RT | 0.794 | +20.9% | -36.5% |
| 40bps RT | 0.716 | +19.1% | -39.1% |
| 100bps RT | 0.602 | +16.6% | -42.9% |
| 200bps RT | 0.416 | +12.4% | -48.7% |
The XETRA dataset records no delisting at all before 2015. Not few — none. Three appear in 2015, one in 2016, and then between 56 and 116 every year from 2017. Of 1,362 series, 750 end before the panel does, and every one of those endings falls in 2017 or later. The entire Neuer Markt collapse is absent.
That means the first fifteen years of this backtest contain only companies that survived to be in today’s database. What it costs:
| Window | CAGR | Sharpe | MaxDD |
|---|---|---|---|
| 2000–2016 (zero delistings recorded) | +20.1% | 0.75 | -32.5% |
| 2017–2026 (coverage verified complete) | +17.4% | 0.65 | -39.1% |
| Full series, as published | +19.1% | 0.72 | -39.1% |
Read the middle row as the honest estimate. The published 19.1% blends a clean decade with fifteen survivor-only years, and the 2.7 points between them are the measure of what the missing dead companies were worth.
| Ticker | Name | Mcap | 12M | ADV €/day | €12.5k as % of ADV |
|---|---|---|---|---|---|
| SNG | SINGULUS TECHNOLOGIES AG | €0.08B | +457.3% | €342,561 | 3.6% |
| VBK | Verbio SE | €1.95B | +185.8% | €2,681,493 | 0.5% |
| OHB | OHB SE | €3.63B | +177.9% | €6,172,498 | 0.2% |
| AIXA | AIXTRON SE | €4.25B | +167.9% | €23,426,574 | 0.1% |
| S92 | SMA Solar Technology AG | €1.97B | +165.4% | €6,458,494 | 0.2% |
| SMHN | SUSS MicroTec SE | €1.30B | +142.2% | €6,662,524 | 0.2% |
| JEN | Jenoptik AG | €2.26B | +139.9% | €5,737,693 | 0.2% |
| DR0 | Deutsche Rohstoff AG | €0.44B | +127.6% | €1,294,828 | 1.0% |
| SZG | Salzgitter AG | €3.10B | +122.9% | €8,788,693 | 0.1% |
| M7U | Nynomic AG | €0.15B | +120.1% | €526,112 | 2.4% |
Median turnover €5,955,096 a day, thinnest €342,561. At €12,500 a position the median holding is 0.2% of a day’s volume and the worst 3.6%; at €50,000 the worst becomes 14.6%, which is a day or two of working an order rather than one fill. Costs are modelled at 40bps against a measured median spread of 35bps across the eligible universe. Comfortable below €2M of capital.
| Signal date | Holdings |
|---|---|
| 2025-07-31 | VH2, ENR, CY1K, RHM, AG1, TKA, ACT, D77, HAG, R3NK |
| 2025-08-31 | D77, ENR, VH2, RHM, AG1, ACT, TKA, HAG, CBK, CEK |
| 2025-09-30 | RHM, R3NK, HAG, TKA, VH2, ACT, D77, ENR, AG1, CEK |
| 2025-10-31 | TKA, RHM, R3NK, BSL, AG1, ACT, VH2, HAG, BIKE, ENR |
| 2025-11-30 | IBU, TKA, VH2, BIKE, BSL, HOT, S92, R3NK, OHB, FTK |
| 2025-12-31 | TKA, VH2, IBU, R3NK, BIKE, ACT, HOT, D77, NDX1, S92 |
| 2026-01-31 | OHB, VMED, TKA, IBU, NDX1, BIKE, S92, VBK, 4DS, HOT |
| 2026-02-28 | VMED, OHB, NDX1, VBK, ENR, BIKE, 4DS, IBU, HOT, SZG |
| 2026-03-31 | VBK, OHB, AIXA, NDX1, S92, DR0, 4DS, NBG6, ENR, HOT |
| 2026-04-30 | AIXA, OHB, S92, VBK, ELG, DR0, NDX1, HOT, NBG6, ENR |
| 2026-05-31 | OHB, AIXA, VBK, S92, BSL, PFSE, HOT, DR0, SZG, WAF |
| 2026-06-30 | SNG, OHB, AIXA, HOT, S92, NDX1, LPK, NBG6, VBK, JEN |
318 rebalances since 2000, 342 distinct names. Roughly three of ten positions change each month.