Ein Optimierer ist eine Funktion plus Regeln
scipy.optimize.minimize(fun, x0, method='SLSQP', bounds=..., constraints=...) findet den Vektor, der fun am kleinsten macht. Man gibt drei Arten von Information. Das Ziel fun(w) liefert eine zu minimierende Zahl: Für ein Minimum-Varianz-Portfolio ist es w @ cov @ w, und um etwas zu maximieren, minimiert man sein Negatives. Die Schranken sind eine Liste von Paaren (unten, oben), eines je Gewicht: (0, cap) heißt keine Leerverkäufe und keine Position über dem Limit. Die Nebenbedingungen sind Dictionaries: {'type': 'eq', 'fun': lambda w: w.sum() - 1} erzwingt die Summe eins, denn eine eq-Funktion muss null sein, eine ineq-Funktion dagegen mindestens null. Auch der Startpunkt x0 zählt: Gleichgewichte sind ein vernünftiger, zulässiger Start.
Zwei Details entscheiden, ob die Antwort stimmt. Erstens die Skala: Tagesvarianzen sind Zahlen wie 0,0001, und SLSQP hält an, wenn sich das Ziel um weniger als die Toleranz ftol (Standard 1e-6) ändert; mit rohen Tageswerten kann es also am Startpunkt stehen bleiben, ohne sich zu bewegen. Annualisieren Sie die Eingaben (mal 252), übergeben Sie options={'ftol': 1e-12, 'maxiter': 500} und prüfen Sie immer result.success und ob die Gewichte die Regeln einhalten. Zweitens die Formulierung: Das Maximieren der Sharpe-Ratio ist ein Quotient, also minimieren Sie -(w @ mu) / sqrt(w @ cov @ w); Risikoparität verlangt gleiche Risikoanteile wᵢ(Σw)ᵢ/ wᵀΣw, also minimieren Sie die quadrierten Abstände zu 1/n; und eine effiziente Grenze ist ein Minimum-Varianz-Problem je Zielrendite, mit einer zweiten eq-Nebenbedingung w @ mu - Ziel.
- Skala und Toleranz: Annualisieren Sie die Eingaben und verschärfen Sie
ftol, sonst bleibt SLSQP dort stehen, wo es begann. - Antwort prüfen: Die Gewichte müssen die Summe eins ergeben und die Schranken einhalten; sehen Sie
result.successan. - Ein Werkzeug, vier Probleme: Minimum-Varianz, negative Sharpe-Ratio, gleiche Risikoanteile und ein Problem je Zielrendite sind alles
minimize-Aufrufe mit anderen Zielen und Nebenbedingungen.
Lab: Was bewertet wird
- Jahreseingaben8 Pkt.
- Rendite und Risiko eines Portfolios8 Pkt.
- Minimale Varianz mit Limit18 Pkt.
- Maximale Sharpe-Ratio18 Pkt.
- Risikobeiträge10 Pkt.
- Risikoparität16 Pkt.
- Eine Grenze Punkt für Punkt10 Pkt.
- Drei Portfolios12 Pkt.