Mit der Formel w * Cov * t (w) kann ich eine negative Portfolio-Varianz erzeugen. Was bedeutet eine negative Varianz? Sollte ich einfach annehmen, dass es Null ist? Eine negative Varianz ist problematisch, weil man die Quadratwurzel (um die Standardabweichung abzuschätzen) einer negativen Zahl nicht ziehen kann, ohne auf imaginäre Zahlen zurückzugreifen. Sie scheint auch nicht mit der Formel für die Varianz übereinzustimmen, die ist der Durchschnitt der quadratischen Abweichungen vom Mittelwert, da die Quadratur immer eine positive Zahl ergibt.
Die negative Varianz ist die Spitze des Eisbergs meines eigentlichen Problems. Ich habe eine Kovarianzmatrix, die (Ex-ante-) Erwartungen darstellt. Ich habe und möchte keine historischen Renditen verwenden. Ich habe 23 Anlageklassen. Ich habe mit einigen Portfoliooptimierungen herumgespielt (nicht mit mittlerer Varianz). Ich habe eine Reihe von Gewichten (w) für ein optimales Portfolio entwickelt. Ich habe auch eine Reihe von Gewichten für meinen Benchmark (b). Ich berechne ein Tracking Error. Das Quadrat des Spurfehlers sollte (w-b) * cov * t (w-b) sein. Das ist negativ.
Außerdem unterscheiden sich meine Gewichte ausreichend von meinem Benchmark, sodass Inspektion und Intuition mir sagen, dass Null die falsche Antwort ist. Um dies weiter zu beweisen, habe ich 1000 zufällige Renditen (unter Verwendung meiner Annahmen für die Rendite und die Kovarianzmatrix) für die Anlageklassen generiert und 1000 Renditen für w und für b berechnet. Dann habe ich die Differenz berechnet und dann die Varianz genommen. Und da ich einen Computer habe, habe ich das 1000 Mal wiederholt. Der niedrigste Spurfehler (Quadratwurzel der Varianz der Differenzen) betrug 2,7%. Ich bin daher zuversichtlich, dass die Varianz positiv sein sollte.
FWIW, ich habe eine 23×23-Kovarianzmatrix. Das meiste davon stammt aus einer öffentlichen Quelle ( Research Affiliates ). Ich füge Kommunalanleihen hinzu. Ich bin ziemlich zufrieden mit der Kovarianzmatrix, die andere für sie verwenden – z Die Portfolio-Varianz von w und von b scheint groß zu sein.
Jeder Einblick in das, was ich entweder rechnerisch oder interpretativ falsch mache, wäre willkommen. Alle meine Arbeiten sind in R und ich könnte einige Daten und Code teilen.
Kommentare
- Ihre Matrix ist nicht halb definitiv positiv, daher ist es nicht eine Kovarianzmatrix. Dies ist ein Problem bei „manuell“ gestalteten „Kovarianz“ -Matrizen. Es gibt Möglichkeiten, eine legitime Kovarianzmatrix zu erstellen, die (in gewissem Abstand) nahe an Ihrer Matrix liegt.
- Können Sie die Daten Ihrer Var / Cov-Matrix veröffentlichen? Wie aus dem obigen Kommentar hervorgeht, ist es sehr wahrscheinlich, dass es nicht positiv und halbbestimmt ist.
Antwort
Wie bereits erwähnt Von anderen Benutzern hier heraus ist Ihre entworfene Kovarianzmatrix anscheinend nicht positiv-definit und daher erhalten Sie dieses seltsame Verhalten.
Bitte beachten Sie, dass dies nicht nur ein mathematisches, sondern ein wirtschaftliches Problem ist.
Schauen Sie sich als Spielzeugbeispiel Folgendes an: Wenn A und B stark negativ korreliert sind (sagen wir -1), können sie nicht beide negativ korreliert sein (wieder -1) mit einem dritten C. Sie können eine solche Matrix entwerfen (= aufschreiben), aber dies ist etwas, dem Sie in der richtigen Mathematik oder im wirklichen Leben nicht begegnen können.
Was Sie haben folgende Möglichkeiten:
- Wählen Sie für jedes Asset nicht negative Abweichungen aus. $ V = diag (v_1, v_2, \ ldots, v_n) $
- Wählen Sie eine positiv-definierte Matrix Berechnen Sie für die Korrelationen $ C $
- $ Cov = \ sqrt {V} C \ sqrt {V} $, wobei die Quadratwurzel komponentenweise ist.
Die Berechnung im dritten Schritt wird unter stack.overflow erläutert. Das Paket corpcor bietet Möglichkeiten zum Verkleinern von Kovarianzen auf ausgewählte Ziele und bietet Überprüfungen auf positive Bestimmtheit.
Die Funktion make.positive.definite
ist verfügbar, das die positivste definierte Matrix (in einem gewählten Sinne) zu einer bestimmten Matrix findet.
Antwort
Wie Ivan in seinem Kommentar betonte, ist Ihre Matrix keine gültige Kovarianzmatrix. Anders ausgedrückt, es gibt keinen Datensatz (mit vollständigen Beobachtungen), aus dem Sie eine solche Kovarianzmatrix hätten schätzen können.
Der einfachste Weg, eine solche Matrix zu reparieren, besteht darin, die negativen Eigenwerte der Matrix durch Nullen zu ersetzen . Diese Methode ist in der Funktion repairMatrix
im R-Paket NMOF
implementiert
Antwort
Iwans Kommentar ist eine gute Antwort. Ich füge etwas hinzu, erstelle aber hauptsächlich eine Antworten Sie anstelle eines Kommentars, um sicherzustellen, dass in den Suchergebnissen eine Antwort angezeigt wird. Meine Kovarianzmatrix sollte positiv und halbbestimmt sein. So wie ich es verstehe, bedeutet dies ungefähr, dass es sich um eine nicht negative Zahl handelt. Wenn Sie damit multiplizieren, erhalten Sie Null oder etwas mit dem gleichen Vorzeichen.Hier ist ein Link zu einer kurzen Erklärung von positivem halbbestimmtem und positivem definitiv , die ich nützlich fand. Danke Ivan.
Kommentare
- Dies ist nicht korrekt. Um zu überprüfen, ob Ihre Matrix positiv ist, haben Sie mehrere Möglichkeiten, um zu überprüfen, ob alle Eigenwerte positiv sind. Eine weitere gute Alternative besteht darin, zu überprüfen, ob die führenden Minderjährigen alle positiv sind. Matlab kann dies in Sekundenbruchteilen überprüfen.
- Eine positive semidefinitive Matrix impliziert, dass $ x ‚ \ Sigma x $ nicht negativ ist, z jedes echte $ x $. Für eine positive bestimmte Matrix ist $ x ‚ \ Sigma x $ streng größer als Null.