Walk-Forward in der Praxis: so testen Sie Strategien ehrlich.
Walk-Forward-Analyse trennt funktionierende Strategien von gefitteten Illusionen. Sie ist mühsamer als klassische Optimierung — aber die einzige Methode, die ich Mandanten ohne schlechtes Gewissen empfehlen kann.
Wenn jemand eine Strategie optimiert, sieht das oft so aus: „Ich teste 1000 Parameterkombinationen auf den letzten 5 Jahren, nehme die beste und gehe damit live." Das Problem: die „beste" Kombination auf historischen Daten ist mit hoher Wahrscheinlichkeit die, die am besten auf das historische Rauschen passt — nicht die mit dem stabilsten Edge.
Was Walk-Forward macht.
Walk-Forward simuliert, was Sie in der Realität tun würden: Sie optimieren auf bekannten Daten, handeln dann auf unbekannten Daten, sehen wie es lief, und optimieren bei Bedarf neu.
Konkret teilen Sie Ihre Historie in zwei rotierende Fenster:
- In-Sample (IS): Zeitraum für die Optimierung, z. B. 2 Jahre.
- Out-of-Sample (OOS): Zeitraum direkt nach IS, z. B. 6 Monate. Hier wird die optimierte Strategie getestet, ohne nochmal anzufassen.
Nach jedem OOS-Fenster rückt das gesamte Zwei-Fenster-System um die OOS-Länge vorwärts. Am Ende haben Sie eine kontinuierliche OOS-Equity-Kurve, die aus mehreren unabhängigen Out-of-Sample-Phasen zusammengesetzt ist.
Die Walk-Forward-Effizienz (WFE).
Der wichtigste Metric, der aus Walk-Forward kommt:
WFE = OOS-Return / IS-Return WFE = 1.0 → OOS so gut wie IS (sehr selten) WFE = 0.7 → OOS = 70 % des IS-Returns (gutes Signal) WFE = 0.3 → starkes Overfitting (Strategie nicht live-tauglich) WFE < 0 → OOS verliert Geld (klar tot)
Eine WFE über 0,5 ist ein realistisches Ziel. Was Sie aus Werbungen kennen — „Sharpe 3, Drawdown 5 %" — hat fast immer eine WFE deutlich unter 0,3, was bedeutet: 70 % der Performance verschwindet live.
Wie Sie es konkret aufsetzen.
In MetaTrader 5
MT5 hat Walk-Forward eingebaut, aber etwas versteckt. Im Strategy Tester:
- Strategy-Tester öffnen, Symbol + Zeitraum festlegen
- Bei „Optimierung": Genetic Algorithm auswählen
- Im Reiter „Forward" wählen Sie 1/2 (= 2/3 für IS, 1/3 für OOS)
- Optimieren laufen lassen
- Im Reiter „Optimierungsgraph" sehen Sie pro Parameterkombination IS- und OOS-Performance getrennt
Das ist allerdings noch nicht echtes rolling Walk-Forward — es ist eine einfache IS/OOS-Splittung. Für echtes rollendes WF müssen Sie mehrere Test-Läufe mit verschobenen Fenstern manuell aufsetzen und die Ergebnisse zusammenführen.
In Python
Mit dem vectorbt-Framework oder mit eigenem Code:
# Vereinfachtes Walk-Forward in Python import pandas as pd from itertools import product def walk_forward(prices, strategy_fn, param_grid, is_months=24, oos_months=6): results = [] start = prices.index[0] end = prices.index[-1] current = start while current + pd.DateOffset(months=is_months + oos_months) <= end: is_data = prices[current : current + pd.DateOffset(months=is_months)] oos_data = prices[current + pd.DateOffset(months=is_months) : current + pd.DateOffset(months=is_months + oos_months)] # Optimize on IS best_params, best_is_ret = None, -float('inf') for params in product(*param_grid.values()): ret = strategy_fn(is_data, **dict(zip(param_grid, params))) if ret > best_is_ret: best_is_ret, best_params = ret, params # Test on OOS oos_ret = strategy_fn(oos_data, **dict(zip(param_grid, best_params))) results.append({ 'window_start': current, 'is_return': best_is_ret, 'oos_return': oos_ret, 'params': best_params, 'wfe': oos_ret / best_is_ret if best_is_ret != 0 else None, }) current += pd.DateOffset(months=oos_months) return pd.DataFrame(results)
Was Sie an den Ergebnissen ablesen.
1. WFE-Stabilität über alle Fenster
Streuen die WFE-Werte stark (manche 0,9, andere -0,5)? Dann hat die Strategie keine stabile Edge — sie funktioniert nur in bestimmten Marktphasen. Das ist relevant, aber macht die Strategie nicht live-tauglich ohne Regime-Filter.
2. Parameter-Stabilität
Wenn die optimalen Parameter über die Fenster wild springen (Fenster 1: lookback=14, Fenster 2: lookback=43, Fenster 3: lookback=8), ist das ein klares Zeichen: die Strategie fittet Rauschen, kein echtes Pattern.
3. OOS-Equity-Kurve
Ist die zusammengesetzte OOS-Equity stetig steigend oder seitwärts mit kleinen Drawdowns? Dann haben Sie eine echte Strategie. Springt sie hoch und runter, ist die Strategie instabil. Fällt sie kontinuierlich: das System verliert Geld nach Optimierung — das ist möglicherweise ein anti-edge, der auch interessant ist (umgekehrt handeln).
Häufige Fehler bei Walk-Forward.
- Zu kurze IS-Periode: Wenn IS nur 3 Monate ist, hat die Optimierung zu wenig Daten und macht Müll. Mindestens 1 Jahr, besser 2.
- Zu lange OOS-Periode: Wenn OOS 2 Jahre ist, schließt die Strategie potenziell ein neues Regime ein, ohne sich anzupassen. 3–6 Monate ist ein guter Bereich.
- OOS-Anpassung: Wenn Sie nach dem Walk-Forward die Methode anpassen, weil das Ergebnis schlecht aussah, haben Sie die OOS-Eigenschaft zerstört. Das ist dann verkappte In-Sample-Optimierung.
- Zu viele Parameter: 10 Parameter mit je 5 Werten = 9,7 Millionen Kombinationen. Selbst mit Walk-Forward findet man da Zufallstreffer. Maximal 3–4 wirklich orthogonale Parameter.
Walk-Forward ist kein Selbstläufer.
Eine Strategie mit guter Walk-Forward-Performance kann live trotzdem versagen — wenn sich das Marktregime grundsätzlich ändert (Negativzins-Phase endet, neue Asset-Klassen entstehen, regulatorische Eingriffe). Walk-Forward beschränkt das Overfitting-Risiko, eliminiert es nicht.
Aber: ohne Walk-Forward fliegen Sie blind. Die meisten Strategien, die mir Mandanten zeigen, fallen bei meinem ersten Walk-Forward-Test durch. Das ist nicht traurig — das ist das, wofür der Test da ist.
Sie wollen wissen, ob Ihre Strategie ein ehrliches Walk-Forward übersteht? Erstgespräch buchen — wir setzen es gemeinsam auf.