Level 3 KI im Trading · Teil 6/8

Kreuzvalidierung ohne Datenleck

Kreuzvalidierung ist das Standardwerkzeug, um zu prüfen, ob ein Modell verallgemeinert. An Finanzdaten liefert sie in ihrer üblichen Form systematisch zu gute Ergebnisse.

Warum k-fache Kreuzvalidierung leckt

Die übliche k-fache Kreuzvalidierung teilt die Daten zufällig in k Blöcke, trainiert auf k−1 und testet auf dem verbleibenden. Sie setzt Unabhängigkeit voraus.

Bei Kursdaten führt das zu zwei Lecks:

Über Labels. Ein Trainingsbeispiel kurz vor dem Testblock hat ein Label, das bis in den Testblock hineinreicht. Sein Ergebnis wird von denselben Kursbewegungen bestimmt wie die Testbeispiele. Das Modell hat einen Teil der Antwort schon gesehen.

Über Autokorrelation. Kurse benachbarter Zeitpunkte sind ähnlich. Ein Modell, das den Kurs vom Montag und vom Mittwoch kennt, kann den Dienstag beinahe raten, ohne irgendetwas Ökonomisches gelernt zu haben.

Das Ergebnis ist immer dasselbe: eine hervorragende Validierungsgüte und ein enttäuschender Live-Betrieb.

Purging und Embargo

1234alysly.com
Bei überlappenden Labels leckt Information über die Grenze zwischen Training und Test. (1) Trainingsdaten, (2) Testfenster. (3) Die Purge-Zone entfernt Trainingsbeispiele, deren Label bis in das Testfenster hineinreicht. (4) Das Embargo sperrt zusätzlich eine kurze Zeitspanne direkt nach dem Test, weil Kursreihen seriell korreliert sind. Ohne beides sieht eine Kreuzvalidierung großartig aus und der Live-Betrieb enttäuscht — das Modell hat schlicht Teile der Antwort gekannt.

Purging entfernt aus dem Training alle Beispiele, deren Label-Fenster sich mit dem Testfenster überschneidet. Damit endet das Leck über die Labels.

Embargo sperrt zusätzlich eine kurze Zeitspanne direkt nach dem Testfenster. Grund ist die Autokorrelation: Beispiele unmittelbar nach dem Test enthalten noch Information über dessen Ende, auch wenn ihre Label-Fenster sich nicht formal überschneiden. Übliche Größenordnung sind ein bis fünf Prozent der Datenlänge.

Beides zusammen kostet Trainingsdaten – bei zehn Blöcken schnell einen mittleren einstelligen Prozentsatz. Dieser Verlust ist der Preis dafür, dass die Kennzahl überhaupt etwas bedeutet.

Warum ein einzelner Testzeitraum zu wenig ist

Auch mit Purging bleibt ein Problem: Ein einzelner Aufteilungspfad liefert genau eine Kennzahl. Ob sie stabil ist oder von einer glücklichen Trennstelle abhängt, ist daran nicht zu erkennen.

Die kombinatorische, gepurgte Kreuzvalidierung setzt hier an: Statt eines Testblocks werden mehrere Blöcke in verschiedenen Kombinationen als Test verwendet. Daraus entstehen viele unterschiedliche Trainings-/Testpfade und damit eine Verteilung von Ergebnissen statt einer Zahl.

Der Nutzen ist derselbe wie beim Monte-Carlo-Rechner für Portfolios: Man sieht die Bandbreite dessen, was bei gleicher Datengrundlage ebenfalls hätte herauskommen können. Eine Strategie, deren Sharpe Ratio je nach Aufteilung zwischen 0,2 und 1,8 schwankt, ist etwas anderes als eine mit stabilen 0,9 – auch wenn beide im Mittel gleich aussehen.

Was bleibt

Selbst ein sauber gepurgtes Verfahren beantwortet nur die Frage, ob das Modell auf diesen Daten verallgemeinert. Es beantwortet nicht, ob der gefundene Zusammenhang morgen noch existiert, und es korrigiert nicht die Zahl der ausprobierten Varianten.

Genau diese zweite Frage ist der letzte und größte Fehler – und Gegenstand des nächsten Artikels.

Weiterlesen

Wie viele Versuche stecken in einem guten Backtest?