slktlshe
Advertisement
PARTNER SERWISU
bkcfsrrp
1 2

Problem pilne model sharpea i pocisk markowitza

heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 16 czerwca 2010 17:43:10
Witam,

Jestem studentem informatyki i jako projekt mam programowo wyznaczyć zbiór optymalnych
portfeli inwestycyjnych korzystając z modelu Sharpe'a. Aplikacja ma pokazywać wyniki
obliczeń na wykresie. Dodatkowo prowadzący chce by wynikowe portfele pasowały do zbioru
efektywnego (granicy efektywnej) pocisku Markowitza. Niestety wykorzystując wzory na beta
(stopien ryzyka) oraz całkowity zwrot krzywa wynikowa wygląda następująco:

kliknij, aby powiększyć

Oczywiście oś X to ryzyko, oś Y to oczekiwany zwrot.
Wybrałem spółki indeksu wig20. okres tutaj akurat 01.01.2010 do 15.01.2010. Przy okresach
nawet 5 miesięcy wykres portfeli wygląda podobnie, oczywiście zmieniają się tylko proporcje
spółek.

Poniżej wykres ryzyko-zwrot wszystkich akcji wziętych pod uwagę przy obliczeniach,
oznaczone
niebieskimi kwadratami. Pomarańczowe romby to spółki wybrane do portfela, wybór został
wskazany przez program komputerowy który powstał w ramach projektu.

kliknij, aby powiększyć

tutaj wygrały CEZ, CPS, PXM, TPS

Problem polega właśnie na tym iż wykres (wykres 1) nie tworzy wypukłej do góry linii która
wyglądałaby jak granica efektywna pocisku Markowitza. zastanawiam się czy jest to kwestia
różnicy we wzorach wykorzystywanych w modelu markowitza i sharpe'a czy może jest to mój
błąd
wynikający z niezrozumienia zagadnienia.

Wykorzystane wzory:
wyznaczanie zwrotu i-tej akcji w okresie t0-tn gdzie t to cena i-tej akcji w danym dniu
okresu : Ri=(tn-t0)/tn * 100%,
średni zwrot to suma wszystkich zwrotów cząstkowych Rimid= i=1..n: (ti-t0)/ti *100
wyznaczanie ryzyka i-tej akcji w okresie t0-tn gdzie t to cena i-tej akcji w danym dniu
okresu:
beta wyznaczana zgodnie z wzorami znalezionymi w artykułach w sieci.
ryzyko portfela to suma betai*wagai gdzie betai i to beta i-tej akcji, wagai to udział
i-tej
spółki w całym portfelu.

Będę bardzo wdzięczny za:
1. Wyjaśnienie gdzie leży problem, ewentualnie zadanie dodatkowych pytań o szczegóły
wzorów/spółek itp.
2. Podanie kontaktu do kogoś kto się na tym zna i pomoże studentowi:)

Z góry dzięki,
Przemek Bech
Edytowany: 16 czerwca 2010 18:18

WatchDog
50
Grupa: Zespół StockWatch.pl
Dołączył: 2008-07-25
Wpisów: 8 588
Wysłane: 16 czerwca 2010 18:21:45
Patrzyłeś na ten tekst?
www.stockwatch.pl/artykuly/pos...
Tam populacja zwrot vs. ryzyko układa się dużo bardziej elegancko.

Trzeba przeorać Twój materiał od gruntu. Najpierw zagadnienie, dobór próby, potem dane wejściowe, wzory i na końcu prezentacja.

Ile masz czasu na to?

heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 16 czerwca 2010 20:19:06
idealnie byłoby jakos tak do jutra:D ale ogólnie im szybciej tym lepiej. tzn mecze sie z tym od ponad miesiaca. aplikacje mam mniej wiecej napisana bez interfejsu uzytkownika ale wyniki mi nie daja spokoju.

Przeczytam zaraz link który mi dałeś.

Czy chcesz bym sformatował do ładnych obrazków wszystkie użyte wzory wraz z opisem skad biore do nich dane i kiedy ich używam. tylko napisz czy jeszcze dzisiaj byś chociaż na chwile na to zerknął.


