Kreuzvalidierung, die die Uhr respektiert
Die Kreuzvalidierung nutzt die Daten mehrfach: Sie schneidet sie in Faltungen, testet an einer und trainiert an den übrigen. Bei unabhängigen Zeilen klappt das, aber finanzielle Labels überlappen sich zeitlich. Ist das Label der Zeile die Rendite von bis , ist sein Fenster . Eine Testfaltung, die die Zeilen bis abdeckt, hat Labels, die abdecken. Jede Trainingszeile, deren Fenster diesen Bereich berührt, also , teilt Renditen mit den Testlabels. Behält man solche Zeilen, sieht das Modell einen Teil der Antwort.
Das Purging entfernt die überlappenden Trainingszeilen. Ein Embargo entfernt zusätzlich Zeilen nach der Testfaltung, weil Renditen autokorreliert sind und Volatilität clustert, die ersten Zeilen nach einem Testblock also noch Information über ihn tragen. Bei Walk-forward liegt das Training nur vor dem Test, und dieselbe Idee wird zu einer Lücke: auf Zeilen bis trainieren, die Lücke ist also (plus ). TimeSeriesSplit von scikit-learn hat dafür ein gap-Argument. Auf dem monatlichen Aktienpanel mit beträgt der Walk-forward-Informationskoeffizient ohne Embargo und mit Monaten Embargo: Die Bereinigung ändert wenig, weil die Label-Überlappung kurz ist, doch das weiß man nur, wenn man es tut.
- Purging, dann Embargo: Trainingszeilen entfernen, deren Labels die Testlabels berühren, danach noch einige nach dem Test.
- Eine Lücke im Walk-forward: Nur auf Zeilen trainieren, die mindestens vor dem Test liegen.
- Tun Sie es, auch wenn es wenig ändert: Eine saubere Bewertung kostet ein paar Zeilen, ein Leak kann eine Strategie kosten.
Lab: Was bewertet wird
- Vor der Faltung entfernte Zeilen10 Pkt.
- Nach der Faltung entfernte Zeilen15 Pkt.
- Die verbleibende Trainingsgröße15 Pkt.
- Eine Walk-forward-Faltung mit Lücke10 Pkt.
- Welche Zeilen entfernt werden10 Pkt.
- Eine bereinigte Aufteilung10 Pkt.
- Begriffe zuordnen15 Pkt.
- Warum auch ein Embargo15 Pkt.