MDAX Backtesting mit pandas (Schritt für Schritt)
Von Shakti Tiwari — Optionshändler, Research-Analyst und Spezialist für KI im Trading
Der MDAX ist das Schaufenster des deutschen Mittelstands an der Börse: 50 mittelgroße Unternehmen unterhalb der DAX-40-Schwergewichte. Für Strategieentwickler ist er interessant, weil er sich oft anders verhält als der große Bruder — historisch mit Phasen deutlicher Out- und Underperformance gegenüber dem DAX. Trotzdem gibt es kaum deutschsprachige Anleitungen, wie man den MDAX kostenlos backtestet. Diese Lücke schließt dieser Artikel: Schritt für Schritt, nur mit Python, yfinance und pandas, ohne bezahlte Datenanbieter und ohne erfundene Performancezahlen.
Schritt 1: Umgebung einrichten
Sie brauchen Python 3 und zwei Bibliotheken:
pip install yfinance pandas
Das funktioniert auf jedem Betriebssystem — sogar auf einem Android-Smartphone mit Termux oder kostenlos im Browser über Google Colab. Ein leistungsstarker Rechner ist für Tagesdaten nicht nötig.
Schritt 2: MDAX-Daten kostenlos laden
Der MDAX ist bei Yahoo Finance unter dem Ticker ^MDAXI gelistet:
import yfinance as yf
mdax = yf.download("^MDAXI", period="10y", auto_adjust=True)
print(mdax.shape)
print(mdax.tail())
Sie erhalten einen pandas-DataFrame mit täglichen Open-, High-, Low-, Close- und Volumendaten. Prüfen Sie die Daten kurz auf Lücken:
print(mdax.index.min(), mdax.index.max())
print(mdax["Close"].isna().sum())
Diese zwei Zeilen gehören in jeden seriösen Workflow — fehlerhafte Daten sind die häufigste Ursache für unsinnige Backtest-Ergebnisse.
Schritt 3: Renditen und Kennzahlen mit pandas
Bevor Sie eine Strategie testen, sollten Sie den Index selbst verstehen:
rendite = mdax["Close"].pct_change()
jahresvol = rendite.std() * (252 ** 0.5)
max_dd = (mdax["Close"] / mdax["Close"].cummax() - 1).min()
print(f"Annualisierte Volatilität: {float(jahresvol):.1%}")
print(f"Maximaler Drawdown im Zeitraum: {float(max_dd):.1%}")
Führen Sie den Code selbst aus — die konkreten Werte hängen vom Abrufzeitpunkt und Zeitraum ab, deshalb drucken wir hier bewusst keine festen Zahlen ab. Genau das ist der Punkt des Selbst-Backtestens: Sie vertrauen Ihrem eigenen Ergebnis, nicht einer Marketingfolie.
Schritt 4: Eine Regel definieren und testen
Als Beispiel eine einfache Momentum-Regel: investiert sein, wenn der Schlusskurs über seinem 200-Tage-Durchschnitt liegt.
close = mdax["Close"]
sma200 = close.rolling(200).mean()
signal = (close > sma200).astype(int).shift(1) # erst am Folgetag handeln!
strategie = (signal * rendite).fillna(0)
equity_strategie = (1 + strategie).cumprod()
equity_buyhold = (1 + rendite.fillna(0)).cumprod()
Das shift(1) ist nicht optional: Ein Signal, das auf dem heutigen Schlusskurs basiert, kann frühestens morgen umgesetzt werden. Ohne diese Verschiebung schleicht sich Look-Ahead-Bias ein und der Backtest wird wertlos.
Schritt 5: Transaktionskosten einbauen
Jeder Wechsel zwischen investiert und nicht investiert kostet Geld — Ordergebühr plus Slippage. In pandas lässt sich das in zwei Zeilen modellieren:
wechsel = signal.diff().abs().fillna(0)
kosten = 0.001 # 0,1 % pro Umschichtung als Annahme — an Ihren Broker anpassen
strategie_netto = strategie - wechsel * kosten
equity_netto = (1 + strategie_netto).cumprod()
Vergleichen Sie immer die Netto-Equity-Kurve mit Buy-and-Hold. Viele Strategien, die brutto glänzen, verlieren nach Kosten ihren Vorsprung — das vorher zu wissen, ist der ganze Sinn des Backtests.
Schritt 6: Robustheit prüfen
Ein einziger guter Backtest beweist nichts. Drei kostenlose Robustheitstests:
- Out-of-Sample: Optimieren Sie Parameter (z. B. die Länge des gleitenden Durchschnitts) nur auf der ersten Hälfte der Daten und prüfen Sie auf der zweiten.
- Parameter-Nachbarschaft: Funktioniert die Regel auch mit 180 oder 220 Tagen statt 200? Wenn nur exakt ein Wert funktioniert, ist es Zufall.
-
Andere Indizes: Testen Sie dieselbe Regel auf DAX (
^GDAXI) und SDAX (^SDAXI). Eine robuste Idee sollte sich nicht nur auf einem einzigen Index bewähren.
Besonderheiten des MDAX, die Sie kennen sollten
- Performance-Index: Wie der DAX rechnet der MDAX Dividenden ein. Vergleiche mit Kursindizes verzerren.
- Kein direkt handelbares Produkt: Sie handeln real einen MDAX-ETF oder Einzelaktien — mit Tracking-Differenz und Kosten, die im Indexbacktest nicht enthalten sind.
-
Geringere Liquidität der Mitglieder: Bei Strategien auf einzelne MDAX-Aktien (z. B.
LEG.DE,GXI.DEvia yfinance) sind Spreads spürbar größer als bei DAX-Werten — kalkulieren Sie höhere Slippage ein. - Indexumstellungen: Die Zusammensetzung ändert sich regelmäßig (Auf- und Abstiege, seit 2021 von 60 auf 50 Werte verkleinert). Backtests auf heutigen Mitgliederlisten leiden unter Survivorship-Bias; der Index selbst hat dieses Problem nicht.
Takeaway
MDAX-Backtesting kostet nichts außer Sorgfalt: yfinance liefert ^MDAXI gratis, pandas erledigt Renditen, Signale und Kostenmodellierung in wenigen Zeilen, und die drei Robustheitstests trennen echte Muster von Zufall. Wer diesen sechsstufigen Ablauf einmal sauber aufgebaut hat, kann jede neue Strategieidee in Minuten statt Wochen prüfen — bevor auch nur ein Euro riskiert wird.
Haftungsausschluss: Dieser Artikel dient ausschließlich Bildungszwecken und stellt keine Anlageberatung oder Aufforderung zum Kauf oder Verkauf von Finanzinstrumenten dar. Der Handel mit Wertpapieren ist mit erheblichen Risiken bis hin zum Totalverlust verbunden. Vergangene Wertentwicklungen und Backtest-Ergebnisse sind kein verlässlicher Indikator für zukünftige Ergebnisse.
Treten Sie unserem Telegram-Kanal bei: https://t.me/shaktitrade
Kontakt: https://optiontradingwithai.in
Ich kann Ihnen kostenlos beim Backtesting-Setup helfen — E-Mail shaktitiwari715@gmail.com
💬 Need Help? (Free Support)
If you have any trouble building your own AI trading model, or questions about any article — I can help you for free.
📧 Email: shaktitiwari715@gmail.com
📢 Telegram: https://t.me/shaktitrade
No course, no upsell — just genuine help for retail traders.

Top comments (0)