Wyznaczanie symulacyjne granicy minimalnej w portfelu Markowitza Łukasz Kanar UNIWERSYTET WARSZAWSKI WYDZIAŁ NAUK EKONOMICZNYCH WARSZAWA 2008
1. Portfel Markowitza Dany jest pewien portfel n 1 spółek giełdowych. KaŜda akcja przynosi pewną stopę zwrotu. Ta stopa jest zmienną losową. Znane są jej podstawowe charakterystyki, tj. wartość oczekiwana oraz wariancja. Interesuje mnie wartość oczekiwana oraz wariancja całego portfela, chcę w jakiś sposób wyznaczyć zbiór moŝliwych wartości oczekiwanych portfela w zaleŝności od jego wariancji. W pracy tej interesować mnie będzie znalezienie granicy minimalnej oraz maksymalnej 2. Granica minimalna to,,lewa strona zbioru dopuszczalnego, czyli takie portfele, które przy danej wartości oczekiwanej mają najmniejszą wariancję. Granica maksymalna to,,prawa strona, czyli portfele, które przy danej wartości oczekiwanej mają najmniejszą wariancję. W praktyce waŝniejsza jest oczywiście granica minimalna, co związane jest z awersją ludzi do ryzyka. Dodatkowo wyznaczę jeszcze portfele efektywne, czyli te które przy ustalonej wariancji mają maksymalną stopę zwrotu, a przy ustalonej stopie zwrotu minimalną wariancję. Model ma następującą postać: n - liczba dostępnych akcji (n=13) µ wektor stóp zwrotu (n x 1) Σ - macierz wariancji-kowariancji stóp zwrotu (n x n) x 1,..., x n udziały poszczególnych akcji w portfelu (Σ n i=1 x i = 1) Przyjmuję dodatkowe załoŝenia: 1) Nie ma krótkiej sprzedaŝy, tzn. x i > 0 dla kaŝdego i = 1,..., n 2) Aktywa są doskonale podzielne, tzn. x i jest liczbą rzeczywistą 3) Brak dodatkowych kosztów (podatki, koszty transakcji, itp.) Stopa zwrotu całego portfela to (x 1... x n )µ Wariancja całego portfela to (x 1... x n ) Σ (x 1... x n ) T Do znalezienia granicy minimalnej (maksymalnej) uŝyję metody symulacyjnej. Zbiór efektywny wyznaczę na podstawie granicy minimalnej. 2. Działanie programu KROK 1: Wczytanie danych Dane pochodzą ze strony bossa.pl. Są to dane w formacie OMEGA. Obejmują 13 spółek gieldowych, tj. Agora, Amica Wronki, Bank BPH, BRE Bank, Dębica, Indykpol, KGHM Polska Miedź, Bank Millenium, Netia, Optimus, Orbis, Prokom Software, TPSA. Wybierając taki portfel kierowałem się długością danych oraz wielkością spółek. Dane są danymi dziennymi. Do programu wczytałem je przy pomocy makra wczytaj_dane_bossa. 1 n=13 2 przede wszystkim minimalnej, wiąŝe się to z lepszą jakością tego zbioru (więcej o tym później przy analizie wyników) oraz z większym znaczeniem praktycznym 2
KROK 2: Obróbka danych i estymacja parametrów modelu Wybrałem maksymalny okres, dla którego miałem większość danych dla wszystkich spółek, tj. od 15.06.2000 do 22.02.2008. Z pewnych przyczyn zalecane jest branie danych z co drugiej sesji. W ten sposób zostały mi 966 obserwacje 3. Parametry modelu wyestymowałem przy uŝyciu procedury corr. PoniŜej przedstawiam wyniki estymacji: Statystyki proste Odch. Zmienna N Średnia standard. Suma Minimum Maksimum dagora 905-0.0005369 0.03325-0.48591-0.15775 0.13689 damica 905-0.0004512 0.03191-0.40838-0.15652 0.20828 dbankbph 905 0.0003810 0.04097 0.34478-0.87070 0.12620 dbre 905 0.00126 0.03026 1.13664-0.10857 0.13624 ddebica 905 0.00121 0.02539 1.09267-0.11708 0.12465 dindykpol 905 0.00294 0.04928 2.66383-0.18750 0.29032 dkghm 905 0.00182 0.03681 1.64935-0.15611 0.12977 dmillennium 905 0.0002465 0.04166 0.22310-0.28190 0.36842 dnetia 905-0.00213 0.06325-1.92931-0.25758 0.92727 doptimus 905-0.00232 0.05315-2.09796-0.31266 0.51929 dorbis 905 0.0005710 0.03058 0.51677-0.14894 0.13699 dprokom 905-0.0000180 0.03654-0.01625-0.20000 0.13580 dtpsa 905-0.0001615 0.03118-0.14612-0.10000 0.15517 Macierz kowariancji, DF = 904 dagora damica dbankbph dbre ddebica dagora 0.0011052505 0.0002905767 0.0003270425 0.0003844563 0.0002079005 damica 0.0002905767 0.0010183297 0.0001470567 0.0002274807 0.0001798099 dbankbph 0.0003270425 0.0001470567 0.0016783697 0.0003558668 0.0001258880 dbre 0.0003844563 0.0002274807 0.0003558668 0.0009158425 0.0001899679 ddebica 0.0002079005 0.0001798099 0.0001258880 0.0001899679 0.0006448326 dindykpol 0.0001307771 0.0001088854 0.0000564972 0.0000708868 0.0001019322 dkghm 0.0004719006 0.0003087241 0.0003323571 0.0004223252 0.0002560298 dmillennium 0.0004675398 0.0003068996 0.0004596147 0.0003857965 0.0002144523 dnetia 0.0005786830 0.0003572622 0.0004388835 0.0003897419 0.0002043291 doptimus 0.0005774834 0.0003579109 0.0002803957 0.0004350836 0.0002182687 dindykpol dkghm dmillennium dnetia doptimus dagora 0.0001307771 0.0004719006 0.0004675398 0.0005786830 0.0005774834 damica 0.0001088854 0.0003087241 0.0003068996 0.0003572622 0.0003579109 dbankbph 0.0000564972 0.0003323571 0.0004596147 0.0004388835 0.0002803957 dbre 0.0000708868 0.0004223252 0.0003857965 0.0003897419 0.0004350836 ddebica 0.0001019322 0.0002560298 0.0002144523 0.0002043291 0.0002182687 dindykpol 0.0024289292 0.0000677377 0.0000966947 -.0000301736 0.0002404856 dkghm 0.0000677377 0.0013550557 0.0004944790 0.0006516538 0.0005658286 dmillennium 0.0000966947 0.0004944790 0.0017354854 0.0006453853 0.0005947847 dnetia -.0000301736 0.0006516538 0.0006453853 0.0040002334 0.0007779307 doptimus 0.0002404856 0.0005658286 0.0005947847 0.0007779307 0.0028248040 dorbis dprokom dtpsa dagora 0.0003508373 0.0005839787 0.0004837453 damica 0.0002602807 0.0003000899 0.0002716232 dbankbph 0.0002781689 0.0003123561 0.0003166373 dbre 0.0002995270 0.0004193406 0.0003588560 ddebica 0.0001916495 0.0002306664 0.0002093987 dindykpol 0.0000804535 0.0000746778 0.0000935469 dkghm 0.0004155370 0.0006040888 0.0005741886 dmillennium 0.0003663178 0.0005325917 0.0004455864 dnetia 0.0004315921 0.0007488407 0.0005813683 doptimus 0.0003354731 0.0007287571 0.0005019414 Uwaga 1: Niektóre oszacowane na podstawie danych historycznych stopy zwrotu są ujemne. NaleŜałoby się zastanowić czy w ogóle moŝna je brać pod uwagę? Podobnie moŝna się zastanowić czy nie istnieje jakaś stopa wolna od ryzyka, od której zysk portfela powinien być 3 poniewaŝ dane nie były pełne, liczba ta zmalała do 905 3
większy? Postanowiłem jednak nie ustalać Ŝadnej takiej granicy i dopuścić wszystkie portfele uznając Ŝe dodanie do kaŝdej średniej stałej nie zmieni kształtu zbioru a pozwoli na uniknięcie tego typu problemu. KROK 3: Znajdowanie granicy 1) Tworzę macierze wyniki, wyniki2 i wyniki22. Ich budowa jest następująca: Kolumny 1-13 będą wskazywać udział poszczególnych akcji w portfelu Kolumna 14 to oczekiwana stopa zwrotu w portfelu Kolumna 15 to zaokrąglona wartość kolumny 14. Macierze wyniki2 oraz wyniki22 miały tam wszelkie dostępne poziomy zmiennej wartość oczekiwana po zaokrągleniu Kolumna 16 to wariancja portfela. Początkowo wartość ta dla macierzy wyniki2 jest bardzo duŝa, a dla wyniki22 bardzo mała. Kolumna 17 to numer, który przyda się do identyfikacji po złączeniu macierzy Kolumna 18 miała charakter jedynie orientacyjny. Pokazywała ile razy dana wartość zmiennej została osiągnięta 4. Macierz wyniki ma tyle wierszy ile ma być losowań (domyślnie 5 000). Macierze wyniki2 oraz wyniki 22 mają tyle wierszy ile moŝliwych jest dopuszczalnych poziomów zmiennej wartość oczekiwana. Uwaga 2: Oglądając program polecam zmienianie jedynie liczby losowań. Myślę, Ŝe wartością graniczną jest 50 000, później niewiele się zyskuje mimo dłuŝszej pracy programu. Myślę, Ŝe minimalna liczba to 2000. Uwaga 3: Raczej nie powinno się zmieniać poziomu zaokrąglenia. Zaokrąglenie jest dobrane odpowiednio do tego problemu, a jego zmiana moŝe spowodować zbyt duŝą niedokładność spowodowaną w przypadku zwiększenia jej poziomu lub zbyt małą liczbę losowaną na dany poziom w przypadku jej zmniejszenia. 2) Losowanie Losuję pewien portfel. Obliczam dla niego wartość oczekiwaną, oszacowaną wartość oczekiwaną oraz wariancję. Następnie sprawdzam, czy taki portfel jest lepszy od dotychczasowego portfela uznanego za najlepszego dla danego poziomu oszacowanej wartości oczekiwanej. Jeśli tak to podmieniam ten najlepszy portfel nowym. Procedurę powtarzamy odpowiednią liczbę razy. Uwaga 4: Sposób losowania portfela jest niezwykle waŝny. Przykładowo początkowo wybierałem następujący sposób losowania: Dla kaŝdej akcji losuję liczbę z przedziału jednostajnego [0,1] Dzielę tą liczbę przez sumę liczb. W ten sposób udziały sumują się do 1 i są z przedziału [0,1] Sposób ten jest zły, gdyŝ wylosowane portfele są bardzo,,skupione. CięŜko o to by w jakimś portfelu jakaś akcja miała udział np. 90%, gdyŝ: 4 w przypadku macierzy wyniki wartości te nie mają Ŝadnego znaczenia, a kolumna jest tylko po to by późniejsze łączenie macierz przebiegało sprawniej. 4
Pr(X 1 > 0.9 Σ n i=1 X i ) = Pr(X 1 > 9 Σ n i=2 X i ) ~ podmieniając Σ 13 i=2 X i rozkładem normalnym N(12*0.5,12*1/12) otrzymuję ~ Pr(U(0,1) > 9*N(6,1 2 )) = Pr(U(0,1) > N(54, 9 2 )) < < Pr(1 > N(54, 9 2 )) a to jest praktycznie 5 0, co wynika np. z reguły trzech sigm. W rezultacie jedynie niewielki przedział stopy zwrotu był uwzględniany (nawet przy duŝej ilości losowanych portfeli). Dlatego przyjąłem nieco inny sposób losowania: Wykonaj losową permutację zbioru (1,...13) z równymi prawdopodobieństwami. W ten sposób Ŝadna akcja nie będzie,,uprzywilejowana. 12 razy: Weź daną akcję i wylosuj dla niej liczbę z przedziału [0,h], gdzie h to pozostałe udziały po uwzględnieniu udziałów wszystkich juŝ wcześniej ustalonych akcji Dla 13 akcji ustal wartość taką, by łączne udziały sumowały się do 1. W ten sposób dostałem zdecydowanie bardziej porozrzucane portfele po całym zbiorze dopuszczalnym, co pomogło w lepszym znajdowaniu granicy minimalnej i maksymalnej. 3) Pozbywanie się niektórych wartości Okazało się, Ŝe nie zawsze dla kaŝdego poziomu oszacowanej wartości oczekiwanej mam odpowiedni poziom granicy minimalnej lub maksymalnej. Muszę się więc pozbyć niektórych poziomów dopuszczalnych wartości oczekiwanej. Na to ile się ich pozbędę ma wpływ: dobór zaokrąglenia sposób losowania ilość losowań MoŜna powiedzieć, Ŝe ilość usuwanych poziomów świadczy o jakości programu. Dlatego teŝ moŝna uznać, Ŝe program z drugim sposobem losowania był lepszy od tego z pierwszym sposobem losowania 4) Podział granicy minimalnej Z granicy minimalnej musiałem wybrać zbiór efektywny. Zrobiłem to w następujący sposób: wybrałem minimalną wariancję na granicy minimalnej i uznałem Ŝe jest to punkt, powyŝej którego na granicy minimalnej znajduje się zbiór efektywny. Zachowanie takie jest uzasadnione, gdyŝ granica efektywna jest zbiorem wypukłym. Uwaga 5: Ten punkt ma swoją interpretację. MoŜe on zostać uznany jako punkt optymalny. 5 liczba rzędu 10-9 5
3. Wyniki Scalam tabele wyniki, wyniki2 oraz wyniki22 i robię rysunki. Odpowiednie punkty z granicy minimalnej (maksymalnej) łączę liniami prostymi. Biorąc 5 000 losowań otrzymuję rysunek 1. Warto zauwaŝyć, Ŝe granica minimalna jest wyznaczona w znacznie lepszy sposób niŝ granica maksymalna 6. Związane jest z nieregularnością granicy maksymalnej. O ile granica minimalna jest zbiorem wypukłym, o tyle granica maksymalna moŝe się składać nawet z 8178 7,,dzióbków a zatem jej wyznaczenie jest znacznie trudniejsze. Rysunek 1: Zbiór efektywny dla n=5 000 Rysunek 2 pokazuje sposób wyznaczania granic minimalnej i maksymalnej. Widzimy, Ŝe dla konkretnych poziomów stóp zwrotu wybieramy 2 skrajne portfele. Jeden będzie naleŝał do granicy minimalnej, a drugi do granicy maksymalnej. Na koniec tworzę rysunek dla 50 000 losowań. Granica minimalna jest juŝ bardzo dobrze wyznaczona. Widać, Ŝe jest to zbiór wypukły. Dalsze zwiększanie liczby losowań nie przynosi juŝ jakościowo lepszych rezultatów. 6 patrz teŝ rysunek 3 7 2 n - n 1 dla n=13 6
Rysunek 2: Wykres po zaokrągleniu stóp zwrotu Rysunek 3: Zbiór efektywny dla n=50 000 7