Wyznaczanie symulacyjne granicy minimalnej w portfelu Markowitza

Wyznaczanie symulacyjne granicy minimalnej w portfelu Markowitza Łukasz Kanar UNIWERSYTET WARSZAWSKI WYDZIAŁ NAUK EKONOMICZNYCH WARSZAWA 2008 1. P...
57 downloads 1 Views 120KB Size
Wyznaczanie symulacyjne granicy minimalnej w portfelu Markowitza

Łukasz Kanar

UNIWERSYTET WARSZAWSKI WYDZIAŁ NAUK EKONOMICZNYCH WARSZAWA 2008

1. Portfel Markowitza Dany jest pewien portfel n1 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 maksymalnej2. 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) x1, ..., xn – udziały poszczególnych akcji w portfelu (Σni=1 xi = 1) Przyjmuję dodatkowe załoŜenia: 1) Nie ma krótkiej sprzedaŜy, tzn. xi > 0 dla kaŜdego i = 1, ..., n 2) Aktywa są doskonale podzielne, tzn. xi jest liczbą rzeczywistą 3) Brak dodatkowych kosztów (podatki, koszty transakcji, itp.) Stopa zwrotu całego portfela to (x1 ... xn) µ Wariancja całego portfela to (x1 ... xn) Σ (x1 ... xn)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 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

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 obserwacje3. Parametry modelu wyestymowałem przy uŜyciu procedury corr. PoniŜej przedstawiam wyniki estymacji: Statystyki proste

Zmienna dagora damica dbankbph dbre ddebica dindykpol dkghm dmillennium dnetia doptimus dorbis dprokom dtpsa

N

Średnia

905 905 905 905 905 905 905 905 905 905 905 905 905

-0.0005369 -0.0004512 0.0003810 0.00126 0.00121 0.00294 0.00182 0.0002465 -0.00213 -0.00232 0.0005710 -0.0000180 -0.0001615

Odch. standard. 0.03325 0.03191 0.04097 0.03026 0.02539 0.04928 0.03681 0.04166 0.06325 0.05315 0.03058 0.03654 0.03118

Suma

Minimum

Maksimum

-0.48591 -0.40838 0.34478 1.13664 1.09267 2.66383 1.64935 0.22310 -1.92931 -2.09796 0.51677 -0.01625 -0.14612

-0.15775 -0.15652 -0.87070 -0.10857 -0.11708 -0.18750 -0.15611 -0.28190 -0.25758 -0.31266 -0.14894 -0.20000 -0.10000

0.13689 0.20828 0.12620 0.13624 0.12465 0.29032 0.12977 0.36842 0.92727 0.51929 0.13699 0.13580 0.15517

Macierz kowariancji, DF = 904

dagora damica dbankbph dbre ddebica dindykpol dkghm dmillennium dnetia doptimus

dagora 0.0011052505 0.0002905767 0.0003270425 0.0003844563 0.0002079005 0.0001307771 0.0004719006 0.0004675398 0.0005786830 0.0005774834 dindykpol

dagora damica dbankbph dbre ddebica dindykpol dkghm dmillennium dnetia doptimus

0.0001307771 0.0001088854 0.0000564972 0.0000708868 0.0001019322 0.0024289292 0.0000677377 0.0000966947 -.0000301736 0.0002404856 dorbis

dagora damica dbankbph dbre ddebica dindykpol dkghm dmillennium dnetia doptimus

0.0003508373 0.0002602807 0.0002781689 0.0002995270 0.0001916495 0.0000804535 0.0004155370 0.0003663178 0.0004315921 0.0003354731

damica 0.0002905767 0.0010183297 0.0001470567 0.0002274807 0.0001798099 0.0001088854 0.0003087241 0.0003068996 0.0003572622 0.0003579109 dkghm 0.0004719006 0.0003087241 0.0003323571 0.0004223252 0.0002560298 0.0000677377 0.0013550557 0.0004944790 0.0006516538 0.0005658286 dprokom 0.0005839787 0.0003000899 0.0003123561 0.0004193406 0.0002306664 0.0000746778 0.0006040888 0.0005325917 0.0007488407 0.0007287571

dbankbph 0.0003270425 0.0001470567 0.0016783697 0.0003558668 0.0001258880 0.0000564972 0.0003323571 0.0004596147 0.0004388835 0.0002803957 dmillennium 0.0004675398 0.0003068996 0.0004596147 0.0003857965 0.0002144523 0.0000966947 0.0004944790 0.0017354854 0.0006453853 0.0005947847

dbre 0.0003844563 0.0002274807 0.0003558668 0.0009158425 0.0001899679 0.0000708868 0.0004223252 0.0003857965 0.0003897419 0.0004350836 dnetia 0.0005786830 0.0003572622 0.0004388835 0.0003897419 0.0002043291 -.0000301736 0.0006516538 0.0006453853 0.0040002334 0.0007779307

ddebica 0.0002079005 0.0001798099 0.0001258880 0.0001899679 0.0006448326 0.0001019322 0.0002560298 0.0002144523 0.0002043291 0.0002182687 doptimus 0.0005774834 0.0003579109 0.0002803957 0.0004350836 0.0002182687 0.0002404856 0.0005658286 0.0005947847 0.0007779307 0.0028248040

dtpsa 0.0004837453 0.0002716232 0.0003166373 0.0003588560 0.0002093987 0.0000935469 0.0005741886 0.0004455864 0.0005813683 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ęta4.

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(X1 > 0.9 Σni=1 Xi) = Pr(X1 > 9 Σni=2 Xi) ~ podmieniając Σ13i=2 Xi rozkładem normalnym N(12*0.5,12*1/12) otrzymuję ~ Pr(U(0,1) > 9*N(6,12)) = Pr(U(0,1) > N(54, 92)) < < Pr(1 > N(54, 92)) a to jest praktycznie5 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 maksymalna6. 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 81787 ,,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 7

patrz teŜ rysunek 3 2n - 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

Suggest Documents