Dein Backtest lügt dich an — baue den 40-Zeilen-Python-Bot, der es beweist
Ein pandas-Tutorial über die drei Arten, wie Backtests täuschen: Lookahead, Survivorship, Overfitting – und die einzeilige Lösung für jedes Modell.
Beginne mit dem Geständnis, denn das ist alles. In AutoScientist-Quant (arXiv 2608.28632, v1 erstmals 5. August 2026, v2 überarbeitet 1. September 2026) schrieben Zongqian Li, Yaoyiran Li, Nigel Collier, Eugene Ie und Co-Autoren, dass sie zwei Lookahead-Probleme in einer Evaluierungspipeline beheben mussten, die sie aus früherer Arbeit wiederverwendet hatten — und dann das Feedback-Fenster vom Test-Fenster trennen mussten. Lies das zweimal. Ergebnisse waren bereits auf dieser Pipeline veröffentlicht. Der exakte Fehler, den dieses Sonntagsprojekt dich in 40 Zeilen Python zu fangen lehrt, sass unbemerkt in der gemeinsamen Infrastruktur eines Frontier-Quant-Labs. Das ist die Berechtigung für ein Anfänger-Tutorial ohne Herablassung: der Fehler kümmert sich nicht darum, wie senior du bist.
Die Feldübersicht kommt aus einer begleitenden Umfrage — Fengrui Hua, Hengyi Yang, Jia Li, Jian Guo und Kollegen (insgesamt acht Autoren), arXiv 2608.31041v1, eingereicht 31. August 2026. Sie zerlegen agentisches quantitatives Trading in fünf benannte Stufen: factor mining, signal discovery, portfolio construction, order execution und risk management. Ihre ehrliche Erkenntnis ist, dass alle auf derselben Stufe drängen: Systeme sind «weiterhin konzentriert auf signal discovery, während die vollständige Integration mit portfolio construction, execution und risk control immer noch selten ist». Wir werden ehrlich in die gleiche Richtung gehen. Dieses Tutorial baut ein Spielzeug der zweiten Stufe (signal discovery) und einen Hauch der fünften Stufe (risk as validation). Die Stufen drei und vier — wo das echte Geld tatsächlich gewonnen oder verloren wird — lassen wir beiseite.
Der schärfste Satz der Umfrage ist der zum Aufhängen über dem Schreibtisch: «Ein starkes Modell oder eine starke Prognosefähigkeit setzt sich nicht zuverlässig in Handelsleistung unter Live-Marktbedingungen um». Ein besserer Prädiktor ist nicht automatisch ein besseres System. Jeder Ingenieur, der eine herrliche Simulation auf eine echte Baustelle trifft, kennt genau das bekannte Gefühl.
←HEUTE: 2026: Ein Quant-Lab musste zwei Lookahead-Bugs in einer Pipeline beheben, auf der andere bereits veröffentlicht hatten. →3012: Die Büros, die bis Zürich-3012 überleben, sind die, die ein Fenster zurückhielten und nie hineinschauten. Drehpunkt: Ein Backtest und ein Energiemodell scheitern auf die gleiche Weise — beide benoten die Prüfung nach ihrem Lösungsschlüssel.
Die drei Lügen, beim Namen genannt
Lookahead (Hineinschauen). Dein Signal zur Zeit t wird mit Information berechnet, die bei t nicht existierte — meist dadurch, dass die Rendite des Balkens verdient wird, dessen Schluss das Signal erzeugte. Ein Moving-Average-Crossover, berechnet auf dem heutigen Schluss, kann nicht zum heutigen Schluss gehandelt werden; du handelst morgen. Eine falsch ausgerichtete Reihe verwandelt eine Verlustregel in einen Gewinner.
Survivorship. Der Datensatz enthält nur die heute noch notierten Namen. Alles, was delisted, bankrott oder akquiriert wurde, wurde stillschweigend entfernt — das Universum, das du testest, wird durch das Ergebnis definiert, das du vorhersagen willst.
Overfitting des Report-Fensters. Du feinabstimmst Parameter (20 und 50, beispielsweise) auf einem Stück Geschichte, dann berichtest über dieselbe Strecke. Mit genug Kombinationen sieht eine beliebige Regel auf jedem festen Fenster brillant aus. Das Gegenmittel, deutlich in AutoScientist-Quant benannt: halte das Feedback-Fenster vom Test-Fenster getrennt. Tune auf einem, berichte auf dem anderen, schaue nicht auf den zweiten, bis zum Ende.
Das Werkzeug: pandas — entwickelt von Wes McKinney 2008, jetzt von der Open-Source-pandas-Gemeinschaft betreut. Keine Handelsbibliothek, kein Makler, kein API-Schlüssel. Die ganze Lektion steckt darin, wie pandas zwei Series an ihrem Index ausrichtet, und ein falsches .shift() ist der ganze Fehler. Wenn du pandas ausführen kannst, siehst du die Lüge an einem Nachmittag mit deinen eigenen Augen.
Einrichtung:
python -m venv .venv
.venvScriptsactivate # Windows PowerShell
pip install pandas numpy
python -c "import pandas, numpy; print(pandas.__version__)"Erste Schritte:
- Mache eine Preisserie mit einem synthetischen Random Walk — keine echten Ticker, keinen Datenanbieter. Das ist Absicht: ein Random Walk hat kein Signal, jeder «Gewinn», den du siehst, ist der Fehler, nicht Geschick. Es umgeht Survivorship völlig, weil du nie eine Liste von Überlebenden berührtest.
- Berechne den 20/50 Moving-Average-Crossover als dein Signal (1 wenn schnell über langsam, sonst 0).
- Bewerte es auf zwei Wegen: den nächsten Balkengewinn verdienen (ehrlich) versus den selben Balkengewinn verdienen (betrügen). Drucke beide Summen.
- Sieh, wie die Betrügerlinie wie eine Strategie aussieht und die ehrliche Linie gegen Null driftet — oder darunter, nachdem du realistische Kosten pro Trade abziehst. Diese Lücke ist die Auszahlung.
Atelier: Jeder Praktiker führt bereits Backtests durch und nennt sie etwas anderes. Das Energiemodell kalibriert gegen das gleiche Jahr, das es dann vorhersagen soll — Training auf dem Test-Fenster. Die Kostenschätzung gebaut aus den abgeschlossenen Projekten des Büros — die verlorenen Angebote sind nicht im Datensatz, die schlecht gelaufenen Aufträge, die keiner archivierte, auch nicht; das ist Survivorship, exakt. Der Terminplan zusammengestellt aus historischen Arbeitsdauern auf fertig gewordenen Baustellen, dann nachträglich mit Wissen, wie die Arbeit tatsächlich lief, korrigiert — das ist Lookahead. Montagsschritt: nimm die letzten zehn Projekte, tune die Kostenschätzung auf sieben, friere die Zahl ein, öffne die anderen drei nicht bis sie gesperrt sind. Niemand geniesst diesen Nachmittag. Es ist der einzige, der dir etwas sagt.
Hack: Verschiebe die Forward-Rendite um einen Balken vor der Multiplikation — dieses einzelne .shift(-1) ist die Grenze zwischen einer ehrlichen Schleife und einem Blick. Hier ist px eine pandas Series von täglichen Schlüssen; die ganze Lektion ist der Unterschied zwischen den letzten zwei Zeilen.
sig = (px.rolling(20).mean() > px.rolling(50).mean()).astype(int)
ret_fwd = px.pct_change().shift(-1) # Rendite verdient von t bis t+1
honest = (sig * ret_fwd).dropna() # entscheide bei t, verdiene t+1
cheating = (sig * px.pct_change()).dropna() # verdient den Balken, der das Signal machteWarum es funktioniert: px.pct_change() in Reihe t ist die Rendite von t−1 bis t — der Balken, dessen Schluss das Signal machte. .shift(-1) schiebt die t→t+1 Rendite auf Reihe t. Wenn du mit sig multiplizierst, heisst das «die Entscheidung bei t verdient den nächsten Balken». Multiplizierst du sig mit dem ungeshifteten pct_change(), hast du dich selbst für Information bezahlt, die es bei t nicht gab. Die beiden Summen sind meist nicht nah beieinander — die Lücke ist der Artikel.
Sag es deutlich, denn es ist die Leitplanke und die Moral: die ehrliche Version dieses Spielzeugs verliert Geld. Das ist das erwartete Ergebnis und der ganze Punkt. Ein Tutorial, das mit einem profitablen Backtest endet, hat dir die falsche Lektion beigebracht. Das ist Validierungspraxis, keine Anlageberatung — nur Papier und synthetische Daten, keine Ticker, keine Strategie, kein echtes Kapital. Ein profitabler Backtest heisst nur, dass du den Fehler noch nicht gefunden hast.
Wenn du das Self-Hosted-Ende dieser Welt sehen willst, existiert ein Show HN vom 27. Juli 2026 («AlgoDeploy — Python algo trading you run yourself, wired to Alpaca and IBKR») zum Ausführen von Python-Algo-Code selbst. Behandle es als Wegweiser, nicht als Empfehlung — es zog zwei Punkte und keine Kommentare, trägt hier kein Gewicht.
Schritt: Klone nichts. Öffne eine .py Datei, paste die vier Hack-Zeilen um einen Random Walk, und führe es aus, bevor dein Kaffee kalt wird. Dann gehe und finde die nächste Tabellenkalkulation in deinem Büro, die sich selbst nach ihrem eigenen Lösungsschlüssel benotet — und teile sie.
Lern-es:
- Umfrage (die Feldübersicht, fünf Stufen): arXiv 2608.31041v1
- Das Geständnis (zwei Lookahead-Fixes): arXiv 2608.28632 — AutoScientist-Quant
- Wurzelkonzept, aus Feedback lernen ohne dich selbst zu täuschen: Sutton & Barto, Reinforcement Learning: An Introduction (kostenlos online)
- Die Dokumentation des Werkzeugs: pandas.pydata.org
QUELLE · ↗
PAZ Kaffi · interdisziplinäre Redaktionsarbeit, geleitet von der PAZ Academy