EDIT: W najgorszym razie byłbym niezmiernie wdzięczny gdybyś podał jeszcze jakieś materiały które jak dziecku tłumaczą jeśli nie wszystkie to ewentualnie część zagadnień z praktycznego wykorzystania modelu Sharpe'a i pocisku Markowitza.
Edytowany: 16 czerwca 2010 20:25


mathu
0
Dołączył: 2009-09-21
Wpisów: 4 615
Wysłane: 16 czerwca 2010 20:46:48
Przepraszam czy to nie jest czasem projekt z AE u L.S.? :)
The recovery in profitability has been amazing following the reorganization, leaving Barings to conclude that it was not actually terribly difficult to make money in the securities market.

heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 16 czerwca 2010 20:50:37
nie:) to projekt z heurystycznych metod optymalizacji na informatyce agh... proporcje spolek w portfelu wyznaczam algorytmem genetycznym. ale problem mam we wzorach bo algorytm dzialal poprawnie dla pewnych standardowych problemow

WatchDog
50
Grupa: Zespół StockWatch.pl
Dołączył: 2008-07-25
Wpisów: 8 588
Wysłane: 16 czerwca 2010 20:55:30
Ech studenci. Ostatniego dnia wieczorem. Po miesiącu prób binky

Nie rzucę się na to teraz, bo czytam Maflow i jestem w połowie, a uwierz mi, że Markowitz z Sharpem to kaszka z mlekiem w porównaniu do zapiekanego grochu z kapustą, który upichcili Włosi.

Najlepiej zapomnij te nazwiska, magię wzorów i probowanie na pałę "żeby wyszło".
Weźmy na przykład pocisk. Koncepcja jest raczej prosta.
Markowitz zauważył, że w ułożeniu wykresu jest pewna prawidłowość. Obróć wykres ze szpiczastym cyckiem o 90 stopni w prawo, a zobaczysz powiedzmy kopiec kreta. Na poziomej linii masz oczekiwaną stopę zwrotu. Dlaczego oczekiwaną? Bo bazuje na wartościach historycznych. Kopiec składa się z drobin ziemi, a białe to powietrze. Każda drobina to inny portfel złożony z akcji dostępnych w Twoim teoretycznym zbiorze. Czyli każdy z nich ma jakąś oczekiwaną stopę zwrotu, w zależności od tego, z czego się składa.
A teraz oś pionowa. Jest na niej ryzyko mierzone odchyleniem standardowym stopy zwrotu w każdym z tych portfeli. Ważne jest żeby zrozumieć, czym jest grudka ziemi w kopcu kreta: składa się z ziaren piasku (akcji). Każde ziarno charakteryzuje się jakimś historycznym zwrotem (zyskiem albo stratą). Gdy sklejasz kilka w grudkę, ona ma sumaryczny zwrot wynikający ze zwrotu każdego ziarenka (średnia ważona) oraz odchylenie standardowe tychże zwrotów. Im wyżej się znajduje, tym niższe jest ryzyko. Wynika z tego, że najmniejsze ryzyko, wyznaczające też oczekiwaną stopę zwrotu, jest na samym szczycie.
Możesz zajrzeć np. tutaj, chociaż to jest pisane straszliwym językiem.
http://math.uwb.edu.pl/~elam/tp_w5.pdf
Wolę angielskojęzyczną literaturę, jest lżej strawna.

Wnioski? Dwa. Po pierwsze tak budować portfele, żeby być na granicy cycka (czyli Efficient frontier). Przy tym samym oczekiwanym zwrocie minimalizujemy ryzyko. Ewentualnie, przy określonym poziomie ryzyka, wybieramy portfel leżący na linii. Ale nie ten po lewej stronie (czy też u dołu, zależnie jak leży wykres), tylko ten drugi. Bo maksymalizujemy zysk.

Czytasz swobodnie po angielsku? Sorry ale nasi naukowcy straszliwie smęcą i plączą proste rzeczy
en.wikipedia.org/wiki/Modern_p...
Edytowany: 16 czerwca 2010 20:57

