Ved hjælp af formlen w * Cov * t (w) kan jeg generere en negativ porteføljevarians. Hvad er konsekvenserne af en negativ varians? Skal jeg bare antage, at det er nul? En negativ varians er besværlig, fordi man ikke kan tage kvadratroden (for at estimere standardafvigelsen) af et negativt tal uden at ty til imaginære tal. Det virker heller ikke i overensstemmelse med formlen for varians, som er gennemsnittet af de kvadratiske afvigelser fra middelværdien, da kvadrering altid producerer et positivt tal.
Den negative varians er toppen af isbjerget på mit virkelige problem. Jeg har en kovariansmatrix, der repræsenterer (forudgående) forventninger. Jeg har ikke og ønsker ikke at bruge historisk afkast. Jeg har 23 aktivklasser. Jeg har spillet rundt med en vis porteføljeoptimering (ikke middelvarians). Jeg kommer med et sæt vægte (w) for en optimal portefølje. Jeg har også et sæt vægte til min benchmark (b). Jeg beregner en sporingsfejl. Kvadratet for sporingsfejlen skal være (w-b) * cov * t (w-b). Dette er hvad der er negativt.
Yderligere er mine vægte tilstrækkeligt forskellige fra mit benchmark, at inspektion og intuition fortæller mig, at nul er det forkerte svar. For yderligere at bevise dette genererede jeg 1000 tilfældige afkast (ved hjælp af mine antagelser om afkast og kovariansmatrix) for aktivklasser og beregnet 1000 afkast for w og for b. Så beregnede jeg forskellen, og så tog jeg variansen. Og da jeg har en computer, gentog jeg dette 1000 gange. Den laveste sporingsfejl (kvadratroden af forskellenes varians) var 2,7%. Så jeg er sikker på, at variansen skal være positiv.
FWIW, jeg har en 23×23 kovariansmatrix. Det meste af det kommer fra en offentlig kilde ( Research Tilknyttede selskaber ). Jeg tilføjer kommunale obligationer. Jeg er temmelig tilfreds med kovariansmatrixen ved, at andre anvendelser til den – f.eks. porteføljeafvigelsen mellem w og b ser ud til at være stor.
Enhver indsigt i enten hvad jeg måske gør forkert beregningsmæssigt eller ved fortolkning ville blive værdsat. Alt mit arbejde er i R, og jeg kunne dele nogle data og kode.
Kommentarer
- Din matrix er ikke semidefinit positiv, derfor er den ikke en kovariansmatrix. Det er et problem med “manuelt” designede “kovarians” -matricer. Der er måder at oprette en legitim kovariansmatrix, der er “tæt” (i en vis afstand) fra din matrix.
- Kan du sende dataene til din var / cov-matrix? Som kommentaren ovenfor angiver, er det meget sandsynligt, at det ikke er positivt semi-bestemt.
Svar
Som påpeget ud af andre brugere her er din designede kovariansmatrix tilsyneladende ikke positiv-bestemt, og derfor får du denne mærkelige opførsel.
Bemærk venligst, at dette ikke kun er et matematisk problem, men et økonomisk.
Som et legetøjseksempel, se på dette: Hvis A og B er stærkt negativt korreleret (siger -1), kan de ikke begge være negativt korreleret (igen -1) til en tredje C. Du kan designe (= skrive ned) en sådan matrix, men det er noget, du ikke kan støde på i korrekt matematik eller i det virkelige liv.
Hvad du kan gøre:
- Vælg ikke-negative afvigelser for hvert aktiv $ V = diag (v_1, v_2, \ ldots, v_n) $
- vælg en positiv-bestemt matrix for sammenhængene $ C $
- Beregn $ Cov = \ sqrt {V} C \ sqrt {V} $ hvor kvadratroden er komponentvis.
Beregningen i det tredje trin diskuteres på stack.overflow . Pakken corpcor tilbyder måder at formindske samvarieringer til valgte mål og tilbyder kontrol for positiv definitet.
Funktionen make.positive.definite
er tilgængelig, der finder den nærmeste (i en valgt forstand) positiv-bestemt matrix til en given.
Svar
Som Ivan påpegede i sin kommentar, er din matrix ikke en gyldig kovariansmatrix. Med andre ord findes der ikke noget datasæt (med komplette observationer), hvorfra du kunne have estimeret en sådan kovariansmatrix.
Den enkleste måde at reparere en sådan matrix på er at erstatte matrixens negative egenværdier med nuller . Denne metode er implementeret i funktion repairMatrix
i R-pakken NMOF
, som jeg vedligeholder.
Svar
Ivans kommentar er et godt svar. Jeg tilføjer noget, men skaber hovedsageligt en svar i stedet for en kommentar for at sikre, at søgeresultaterne viser, at der er et svar. Min kovariansmatrix skal være positiv semi-bestemt. Som jeg forstår det, betyder det groft, at det er som et ikke-negativt tal. Når du multiplicerer med det, får du nul eller noget med det samme tegn.Her er et link til en kort forklaring af positiv semidefinit og positiv bestemt , som jeg fandt nyttigt. Tak Ivan.
Kommentarer
- Dette er ikke korrekt. For at kontrollere det er din matrix positiv semi-bestemt, du har flere muligheder for at være den nemmeste at kontrollere, at alle egenværdier er positive. Et andet godt alternativ er at kontrollere, om de førende mindreårige er positive. Matlab kan kontrollere det i en brøkdel af et sekund.
- En positiv semidefinit matrix betyder, at $ x ‘ \ Sigma x $ er ikke-negativ, for enhver reel $ x $. For en positiv bestemt matrix er $ x ‘ \ Sigma x $ strengt større end nul.