Von den Bausteinen zu einem funktionierenden Optimierer
Ein Minimum-Varianz-Portfolio auf dem Papier hat keine Regeln. Ein echtes Mandat ist nur long, voll investiert und zahlt fürs Handeln, und die einzige Möglichkeit zu sehen, was diese Regeln bewirken, ist, den Optimierer selbst zu bauen und an Tagen zu testen, die er nie gesehen hat. Dieses Abschlussprojekt nutzt drei Ideen der Fähigkeit: das Gradientenverfahren für die Schleife, eine Projektion für die Nur-Long-Budgetregel und eine L1-Grenze für die Trades. Es genügt NumPy, und kein Bibliothekslöser ist erlaubt.
Das projizierte Gradientenverfahren macht einen gewöhnlichen Gradientenschritt auf der Varianz wᵀΣw, deren Gradient 2Σw ist, und bildet das Ergebnis dann mit der Projektion Π auf das nächste Nur-Long-Portfolio mit voller Investition ab. Die Schrittweite 1/L, mit L=2λₘₐₓ(Σ) dem größten Eigenwert der Hesse-Matrix, ist stets stabil. Die Projektion auf {w≥0, Σw=1} hat eine exakte Antwort: den Vektor absteigend sortieren, kumulative Summen minus eins bilden, die letzte Position ρ finden, an der der sortierte Wert noch seine kumulative Summe geteilt durch k übersteigt, θ als diese kumulative Summe geteilt durch ρ+1 setzen und max(v-θ,0) zurückgeben. Alle Gewichte werden um denselben Betrag verschoben, und die, die negativ würden, werden bei null gekappt.
Der Umschlag ist die L1-Norm des Trades, ‖w-w₀‖₁. Um ihn unter einer Grenze τ zu halten und zugleich zulässig zu bleiben, geht man nur den Bruchteil α des Weges vom aktuellen Portfolio w₀ zum Ziel wₜ des Optimierers. Ein Punkt auf der Strecke zwischen zwei Nur-Long-Portfolios mit voller Investition ist wieder Nur-Long und voll investiert, und die L1-Norm wächst entlang der Strecke linear, der Trade ist also genau min(Lücke,τ). Jedes Rebalancing kostet dann c mal seinen Umschlag, den der Backtest vom ersten Tag des Haltebocks abzieht. Die Gewichte eines Blocks dürfen nur die Tage davor nutzen, und berichtet werden Volatilität und Rendite der aneinandergefügten Out-of-Sample-Tage nach Kosten.
- Projiziertes Gradientenverfahren: Gradientenschritt 2Σw mit Schrittweite 1/L, dann Projektion auf den Simplex.
- Umschlagsgrenze: den Bruchteil α=min(1,τ/Lücke) zum Ziel gehen; das Portfolio bleibt zulässig.
- Ehrlicher Backtest: auf den letzten
windowTagen schätzen,stepTage halten, Kosten abziehen und die aneinandergefügten Out-of-Sample-Zahlen berichten.
Lab: Was bewertet wird
- Projektion auf den Simplex20 Pkt.
- Projiziertes Gradientenverfahren25 Pkt.
- Eine Umschlagsgrenze15 Pkt.
- Ein rollierender Backtest mit Kosten25 Pkt.
- Die Politiken vergleichen15 Pkt.