WatchDog
50
Grupa: Zespół StockWatch.pl
Dołączył: 2008-07-25
Wpisów: 8 588
Wysłane: 16 czerwca 2010 21:02:21
O Sharpe pisałem w tekście, którego link Ci podałem. To akurat ultraproste, wystarczy sobie wyobrazić o co chodzi.
W sieci są tony materiałów na ten temat. Pierwszy z brzegu przejrzysty
www.finanse.ae.katowice.pl/tzi...

mathu
0
Dołączył: 2009-09-21
Wpisów: 4 615
Wysłane: 16 czerwca 2010 21:10:49
No właśnie Leszek S. dawał m.in. dokładnie taki projekt na algorytmach ewolucyjnych :)

Nie wiem czy dobrze rozumiem o co ci chodzi (nie wnikałem w ekonomiczną część teorii), ale czy twój problem polega na tym że front Pareto w wyniku jest źle skierowany? Powinien mieć, że tak powiem, zamienione X z Y?

Jeżeli masz program optymalizujący za pomocą algorytmu genetycznego, to musisz mieć skopane porównywanie osobników, a nie błąd we wzorach wyliczających zwrot i ryzyko. Front nie ma prawa układać się w coś takiego jeśli prawidłowo porównujesz oba kryteria i jest to niezależne od wzorów. Jaki masz warunek dominacji?

Bo twój wykres wygląda ewidentnie jakbyś minimalizował zwrot przy maksymalizacji ryzyka, a nie odwrotnie. Sprawdź kierunek < i > :)
The recovery in profitability has been amazing following the reorganization, leaving Barings to conclude that it was not actually terribly difficult to make money in the securities market.
Edytowany: 16 czerwca 2010 21:15

heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 16 czerwca 2010 21:31:56
hehe widze ze w calym internecie gdzie zostawilem taki sam post chyba na 50 forach na tym jednym znalazly sie dwie osoby ktore wiedza o czym mowia:D

front pareto to podejrzewam powinien być granicą efektywna pocisku markowitza.

Maksymalizuję zwrot minimalizując ryzyko. Tylko że jako ryzyko przyjąłem bete gdyż gdzieś przeczytałem iż beta to ryzyko danej akcji. wiec ryzyko portfela beta[i]*genotype[i] gdzie genotype to tablica wartości 0<=x<=1 reprezentujących udział danej spółki w portfelu.

skoro wykres jest w druga strone to tak jabym zle liczył zwrot nie???

WatchDog... jakie są możliwe wzory na stopę zwrotu? bo ja liczyłem tak że albo dawałem średnią zawierającą ti-t0 albo całkowitą tn-t0, 0-n to ilość dni w całym okresie. czyli liczyłem stope zwrotu albo z różnic wartość w danym dniu minius wartość z początku okresu albo wartośćkońcowa minus wartość pcozątkowa. a widze że czasami pojawia się takie coś jak podzielenie okresu na podokresy kilkudniowe i z nich wyliczanie zwrotów cząstkowych z których liczy się średnią.


PS. fakt Leszek S. dal mi takie zadanie:D nie wiedziałem ze LS tez działa na AE. Masz może namiary na kogos ktos takie zadanie zrobił??? i ma gdzieś jeszcze? nei chca sciagnac bo mam swoja implementacje elemasa ale wzory i funkcje dominacji by sie przydało porównać;D

mathu
0
Dołączył: 2009-09-21
Wpisów: 4 615
Wysłane: 16 czerwca 2010 21:50:00
AE = Algorytmy Ewolucyjne

Najwyraźniej zmienili wam nazwę przedmiotu.

Jeszcze raz powtarzam że moim zdaniem to nie jest kwestia wzorów tylko kryterium optymalizacyjnego. Front Pareto jest zwykle wypukły w kierunkach w których optymalizujesz. U ciebie wygląda to tak, jakby osobnik z wiekszą betą i mniejszym zwrotem z portfela dominował tego z mniejszą betą i większym zwrotem. Po prostu sprawdź warunek optymalizacji.

