Ujemna wariancja?

Korzystając ze wzoru w * Cov * t (w) mogę wygenerować ujemną wariancję portfela. Jakie są konsekwencje ujemnej wariancji? Czy powinienem po prostu założyć, że to zero? Ujemna wariancja jest kłopotliwa, ponieważ nie można wziąć pierwiastka kwadratowego (w celu oszacowania odchylenia standardowego) z liczby ujemnej bez uciekania się do liczb urojonych. Nie wydaje się również zgodna ze wzorem na wariancję, który jest średnią kwadratów odchyleń od średniej, ponieważ podniesienie do kwadratu zawsze daje liczbę dodatnią.

Ujemna wariancja to wierzchołek góry lodowej mojego prawdziwego problemu. Mam macierz kowariancji reprezentującą oczekiwania (ex-ante). Nie mam i nie chcę korzystać ze zwrotów historycznych. Mam 23 klasy aktywów. Bawiłem się pewną optymalizacją portfela (nie średnią wariancją). Wymyślam zestaw wag (w) dla optymalnego portfela. Mam również zestaw wag dla mojego punktu odniesienia (b). Obliczam błąd śledzenia. Kwadrat błędu śledzenia powinien mieć postać (w-b) * cov * t (w-b). To jest negatywne.

Co więcej, moje wagi na tyle różnią się od mojego wzorca, że inspekcja i intuicja mówią mi, że zero jest złą odpowiedzią. Aby dodatkowo to udowodnić, wygenerowałem 1000 losowych zwrotów (używając moich założeń dotyczących zwrotu i macierzy kowariancji) dla klas aktywów i obliczyłem 1000 zwrotów dla wi dla b. Następnie obliczyłem różnicę, a potem wziąłem wariancję. A ponieważ mam komputer, powtórzyłem to 1000 razy. Najniższy błąd śledzenia (pierwiastek kwadratowy z wariancji różnic) wyniósł 2,7%. Jestem więc pewien, że wariancja powinna być dodatnia.

FWIW, mam macierz kowariancji 23×23. Większość pochodzi ze źródła publicznego ( Badania Podmioty stowarzyszone ). Dodaję obligacje komunalne. Jestem całkiem zadowolony z macierzy kowariancji w innych zastosowaniach – np. wariancja portfela wi b wydaje się być świetna.

Każdy wgląd w to, co robię źle, obliczeniowo lub przez interpretację, byłby doceniony. Cała moja praca jest w języku R i mógłbym udostępnić pewne dane i kod.

Komentarze

  • Twoja macierz nie jest pół-jednoznacznie dodatnia, więc nie jest macierz kowariancji. To jeden problem z „ręcznie” zaprojektowanymi macierzami „kowariancji”. Istnieją sposoby na stworzenie legalnej macierzy kowariancji, która jest „blisko” (w pewnym sensie odległości) od twojej macierzy.
  • Czy możesz opublikować dane swojej macierzy var / cov? Jak wskazuje powyższy komentarz, jest wysoce prawdopodobne, że nie jest on częściowo jednoznaczny.

Odpowiedź

Jak wskazano przez innych użytkowników tutaj, twoja zaprojektowana macierz kowariancji najwyraźniej nie jest dodatnia i dlatego uzyskujesz to dziwne zachowanie.

Pamiętaj, że nie jest to tylko problem matematyczny, ale problem ekonomiczny.

Jako przykład zabawki spójrz na to: jeśli A i B są silnie ujemnie skorelowane (powiedzmy -1), to nie mogą zarówno ujemnie skorelowane (ponownie -1) z trzecią C. Możesz zaprojektować (= zapisać) taką macierz, ale jest to coś, czego nie możesz spotkać w poprawnej matematyce lub w prawdziwym życiu.

Co co możesz zrobić:

  1. Wybierz nieujemne wariancje dla każdego zasobu $ V = diag (v_1, v_2, \ ldots, v_n) $
  2. wybierz macierz dodatnią dla korelacji $ C $
  3. Oblicz $ Cov = \ sqrt {V} C \ sqrt {V} $ gdzie pierwiastek kwadratowy jest składowy.

Obliczenia w trzecim kroku omówiono na stack.overflow . Pakiet corpcor oferuje sposoby zmniejszania kowariancji do wybranych celów i zapewnia sprawdzenie, czy są jednoznaczne.

Funkcja make.positive.definite jest dostępna, która wyszukuje najbliższą (w wybranym sensie) macierz dodatnio określoną do jakiejś podanej.

Odpowiedź

Jak zauważył Ivan w swoim komentarzu, twoja macierz nie jest prawidłową macierzą kowariancji. Innymi słowy, nie istnieje zbiór danych (z pełnymi obserwacjami), na podstawie których można by oszacować taką macierz kowariancji.

Najprostszym sposobem naprawy takiej macierzy jest zastąpienie ujemnych wartości własnych macierzy zerami . Ta metoda jest zaimplementowana w funkcji repairMatrix w pakiecie R NMOF , którą utrzymuję.

Odpowiedź

Komentarz Ivana jest dobrą odpowiedzią. Dodaje coś, ale głównie tworzę odpowiedz zamiast komentarza, aby upewnić się, że w wynikach wyszukiwania jest odpowiedź. Moja macierz kowariancji powinna być dodatnia półokreślona. Jak rozumiem, to z grubsza oznacza, że jest to liczba nieujemna. Kiedy pomnożesz przez to, otrzymasz zero lub coś z tym samym znakiem.Oto link do krótkiego wyjaśnienia pozytywnego, półokreślonego i pozytywnego określonego , które uznałem za przydatne. Dzięki, Ivan.

Komentarze

  • To nie jest poprawne. Aby sprawdzić, czy twoja macierz jest dodatnia, półokreślona, masz kilka opcji, które najłatwiej sprawdzić, czy wszystkie wartości własne są dodatnie. Inną dobrą alternatywą jest sprawdzenie, czy wszyscy główni nieletni są pozytywni. Matlab może to sprawdzić w ułamku sekundy.
  • Dodatnia macierz półokreślona oznacza, że $ x ' \ Sigma x $ jest nieujemne, dla jakiekolwiek prawdziwe $ x $. W przypadku dodatnio określonej macierzy $ x ' \ Sigma x $ jest ściśle większe od zera.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *