Wybór najlepszych strategi gry na giełdzie
Sztuczna inteligencja 2007/08 - raport z projektu
autor: Aleksandra Pochroń
data: 20.06.2008

1. OPIS ZADANIA

Program służy do przewidywania wyników na giełdzie. Służy do wyboru najlepszych reguł przewidujących wyniki giełdowe (wzrosty albo spadki akcji analizowanej spółki).Inwestorzy do tego celu używają analizy fundamentalnej oraz analizy technicznej.


Analiza fundamentalna jest to jedna z podstawowych technik analizy rynku kapitałowego. Zajmuje się ona szacowaniem wartości akcji danej spółki w oparciu o następujące czynniki:
Analiza techniczna jest to zbiór technik mających na celu prognozę przyszłych cen (kursów) papierów wartościowych, walut czy surowców na podstawie cen historycznych.

Analiza techniczna opiera się na 3 podstawowych założeniach:

W systemach komputerowych wspomagających decyzje inwestorów używana jest analiza techniczna.

2. OPIS ZASTOSOWANEJ METODY ROZWIĄZANIA PROBLEMU

Do rozwiązania problemu użyłam programowania genetycznego i analizy technicznej.

Każdy osobnik populacji reprezentuje jakąś strategię przewidywania wzrostów oraz spadków cen akcji.Każdy członek populacji reprezentowany był przez drzewo. Osobniki były ze sobą krzyżowane oraz mutowane.


Przykładowy osobnik:
przykładowy osobnik
average(k)- średnia cena akcji z k - ostatnich sesji od ostatniego znanego dnia notowania
price(i) - cena akcji w i - tej sesji

Powyższy osobnik reprezentuje pewną strategie przewidywania zmian cen akcji. Aby mógł on przewidzieć cenę w x-tym dniu musi znać dane z poprzednich dni. Jeśli average(k) > value(i) to powyższy osobnik dla x-tego dnia przewidzi wzrost cen. W przeciwnym wypadku przewidzi spadek.


Przykład krzyżowania dwóch osobników:
przykład krzyżowania

Mutacja osobnika polega na zamianie losowo wybranego węzła z nowym wygenerowanym węzłem.

Funkcja przystosowania - Jakość osobników jest oceniana na podstawie funkcji przystosowania. Wartością tej funkcji jest znormalizowana liczba poprawnie przewidzianych zmian dla pewnych danych.



3. OPIS IMPLEMENTACJI

Algorytm został zaimplementowany w Javie.


4. PRZYKŁADY DZIAŁANIA PROGRAMU

Algorytm działa dwuetapowo. W pierwszym etapie formuje się najlepsza populacja dla danych przeznaczonych do nauki. W drugim etapie jest ona używana do przewidywania wyników dla danych testowych.

- Wizualizacja przykładowych danych na których działa algorytm:
przykładowe dane

1. Pierwszy etap działania algorytmu - formuje się w procesie ewolucji najlepsza populacja. Na każdym etapie ewolucji są wybierane do kolejnej populacji osobniki o dobrej funkcji przystosowania.
etap 1
Powyższy wykres przedstawia jak zmienia się przystosowanie populacji wraz z kolejnymi pokoleniami

2. Drugi etap działania algorytmu - populacja końcowa jest testowana na danych, których wcześniej nie znała
etap 2
Powyższy wykres przedstawia jak populacja wytworzona w procesie ewolucji w 100 - nym pokoleniu przewiduje wyniki dla danych testowych.


5. WYNIKI

Poniższe trzy wykresy przedstawiają jakość kolejnych populacji powstałych w czasie trwania ewolucji

Testy opisane poniżej zostały przeprowadzone po to, aby sprawdzić jak podczas procesu ewolucji zmienia się skuteczność przewidywania zmian przez kolejne pokolenia dla nieznanych danych.

Każda z populacji była testowana na 50-ciu zestawach danych przeznaczonych do testów. Każdy z zestawów zawierał dane z 30 sesji. Średnie wyniki dla każdego zestawu testowego i testowanej populacji zostały przedstawione na wykresach.


- Początkowa populacja wygenerowana losowo ma zgodnie z oczekiwaniami średnio ok. 50% skuteczności przewidywania wzrostów oraz spadków:
test 1
Wykres 1 przedstawia przystosowanie populacji początkowej dla kolejnych porcji danych testowych.

- Populacje powstałe w procesie ewolucji maja większa skuteczność przewidywania:
test 2
Wykres 2 przedstawia przystosowanie populacji powstałej w 10 pokoleniu dla kolejnych porcji danych testowych.
test 3
Wykres 3 przedstawia przystosowanie populacji powstałej w 100 pokoleniu dla kolejnych porcji danych testowych.

Jak widać z powyższych wykresów skuteczność przewidywania wzrostów oraz spadków akcji rośnie z pokolenia na pokolenie. Jednak wzrost ten jest dość mały. Populacja wytworzona w 100 - nym pokoleniu niestety nie daje zachwycających wyników, średnio przewiduje ona poprawnie w około 54% przypadków.

6. WNIOSKI

Dla problemu wyboru najlepszych strategi gry na giełdzie rozwiązanie korzystające z programowania genetycznego wydaje się być dość sensownym rozwiązaniem. Algorytm przedstawiony przeze mnie generuje reguły, których zastosowanie daje rozwiązania lepsze niż losowe. Celem projektu był uzyskanie właśnie takich wyników. Dużym minusem tego programu jest to że niektóre osobniki nie przedstawiają czasem żadnej rozsądnej strategii. Dużym plusem jest natomiast to że generowane osobniki mogą reprezentować jakieś wskaźniki analizy technicznej.

Pierwotnie algorytm miał wyglądać trochę inaczej. Osobniki zamiast struktury drzewiastej miały być ciągami zero jedynkowymi, w których ostatni bit prognozowałby spadek bądź wzrost ceny, a pozostałe bity mówiłyby czy w danym dniu nastąpił spadek czy wzrost w stosunku do ceny z zamknięcia poprzedniej sesji. Przykładowo osobnik (0111) reprezentuje regułę: jeżeli w (k-3) dniu cena spadła , w (k-2) oraz (k-1) wzrosła to w k-tym dniu cena wzrośnie. Jednak takie rozwiązanie nie brałoby wogóle pod uwagę wielkości wzrostów oraz spadków cen, co było głównym powodem rezygnacji z jego implementacji.

7. MATERIAŁY ŹRÓDŁOWE