BTW robicie to na NEVOL-u?
The recovery in profitability has been amazing following the reorganization, leaving Barings to conclude that it was not actually terribly difficult to make money in the securities market.


heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 16 czerwca 2010 21:52:58
elEmas sie algorytm nazywa.

mathu
0
Dołączył: 2009-09-21
Wpisów: 4 615
Wysłane: 16 czerwca 2010 21:56:21
Weź ten program którym to liczysz i spróbuj odwrócić mu warunki optymalizacyjne. Po prostu zobacz co wyjdzie.

Jeszcze taki hint (jak już znajdziesz błąd): Leszek woli TeX-a od wykresów w Excelu.
The recovery in profitability has been amazing following the reorganization, leaving Barings to conclude that it was not actually terribly difficult to make money in the securities market.
Edytowany: 16 czerwca 2010 21:57

WatchDog
50
Grupa: Zespół StockWatch.pl
Dołączył: 2008-07-25
Wpisów: 8 588
Wysłane: 16 czerwca 2010 21:56:26
Stopa zwrotu jest w procentach. Przyjmij stały okres dla wszystkich spółek.
Nie wiem jak to dokładnie kodujecie, a sam naukowcem nie jestem. Możesz też wziąć średnią stóp zwrotu z jakiegoś okresu. Każda pojedyncza to po prostu
[ ( Kurs na końcu okresu ) / ( Kurs na początku okresu ) ] - 1 wyrażona w procentach

Betę policz z długiego okresu, albo przepisz z SW. Mogę Ci wygenerować plik excela. Ale więcej się nauczysz, jak sam ją zrobisz. Tutaj wzorek też trudny nie jest, o ile w statystyce się orientujesz.
beta = [ kowariancja (zwrot z akcji vs zwrot z benchmarku ] / [ wariancja ( zwrot z benchmarku ) ]
Potrzebujesz też stopy zwrotu, np. dzienne przez 2 lata albo miesięczne przez 5 lat (to jest standard). Zakładam, że masz ściągnięte kursy i tylko układasz do tego formuły albo piszesz kawałek kodu. Ja to umiem na Excelu na piechotę zrobić, programować takich rzeczy mi się nie chce.

PS Zapewniam że jest tu jeszcze parę osób mocno zanurzonych w temat i łączących teorię z praktyką. Polecam np. wątek Zarządzanie ryzykiem portfelowym, gdzie testujemy prostą teorię na GPW. Bo wierz, wytłumacz koncepcję pocisku komuś, kto ma od 2 lat pipki MCI albo drży czy się uda NE Dudy. Przemawiają tylko konkretne ceny: kupiłem za tyle, sprzedałem za tyle, wynik jasny i zrozumiały.

EDIT: ale po co Ci beta do pocisku? Wystarczy stdev z każdego portfela. Oszczędzisz sobie kolejnego miejsca, gdzie można popełnić błąd.
Edytowany: 16 czerwca 2010 22:01

heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 16 czerwca 2010 22:03:08
public boolean dominates(Agent another) {
if( ( (this.result.getList().get(0) >= another.result.getList().get(0)) && (this.result.getList().get(1) < another.result.getList().get(1)) )
|| ( (this.result.getList().get(0) > another.result.getList().get(0)) && (this.result.getList().get(1) <= another.result.getList().get(1)) )){
return true;
}
return false;
}

result.getList().get(0) wskazuje na całkowity zwrot, .get(1) daje totalRisk. wiec chyba dobrze. pokombinuje z wszystkim co powiedzieliście... czeka mnei dłuuuga noc:D jak znajde przyczyne błędu to sie pochwale.

WatchDog
50
Grupa: Zespół StockWatch.pl
Dołączył: 2008-07-25
Wpisów: 8 588
Wysłane: 16 czerwca 2010 22:07:35
napisz priva do użytkownika karoldvl
on kombinuje takie oraz bardziej zaawansowane rzeczy.
gdybyś miał więcej czasu, można by to wspólnie porządnie opracować.
bo wiesz, pracę oddasz, zapomnisz, a tu przecież giełda codziennie się kręci i po to się uczysz, żeby na niej móc zarobić. a nie żeby wpis dostać w śmiesznej książeczce z tekturową okładką.

mathu
0
Dołączył: 2009-09-21
Wpisów: 4 615
Wysłane: 16 czerwca 2010 22:10:30
Czy jesteś absolutnie pewny że 0 to zwrot a 1 to ryzyko?

Co dostajesz jak odwrócisz te warunki?
The recovery in profitability has been amazing following the reorganization, leaving Barings to conclude that it was not actually terribly difficult to make money in the securities market.

heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 16 czerwca 2010 22:11:45
Kumpel siedział w akcjach... był bawet w jakimś kółku wzajemnej adoracji i miał cynki. Stwierdził że to wciąga jak narkotyk, żeby wyjść na swoje trzeba siedzieć nad tym codziennie i czasami stres jest nieziemski... troche jak mmo:D

A Ty jak uważasz? warto w to wchodzić? Z samej analizy technicznej da sie wyciągnąć zysk?

EDIT:
List<Double> result=new ArrayList<Double>();
result.add(totalReturn);
result.add(totalRisk);
Edytowany: 16 czerwca 2010 22:13

mathu
0
Dołączył: 2009-09-21
Wpisów: 4 615
Wysłane: 16 czerwca 2010 22:13:40
Najpierw skończ projekt a potem możemy pogadać :)

