Matrizen als Maschinerie der Portfolios
Ein Portfolioproblem ist ein Matrixproblem. Die Kovarianzmatrix enthält die Varianzen und Mitbewegungen der Anlagen, und fast jede Aufgabe verlangt, etwas damit zu tun. scipy.linalg.solve(A, b) löst nach der Unbekannten . Man sollte nicht die Inverse inv(A) berechnen und multiplizieren: Das direkte Lösen macht weniger Arbeit und verliert weniger Genauigkeit. Die Cholesky-Zerlegung, linalg.cholesky(S, lower=True), zerlegt eine Kovarianzmatrix als , wobei eine untere Dreiecksmatrix ist, also Nullen über der Diagonale hat. Ist ein Vektor unabhängiger Standardnormalzahlen, hat die Kovarianz , und so simuliert man korrelierte Renditen.
Die Eigenwerte von zeigen, wie viele unabhängige Risikoquellen es wirklich gibt. linalg.eigvalsh(S) liefert sie für eine symmetrische Matrix, der kleinste zuerst. Bei zwei Anlagen mit Korrelation hat die Korrelationsmatrix die Eigenwerte und , stark korrelierte Anlagen haben also einen großen und einen winzigen Eigenwert. Das Verhältnis des größten zum kleinsten Eigenwert ist die Konditionszahl. Eine große Konditionszahl heißt, die Matrix ist fast singulär, also kaum invertierbar, und eine kleine Änderung der Daten kann das Ergebnis eines Lösens stark verschieben. Optimierer, die die Inverse von nehmen, reagieren genau darauf empfindlich.
- Lösen, nicht invertieren:
solve(A, b)ist schneller und genauer alsinv(A) @ b. - Cholesky erzeugt Korrelation: Unabhängige Normalzahlen mit multiplizieren ergibt Renditen mit Kovarianz .
- Die Konditionszahl beachten: Stark korrelierte Anlagen machen fast singulär und Lösungen instabil.
Lab: Was bewertet wird
- Der Cholesky-Faktor20 Pkt.
- Ein System lösen10 Pkt.
- Eine Konditionszahl10 Pkt.
- Der Varianzanteil eines Faktors10 Pkt.
- Wofür jede Routine da ist15 Pkt.
- Korrelierte Renditen simulieren10 Pkt.
- Warum nicht invertieren25 Pkt.