Met de formule w * Cov * t (w) kan ik een negatieve portfoliovariantie genereren. Wat zijn de implicaties van een negatieve variantie? Moet ik gewoon aannemen dat het nul is? Een negatieve variantie is lastig omdat je de vierkantswortel (om de standaarddeviatie te schatten) van een negatief getal niet kunt nemen zonder toevlucht te nemen tot imaginaire getallen. Het lijkt ook niet consistent met de formule voor variantie die is het gemiddelde van de afwijkingen in het kwadraat van het gemiddelde, aangezien kwadraat altijd een positief getal oplevert.
De negatieve variantie is het topje van de ijsberg van mijn echte probleem. Ik heb een covariantiematrix die (ex ante) verwachtingen weergeeft. Ik heb en wil geen gebruik maken van historische rendementen. Ik heb 23 activaklassen. Ik heb gespeeld met wat portfolio-optimalisatie (geen gemiddelde variantie). Ik bedenk een set gewichten (w) voor een optimale portfolio. Ik heb ook een set gewichten voor mijn benchmark (b). Ik ben aan het berekenen een tracking error. Het kwadraat van de tracking error moet (w-b) * cov * t (w-b) zijn. Dit is wat negatief is.
Verder zijn mijn gewichten voldoende verschillend van mijn maatstaf dat inspectie en intuïtie me vertellen dat nul het verkeerde antwoord is. Om dit verder te bewijzen heb ik 1000 willekeurige rendementen gegenereerd (gebruikmakend van mijn aannames voor rendement en de covariantiematrix) voor de activaklassen en 1000 rendementen berekend voor w en voor b. Vervolgens heb ik het verschil berekend en vervolgens de variantie genomen. En aangezien ik een computer heb, heb ik dit 1000 keer herhaald. De laagste tracking error (vierkantswortel van de variantie van de verschillen) was 2,7%. Dus ik ben ervan overtuigd dat de variantie positief moet zijn.
FWIW, ik heb een covariantiematrix van 23×23. Het meeste is afkomstig van een openbare bron ( Onderzoek Affiliates ). Ik voeg gemeentelijke obligaties toe. Ik ben best tevreden met de covariantiematrix in andere toepassingen, bijv. de portfoliovariantie van w en van b lijkt groot.
Elk inzicht in wat ik fout zou kunnen doen, hetzij computationeel, hetzij door interpretatie, zou op prijs worden gesteld. Al mijn werk is in R en ik zou wat gegevens en code kunnen delen.
Opmerkingen
- Je matrix is niet semi-definitief positief en daarom niet een covariantiematrix. Dat is een probleem met “handmatig” ontworpen “covariantie” -matrices. Er zijn manieren om een legitieme covariantiematrix te creëren die “dichtbij” (in zekere afstandszin) van uw matrix ligt.
- Kunt u de gegevens van uw var / cov-matrix posten? Zoals de opmerking hierboven aangeeft, is het zeer waarschijnlijk dat het niet positief semi-definitief is.
Antwoord
Zoals gezegd door andere gebruikers hier is uw ontworpen covariantiematrix blijkbaar niet positief-definitief en daarom krijgt u dit vreemde gedrag.
Houd er rekening mee dat dit niet alleen een wiskundig probleem is, maar een economisch probleem.
Bekijk dit als speelgoedvoorbeeld: als A en B sterk negatief gecorreleerd zijn (zeg -1), dan kunnen ze niet beide negatief gecorreleerd zijn (weer -1) met een derde C. Je kunt zon matrix ontwerpen (= opschrijven) maar dit is iets wat je niet tegenkomt in de juiste wiskunde of het echte leven.
Wat je kunt het volgende doen:
- Kies niet-negatieve varianties voor elk item $ V = diag (v_1, v_2, \ ldots, v_n) $
- kies een positief-bepaalde matrix voor de correlaties $ C $
- Bereken $ Cov = \ sqrt {V} C \ sqrt {V} $ waarbij de vierkantswortel componentgewijs is.
De berekening in de derde stap wordt besproken op stack.overflow . Het pakket corpcor biedt manieren om covarianties voor gekozen doelen te verkleinen en biedt controles voor positieve zekerheid.
De functie make.positive.definite
is beschikbaar die de (in een gekozen betekenis) matrix met een positieve definitie het dichtst bij een bepaalde matrix vindt.
Antwoord
Zoals Ivan in zijn commentaar opmerkte, is je matrix geen geldige covariantiematrix. Anders gezegd, er bestaat geen dataset (met volledige waarnemingen) waaruit je zon covariantiematrix zou kunnen schatten.
De eenvoudigste manier om zon matrix te repareren is door de negatieve eigenwaarden van de matrix te vervangen door nullen . Deze methode is geïmplementeerd in functie repairMatrix
in het R-pakket NMOF
, wat ik volhoud.
Antwoord
Iwan s opmerking is een goed antwoord. Ik voeg iets toe, maar maak vooral een antwoord in plaats van een opmerking om ervoor te zorgen dat zoekresultaten aangeven dat er een antwoord is. Mijn covariantiematrix moet positief semi-definitief zijn. Zoals ik het begrijp, vertaalt dit zich ruwweg naar een niet-negatief getal. Als je ermee vermenigvuldigt, krijg je nul of zoiets met hetzelfde teken.Hier is een link naar een korte uitleg van positieve semi-definitieve en positieve definitieve die ik nuttig vond. Bedankt Ivan.
Reacties
- Dit is niet correct. Om te controleren of uw matrix positief half definitief is, heeft u verschillende opties, waarbij u het gemakkelijkst kunt controleren of alle eigenwaarden positief zijn. Een ander goed alternatief is om na te gaan of de belangrijkste belangrijkste minoren allemaal positief zijn. Matlab kan dat in een fractie van een seconde controleren.
- Een positieve semi-definitieve matrix impliceert dat $ x ‘ \ Sigma x $ niet negatief is, want elke echte $ x $. Voor een positief bepaalde matrix is $ x ‘ \ Sigma x $ strikt groter dan nul.