Sprawdziłeś zamianę 0 i 1 albo < i >? W ten sposób zobaczysz jak wygląda przestrzeń rozwiązań w innych kierunkach i może coś zauważysz.
The recovery in profitability has been amazing following the reorganization, leaving Barings to conclude that it was not actually terribly difficult to make money in the securities market.
Edytowany: 16 czerwca 2010 22:14

heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 17 czerwca 2010 00:14:02

kliknij, aby powiększyć

udalo mi sie takie cos otrzymac... przypomina juz gorna czesc pocisku. jest takie ostre załamanie i potem linia prosta. powoduje to fak iz wiekszosc portfeli ktore program wypluwa składa sie z 1-2 rodzajów akcji i przez ich różne proporcje w portfelu skaluje sie po lini prostej.

mysle nad nałożeniem jakiegoś ograniczenia które nie pozwalałoby danej akcji przekroczyć progu 30-40% w portfelu.. moze przez to dojdzie do wiekszej dywersyfikacji.

heath
0
Dołączył: 2010-06-16
Wpisów: 9
Wysłane: 17 czerwca 2010 01:48:00
skonczyło się na:

kliknij, aby powiększyć

Wydaje mi się że efekt jest zadowalający. Osiągnąłem go trochę zmieniając wzór na stope zwrotu i ukladając pewne obliczenia w bardziej logiczny sposób... gdzieś po drodze naprawiłem błąd ale nie mam teraz pojęcia gdzie on był.

Bardzo Wam obojgu dziękuję za pomoc!

Użytkownicy przeglądający ten wątek Gość


1 2

Na silniku Yet Another Forum.net wer. 1.9.1.8 (NET v2.0) - 2008-03-29
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.
Czas generowania strony: 0,359 sek.

abujveiu
aasmmxpy
buanaazy
Portfel StockWatch
Data startu Różnica Wartość
Portfel 4 fazy rynku
01-01-2017 +76 436,51 zł +382,18% 96 436,51 zł
Portfel Dywidendowy
03-04-2020 +60 637,62 zł 254,44% 125 556,00 zł
Portfel ETF
01-12-2023 +4 212,35 zł 20,98% 24 333,09 zł
rrevjpok
idpuivfv
cookie-monstah

Serwis wykorzystuje ciasteczka w celu ułatwienia korzystania i realizacji niektórych funkcjonalności takich jak automatyczne logowanie powracającego użytkownika czy odbieranie statystycznych o oglądalności. Użytkownik może wyłączyć w swojej przeglądarce internetowej opcję przyjmowania ciasteczek, lub dostosować ich ustawienia.

Dostosuj   Ukryj komunikat