SIECI NEURONOWE

advertisement
SIECI NEURONOWE
WYKORZYSTANIE DO PROGNOZOWANIA WIG
Dr Kamila Migdał Najman
Dr Krzysztof Najman
Katedra Statystyku
Wydział Zarządzania
Uniwersytet Gdański
[email protected]
[email protected]
SOPOT styczeń – grudzień 2000
Ostatnia dekada XX wieku cechuje się niezwykle dynamicznym rozwojem nauki nad sztuczną
inteligencją obejmującą swoją tematyką sieci neuronowe, systemy rozmyte i algorytmy genetyczne.
Jest to wynikiem szybkiego rozwoju technologii w dziedzinie komputerów osobistych oraz
komputerów o wielkiej mocy obliczeniowej, co umożliwia naukowcom symulowanie i testowanie
nowych idei w sposób nie możliwy przed rokiem 1980. Źródłem inspiracji sztucznych sieci
neuronowych jest biologia układów nerwowych. Wszystkie żywe istoty posiadają mózgi złożone z
komórek zwanych neuronami. Szacuje się, że mózg ludzki może składać się nawet ze 100 miliardów
neuronów. Mózg człowieka ma przewagę nad komputerem w wielu zadaniach. Jest odporny na
uszkodzenia. Mimo, że codziennie obumiera wiele komórek nerwowych nie ma to znacznego wpływu
na pojemność i funkcjonowanie mózgu. Jest elastyczny. Może się z łatwością przystosować do
zmiennego otoczenia przez „uczenie się”. Potrafi sobie radzić z informacją rozmytą, losową,
zaszumioną lub niespójną. Jest w wysokim stopniu równoległy. Jest mały, zwarty i zużywa bardzo
mało energii. Komputer przewyższa mózg tylko w zadaniach opartych na prostych operacjach
arytmetycznych. Czasami mówi się, że komputer to bardzo szybki „idiota”, który znajduje rozwiązania
zadanych problemów jedynie dzięki błyskawicznej analizie tysięcy prawdopodobnych przypadków.
Sieci neuronowe wyrosły z badań prowadzonych nad sztuczną inteligencją. Próbują one naśladować
wysoką tolerancję na uszkodzenia i zdolność samouczenia biologicznego systemu neuronowego. W
wielu przypadkach stały się one podstawą zastosowania w nietypowych ( z biologicznego punktu
widzenia ) dziedzinach jak finanse, inżynieria, geologia czy fizyka. Faktycznie, gdziekolwiek pojawia
się problem predykcji, klasyfikacji lub kontroli, sieci neuronowe są brane pod uwagę jako
alternatywne do innych metod analitycznych. Często osiąga się znakomite rezultaty. Ten sukces może
być przypisany pewnym kluczowym czynnikom jak : odporność i zdolność uczenia. Sieci neuronowe
są skomplikowaną techniką modelowania, zdolną do modelowania niezmiernie złożonych systemów.
Można je traktować jako nowoczesne systemy obliczeniowe, które przetwarzają informacje wzorując
się na zjawiskach zachodzących w mózgu człowieka. Informacje jednak mają tu charakter danych
numerycznych. Sieć neuronowa działa na matematycznych zbiorach danych (wektorach, macierzach),
które przybierają postać określonych porcji informacji. W odróżnieniu od mózgu, gdzie dane
wejściowe są odbierane za pośrednictwem pięciu zmysłów, sztuczne sieci neuronowe odbierają dane
wejściowe za pomocą liczb. W wielu zastosowaniach sztucznych sieci neuronowych operują one
jedynie zerami i jedynkami, które oznaczają, że dana zmienna jest obecna lub nie. W praktyce,
sztuczna sieć neuronowa ( SN ) to program komputerowy, który naśladuje zdolność ludzkiego mózgu
do klasyfikacji, rozpoznawania wzorców, analizy i kompresji obrazów, sporządzania prognoz lub
podejmowania decyzji na bazie przeszłych doświadczeń. SN to bardzo uproszczony model mózgu
składający się z dużej liczby elementów przetwarzających informację. Elementy nazywane są
neuronami, chociaż w stosunku do rzeczywistych komórek nerwowych ich funkcje są bardzo
uproszczone. Topologia połączeń oraz ich parametry stanowią program działania sieci, zaś sygnały
pojawiające się na jej wyjściach w odpowiedzi na określone sygnały wejściowe są rozwiązaniami
stawianych jej zadań.
Rozmaitość SN badanych obecnie jest ogromna. Poszczególne neurony można modelować jako
proste sumatory ważone, złożone układy równań różniczkowych lub dowolne modele pośrednie.
Połączenia między neuronami mogą być zorganizowane w warstwy tak, aby informacje przepływały
tylko w jednym kierunku, albo tak, aby mogły krążyć po całej sieci w sposób cykliczny. Wszystkie
neurony mogą zmieniać stan jednocześnie albo też można wprowadzić opóźnienia. Wszystkie
odpowiedzi mogą być ściśle deterministyczne albo dopuszcza się zachowanie przypadkowe. Warianty
można mnożyć...
SN bywają na ogół lepsze od innych metod analitycznych przy spełnieniu następujących warunków:
1. Dane, z których trzeba wyciągną wnioski są „rozmyte”. Jeżeli danymi wejściowymi są ludzkie
opinie, źle określone kategorie lub dane są obarczone dość dużymi błędami, to odporne
zachowanie sieci neuronowych jest ich ważną zaletą.
2. Jedną z głównych zalet sieci neuronowej jest jej zdolność do odkrywanie w zbiorze danych
wzorców, które są tak niejasne, że są niewykrywalne przez zmysły badaczy i przez tradycyjne
metody statystyczne. Np. przewidywanie wypłacalności pożyczkobiorców na podstawie historii
ich wydatków i wpływów. Wykazano, że SN lepiej „podejmują decyzje” niż doświadczony
personel.
3. Dane wykazują znaczną, nieoczekiwaną nieliniowość. SN mają bardzo duże zdolności
adaptacyjne.
4. Dane są chaotyczne. Chaos można wykryć w wahaniach cen na giełdzie. Takie zachowanie nie
daje szans większości innych metod, ale SN są na ogół odporne na sygnały wejściowe tego
rodzaju.
SN nie ma sensu stosować gdy są znane dokładne, klasyczne (deterministyczne) rozwiązania badanych
problemów. Wówczas włożony w budowę sieci trud się nie opłaci. Uzyskamy bowiem, co najwyżej,
identyczne rezultaty jak w metodach klasycznych. Wiele SN odznacza się zarówno mocnymi
podstawami teoretycznymi, jak i użytecznością w praktyce. Wadą SN jest to, że w porównaniu z
ludzkim mózgiem, który składa się z miliardów neuronów, sieć ma ich zaledwie kilkaset. Sieć
mechanicznie rozwiązuje tylko zadane problemy, i to tylko jedno zadanie w danym czasie. Można,
więc raczej mówić o specjalizacji SN. Tak więc buduje się różne sieci dla różnych zastosowań.
Dziedziny finansów, w których na szeroką skalę stosuje się sieci neuronowe, to:
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
Oszustwa związane z kartami kredytowymi
Prognozowanie bankructw
Analiza wniosków o udzielenie pożyczki hipotecznej
Marketing produktu
Klasyfikacji obligacji przedsiębiorstw
Prognozowanie zachowania rynku akcji
Prognozowanie upadłości banków
Selekcja akcji
Wycena nieruchomości
Wycena arbitrażowa
Analiza kondycji finansowej przedsiębiorstw
Wycena opcji
Wybór strategii sprzedaży
Prognozowanie sprzedaży
Podejmowanie decyzji na szczeblu menedżerskim
Analiza kondycji biur turystycznych
Prognozowanie wskaźników ekonomicznych
Przewidywanie przepływów gotówkowych
Lokalizowanie podmiotów uchylających się od płacenia podatków
Wybór funduszu powierniczego
Dodatkowym atutem SN jest wygoda ich programowania poprzez uczenie. Zamiast projektować
algorytm wymaganego przetwarzania informacji i dzielić go na moduły nadające się do współbieżnego
wykonywania - stawia się sieci przykładowe zadania i automatycznie, zgodnie z założoną strategią
uczenia modyfikuje się połączenia elementów sieci ich współczynniki wagowe. W ten sposób sieć
programuje się sama, co czasem prowadzi do rozwiązań w bardzo krótkim czasie, a innym razem
może wymagać tysięcy iteracji Zawsze jednak przebiega w sposób samoczynny, a więc nie
absorbujący dla człowieka poszukującego określonych rozwiązań.1 Większość współcześnie
budowanych sieci neuronowych ma budowę warstwową, przy czym ze względu na dostępność w
trakcie procesu uczenia wyróżnia się warstwy: wejściową, wyjściową oraz tak zwane warstwy ukryte.2
1
2
Ryszard Tadeusiewicz, Sieci neuronowe, Akademicka Oficyna Wydawnicza, Warszawa 1993, s. 19
tamże, s. 12-13
Rys.1
Na rys.1 przedstawiono przykładową strukturę sieci neuronowej budowaną dla potrzeb prognozowania
WIG’u na podstawie przeszłych notowań. 80% wszystkich zastosowań sieci neuronowych dotyczy
tzw. sieci wielowarstwowych, które charakteryzują się brakiem sprzężeń zwrotnych. Przesyłają one
sygnały od warstwy wejściowej, poprzez warstwy ukryte (jeśli występują), do warstwy wyjściowej.
Składają się one z trzech bądź większej liczby warstw neuronów. Pierwsza warstwa, określana
mianem warstwy wejściowej, zawiera tyle neuronów, ile jest zmiennych wejściowych. Te wejścia są
zazwyczaj nazywane neuronami wejściowymi, które dają sygnały wejściowe. Warstwa ta otrzymuje
dane z zewnątrz sieci. Każdy neuron z warstwy wejściowej łączy się ze wszystkimi neuronami z
obszaru ukrytego. Obszar ukryty składa się niekiedy z więcej niż jednej warstwy; każdy neuron z
pierwszej warstwy ukrytej powiązany jest wówczas ze wszystkimi neuronami warstwy drugiej. Jeżeli
obszar ukryty składa się więcej niż dwóch warstw, neurony z drugiej warstwy łączą się ze wszystkimi
neuronami z warstwy trzeciej. Najkrócej można powiedzieć, że warstwy te stanowią narzędzie, służące
do takiego przetwarzania sygnałów wejściowych, by warstwa wyjściowa mogła łatwiej znaleźć
potrzebną odpowiedź. Działanie neuronów warstw pośrednich nie jest bezpośrednio widoczne dla
użytkownika sieci – w tym sensie można mówić, że są one ukryte. Neurony warstwy ukrytej pełnią
rolę pośredników. Pośredniczą między wejściem i wyjściem oraz wypracowują zestawy wstępnie
przetworzonych danych wejściowych, z których korzystać będą neurony dalszych warstw przy
określeniu końcowego wyniku. Ostatnia warstwa wchodząca w skład obszaru ukrytego połączona jest
z warstwą wyjściową. Istnieje także jeden lub więcej neuronów wyjściowych. Dzięki nim
otrzymujemy wynik działania sieci. Każdy neuron wyjściowy przyjmuje sygnały wejściowe,
przetwarza je i wytwarza sygnał wyjściowy. Sygnały te stanowią rozwiązania stawianych sieci zadań.
Jak to się dzieje, że sieć zdobywa i gromadzi wiedzę? To siła powiązań między różnymi neuronami
sprawia, że na pozór identyczne sieci różnią się od siebie. Siłę powiązań między dwoma neuronami
określa się mianem wagi. Mocne powiązanie ma większą wagę niż słabe. Ważne zmienne wejściowe
otrzymują duże wartości wag. Wyrażają stopień ważności informacji docierających wejściem. Gdy
waga jest większa od 1 to sygnał wchodzący określonym wejściem jest wzmocniony, gdy waga ma
wartość mniejszą od 1 to sygnał jest stłumiony bądź też można mówić o wejściu hamującym, gdy
waga ma wartość ujemną. Neurony są powiązane w sieć za pomocą połączeń ( wag ) modyfikowanych
w trakcie uczenia. Każdy neuron ma wiele wejść, za pomocą których odbiera sygnały od innych
neuronów oraz sygnały wejściowe podawane do sieci jako dane do obliczeń. Cała sztuka polega na
tym aby tak dobrać wagi, aby wszystkie neurony wykonywały dokładnie takie czynności, jakich się od
nich wymaga. W sieci jest jednak tyle neuronów, że nie jesteśmy w stanie dla wszystkich wejść
zdefiniować potrzebnych wag. Możemy jednak rozpocząć działanie sieci z przypadkowym zestawem
wag i stopniowo polepszać te wagi. Neuron sam potrafi określić, które ze swoich wag ma zmienić, w
którą stronę i o ile. Proces zmiany wag przebiega w każdym neuronie sieci w sposób spontaniczny i
niezależny. Proces uczenia może być powadzony równocześnie we wszystkich neuronach sieci.
Pewne elementy w sieci neuronowej są zdeterminowane. Między innymi liczba elementów
wejściowych i wyjściowych oraz zasada połączeń między kolejnymi warstwami. Są jednak elementy
zmienne, które trzeba określić samemu: liczbę warstw ukrytych (jedna czy kilka) oraz liczbę
elementów warstwie (warstwach) ukrytych. Elementy te ustala się zwykle arbitralnie. Nie można
jednak zaprojektować sieci o zbyt małej liczbie elementów. Jeżeli występuje za mało neuronów,
proces uczenia może się definitywnie nie udać, gdyż sieć nie ma szans odwzorować w swojej
strukturze wszystkich niuansów rozwiązywanego zadania. Nie można także "przedobrzyć"
Zastosowanie zbyt wielu warstw ukrytych prowadzi do znacznego pogorszenia sprawności procesu
uczenia, dlatego często lepsze wyniki dale sieć o mniejszej liczbie warstw ukrytych niż sieć z większą
liczbą warstw ukrytych. Również ustalenie nadmiernej liczby neuronów w warstwie ukrytej prowadzi
do niekorzystnego efektu nazywanego "uczeniem się na pamięć". Sieć w ten sposób zamiast
uogólniania nabywanych wiadomości dokonuje zapamiętania reguł.
Cykl działania sieci neuronowej podzielić można na etap nauki, kiedy sieć gromadzi
informacje potrzebne jej do określenia, co i jak ma robić, oraz na etap normalnego działania,
nazywany czasem egzaminem, kiedy w oparciu o zdobytą wiedzę sieć musi rozwiązywać konkretne
nowe zadania.
Sieć neuronowa uczy się na dwa sposoby. Najczęstsze jest uczenie pod nadzorem. Polega na
tym, że sieci podaje się przykłady poprawnego działania, które powinna ona potem naśladować w
swoim bieżącym działaniu. Zbieramy wiele próbek, które odgrywają rolę przykładów. Każda próbka
zbioru uczącego całkowicie określa wszystkie wejścia, jak również wyjścia wymagane przy
prezentacji tych danych wejściowych. Następnie wybieramy podzbiór zbioru uczącego po kolei i
podajemy próbki z tego podzbioru na wejście sieci. Dla każdej próbki porównujemy aktualny sygnał
wejściowy sieci z sygnałem wyjściowym, który chcielibyśmy otrzymać. Po przetworzeniu całego
podzbioru próbek uczących korygujemy wagi łączące neurony w sieci w celu zmniejszenia miary
błędu działania sieci. Jedna prezentacja podzbioru próbek uczących wraz z odpowiednią korekcją wag
jest nazywana EPOKĄ. Liczba próbek podzbioru jest nazywana rozmiarem epoki. Epoki uczenia
powtarzamy aż do osiągnięcia zadawalającej jakości przetwarzania sieci. Inną podstawową metodą
uczenia jest uczenie bez nadzoru. Proces uczenia sieci polega na wykryciu istotnych cech zbioru
uczącego i wykorzystaniu ich do grupowania sygnałów wejściowych na klasy, które sieć potrafi
rozróżniać. Sieć potrafi wykorzystać same obserwacje wejściowe i zbudować na ich podstawie
algorytm działania, automatycznie wykrywający klasy powtarzających się sygnałów wejściowych i
rozpoznawać te typowe wzorce sygnałów. Proces sprawdzania użyteczności sieci nazywamy
weryfikacją. Proces taki polega na rozdzieleniu zbioru znanych przypadków na dwa zbiory rozłączne.
Jeden to zbiór uczący, wykorzystywany do uczenia sieci. Drugi to zbiór testowy, używany do
egzaminowania sieci po zakończeniu uczenia.
Uczenie i stosowanie sieci wymaga postępowania według etapów:
1. Określenie prognozowanej zmiennej.
2. Gromadzenie zbiorów danych lub szeregów czasowych związanych z prognozowanym
zjawiskiem,
3. Wstępne przetwarzanie danych tak, aby łączyły informacje lub przedstawiały je w bardziej
użyteczny sposób ( skalowanie, normalizacja, standaryzacja, zmniejszanie wymiarowości
problemu).
4. Wyodrębnienie uczącego i testowego zbioru danych, czyli danych do jej uczenia i do
przyszłego testowania.
5. Wybór odpowiedniej architektury sieci. Ustalenie liczby warstw, liczby neuronów w
warstwach ukrytych.
6. Wybór odpowiedniego algorytmu uczenia (treningowego) i ustalenie jego parametrów.
7. Uczenie sieci.
8. Weryfikacja jakości nauczonej sieci.
9. Zastosowanie sieci. Do nauczonej sieci wczytujemy nowe zbiory danych lub dane bieżące w
celu otrzymania prognozy czy dokonania klasyfikacji.3
Jeżeli przestrzegamy powyższych zasad i mamy trochę szczęścia uda nam się zbudować poprawnie
działającą sieć.
BADANIA EMPIRYCZNE
Badania empiryczne zastosowań sieci neuronowych na rynkach kapitałowych są prowadzone
od bardzo dawna. Zwykle budując model do celów prognostycznych możemy zastosować dwa
podejścia. Pierwsze to podejście autoregresyjne. Oznacza to, że badany proces będziemy modelowali
jedynie na podstawie jego własnych opóźnień. A więc prognozujemy WIG jedynie na podstawie
przeszłych notowań WIG’u. Drugie podejście to wprowadzenie do modelowania dodatkowych
zmiennych objaśniających np. wartości wskaźników technicznych. W dalszej części rozpatrzymy oba
przypadki.
PROGNOZOWANIE KIERUNKU ZMIAN WIG
Dobrym wstępem do badań nad możliwościami zastosowania SN na WGPW jest próba
prognozowania kierunku zmian WIG'u. Jest to z pewnością informacja wielce pożądana. Spróbujmy
więc zbudować prognozę kierunku zmian na następną sesję. Danymi wejściowymi będą notowania
WIG z poprzednich sesji. Liczba notowań, które trzeba uwzględnić jest osobnym problemem i
powinna być optymalizowana. Dane należy przegotować tak aby były one dogodne dla wybranego
typu sieci. W przeciwieństwie do Gateley’a uważamy, że nie należy stosować wartości –1 i 1 czy 0 i 1
dla oznaczania wzrostu i spadku w sieciach warstwowych uczonych algorytmem propagacji wstecznej.
Funkcje aktywacji: logistyczna czy tangens hiperboliczny nie mogą bowiem osiągnąć takich skrajnych
wartości. Skutkuje to zwykle tym, że sieć nie nauczy się badanego problemu. Dla problemu
klasyfikacyjnego, za jaki można uznać tego typu prognozę, proponujemy wykorzystać sieć
probabilistyczną. Dane przygotowujemy więc następująco: sesja wzrostowa: klasa 1, sesja spadkowa:
klasa 2. Sesji o identycznych kolejnych wartościach WIG można nie uwzględnić. W całej historii
WGPW było ich nieistotnie mało. Analizie poddajemy 1000 próbek począwszy od 3514 sesji.
Ponieważ nie wiadomo z góry ile opóźnień uwzględnić w próbce uczącej znajdziemy ją
doświadczalnie. Rozpoczniemy od uwzględnienia jedynie notować „wczorajszych” a zakończymy
biorąc pod uwagę 200 poprzednich sesji. Prognozujemy zmiany kierunku WIG dla kolejnych 20 sesji.
SN na wyjściu poda nam czy „jej zdaniem” następna sesja będzie wzrostowa czy spadkowa. Nie
3
Na podstawie: Ed Gately, Sieci neuronowe. Prognozowanie finansowe i projektowanie systemów transakcyjnych,
Warszawa1999, WIG – Press, s. 9-11
4
Pomijamy 350 pierwszych sesji „szalonej hossy”.
powinno się ustalać poziomów braku wyraźnego sygnału. Jest to bowiem trzeci wariant odpowiedzi,
którego sieć się nie uczyła. Takie poziomy są zresztą zawsze subiektywne5 i bardzo ryzykowne.
Rys.2 ( 180 minut pracy komputera6)
Widać, że najlepsze prognozy popełniały 25% błędów. Takie wyniki uzyskiwały sieci o 100,
108 i 172 uwzględnionych opóźnieniach WIG’u. Zdając się na ślepy los mielibyśmy 50% szans na
wskazanie prawidłowego kierunku zmian. SN pozwoliła nam zyskać dodatkowe 25%. Tu ważna
uwaga. Pamiętać należy, że sieć uczy się na przykładach. Jeżeli obserwujemy istotne zmiany
jakościowe w kształtowaniu się prognozowanego szeregu w stosunku do przeszłości to nie
wymagajmy od SN aby potrafiła je trafnie klasyfikować. W sytuacji takiej należy sieć wytrenować na
nowym – poszerzonym zbiorze danych. W praktyce warto to zrobić raz na miesiąc ( czyli po ok. 20
sesjach ). Nie ma więc sensu badanie zdolności SN w dłuższym horyzoncie czasowym – daleko
wybiegającym poza okres uwzględniony w zbiorze danych uczących. Jest to jedna z przyczyn dla
której gotowe oprogramowanie budujące strategie inwestycyjne na bazie SN najpierw sprawdza się
później nie, następnie znowu działa dobrze itd. ...
Bardzo przydatna dla inwestora może być informacja o spodziewanym kierunku zmian na
rynku w najbliższym tygodniu. Spróbujemy więc zrobić prognozę na najbliższy tydzień. Jest to miara
bardzo ogólna wyrażająca jedynie „skłonności” rynku. Poszukiwania optymalnej sieci rozpoczniemy
od przygotowania danych. W tym konkretnie celu możliwe są dwa podejścia. Po pierwsze możemy
robić prognozy średniej wartości WIG na następny tydzień lub na następne 5 sesji. Różnica jest
5
6
Więcej szczegółów: T.Masters, ‘Sieci neuronowe w praktyce”, WNT W-wa 1996, rozdział 10.
Wszystkie testy były wykonywane na następującym zestawie komputerowym:
ATHLON 650, 265 Mb RAM, MatLab 5.3.1 + Neural Network Toolbox 3.0.1.
istotna. W pierwszym przypadku wyznaczamy średnie wartości WIG dla każdego tygodnia. W drugim
przypadku wyznaczamy średnie 5-cio sesyjne. Należy zwrócić uwagę, że posługując się średnimi
możemy znacznie skrócić liczbę dostępnych próbek uczących i testowych. Gdybyśmy szacowali
średnie tygodniowe to próbek będzie tyle co tygodni a więc liczba danych zmniejszy się pięciokrotnie
! Przy średnich 5-cio sesyjnych strata będzie równa 4 sesje a więc nieistotnie mało. My skupimy się tu
na tym pierwszym podejściu. Postaramy się zrobić prognozy średniego poziomu WIG’u na kolejny
tydzień. Optymalizację przeprowadzamy podobnie jak poprzednio. Ze względu na znacznie mniejszy
zbiór danych uczącym maksymalnie udało się uwzględnić 120 opóźnień. Próba ucząca liczyła 200
tygodni. Prognozy były szacowane na kolejnych 10 tygodni.
RYS. 3 ( 120 minut pracy komputera )
Na rysunku 3 widzimy procent błędów jaki popełniały budowane sieci przy prognozach kierunku
zmian przeciętnego tygodniowego poziomu WIG’u. Udało się zbudować kilkanaście sieci
popełniających jedynie 10% błędów. Jedna sieć o 14 opóźnieniach nie popełniła ani jednego błędu na
przestrzeni 10 tygodni ! Analogicznie jak poprzednio należy co ok. 10 tygodni wytrenować sieć
ponownie.
PROGNOZOWANIE WARTOŚCI WIG
Drugim, obok prognoz kierunku zmian, jest problem prognozowania wartości badanego
waloru. Jest to uzupełnienie powyższych analiz o wskaźnik skali zmian. Staramy się nie tylko ustalić
kierunek zmian ale i ich wielkość. Jest to zadanie dużo trudniejsze ze względu na wymaganą wysoką
precyzję. Przeciętne zmiany WIG w badanym okresie wynosiły średnio 190 punktów z sesji na sesję (
co do wartości bezwzględnej ). Rozproszenie tych zmian wyniosło 287 punktów. Gdyby wyrazić te
wartości w procentach byłoby to odpowiednio : 1.28% i 2.01 %. Aby prognozy miały istotną wartość
to błędy w dłuższych okresach powinny być mniejsze niż 1% z mniejszym niż 2% rozproszeniem ! Jak
widać już z tego powodu jest to zadanie bardzo trudne.
Analizy poprowadzimy w następujący sposób. Budujemy sieć (RYS.1) w oparciu o wartości
WIG z poprzednich sesji. Optymalna liczba uwzględnionych opóźnień będzie wyznaczona
eksperymentalnie. Będziemy jej poszukiwać uwzględniając kolejno od 1 do 50-ciu opóźnień. Tym
razem zastosujemy sieć jednokierunkową, bez sprzężeń zwrotnych z jedną warstwą ukrytą. Jako
algorytm uczący zastosujemy propagację wsteczną w szybko zbieżnej wersji Lavenberga –
Marquardta. Ponieważ WIG przyjmuje jedynie wartości dodatnie, dane przeskalujemu do przedziału
(0,1) Ponieważ wszystkie wartości są dodatnie wybierzemy funkcję aktywacji logistyczną. Liczbę
neuronów ustalamy na pierwiastek kwadratowy z liczby danych wejściowych. Liczbę tą możemy
zwiększyć gdyby nie udało się uzyskać zadowalających wyników. Krok uczenia ustalamy na 0.02,
maksymalny czas uczenia pojedynczej sieci na 15 minut, maksymalną liczbę epok na 507. Sieć
uczymy na 1000 próbek. Prognozy wykonujemy na 50 kolejnych sesji. Każdą próbę uczenia i prognoz
powtarzamy 10 razy. Jest to niezbędne, ponieważ sieć rozpoczyna naukę od losowych wartości wag.
Jedne kombinacje będą ”szczęśliwsze” inne mniej. Kolejne rysunki wyjaśnią to dokładnie.
RYS. 4 ( 50 minut pracy komputera)
7
Liczba ta wydaje się śmiesznie niska. Jednak w każdym z prezentowanych eksperymentów była ona wystarczająca do
osiągnięcia zakładanej dokładności lub najwyższej zdolności do generalizacji sieci.
Rysunek 4 ukazuje zależności między liczbę danych wejściowych a MAPE8. Niebieskie słupki
prezentują strukturę statystyczną prognoz uzyskiwanych dla 10 sieci zbudowanych przy identycznych
parametrach. Zaznaczone są ( licząc od dołu ) minimum, kwartyl pierwszy, mediana, kwartyl trzeci i
maksimum uzyskanych błędów. Słupek niski oznacza, że w 10 próbach uzyskiwano podobne
prognozy. Słupek wysoki oznacza, że wyniki te różniły się znacznie. Ponieważ wiele z nich wskazuje
na istotną asymetrię prognoz dodatkowo linią czerwoną oznaczono mediany prognoz. Minimalny błąd
równy 0.81% uzyskano dla 26 opóźnień. Wynik jest istotnie lepszy niż założone minimum 1.28%.
Należy tu zauważyć, że prognozy dla 26 opóźnień są bardzo zróżnicowane ( wysoki słupek ) a
mediana jest „nisko”. Oznacza to, że zdarzały się nieliczne prognozy znacznie gorsze.
Sieci z jedną warstwą ukrytą są dość szybkie, jednak mogą być stosunkowo mało czułe. Aby
zwiększyć czułość sieci, czyli jej zdolność do uchwycenia delikatnych zmian, można zwiększyć liczbę
warstw ukrytych. Niekorzystną konsekwencją takiego zabiegu jest gwałtowne zwiększenie czasu
uczenia sieci i jej wymagania co do ilości pamięci w komputerze. Sieć może się zacząć uczyć „szumu”
a więc losowych i nieistotnych zmian w danych uczących. Sprawdźmy więc czy dodanie drugiej
warstwy ukrytej nie pozwoli zbudować lepszych prognoz. Wszystkie parametry uczenia sieci
pozostają bez zmian. Dodajemy drugą warstwę ukrytą z liczbą neuronów równa liczbie w pierwszej
warstwie ukrytej.
Rys. 5 Nowa sieć.
8
MAPE (Mean Absolute Prediction Error). Średni, absolutny ( tu procentowy) błąd prognozy.
Rys.6 ( 142 minuty pracy komputara )
Jak widzimy na wykresie 6 nie udało się uzyskać istotnego polepszenia prognoz. Minimalny błąd
0.79% uzyskano dla 37 opóźnień. Również i tym razem rozproszenie prognoz jest tu spore. Czas
analizy zwiększył się jednak trzykrotnie.
PROGNOZY WIG’U NA PODSTAWIE WSKAŹNIKÓW TECHNICZNYCH
Nawet podstawowe badania byłyby niepełne gdybyśmy nie spróbowali przetestować użyteczności
danych technicznych w prognozowaniu wartości WIG. Podstawową trudnością jest dobór wskaźników
i ich parametrów. Uznaliśmy, że w prezentowanych badaniach zastosujemy jedynie najpopularniejsze
wskaźniki z klasycznymi parametrami podawanymi przez Murphy’ege w jego „Analizie
Technicznej”9. Zbiór wskaźników jest następujący :
1. wstęga Bollingera ( 9, 2, -2 )
2. CCI ( 20, 10, 100, -100 )
3. MACD ( 12, 26, 9 )
4. momentum ( 10 )
5. średnie kroczące ( 4, 8, 9, 12, 18, 24 ) okresowe
6. Ważone średnia krocząca ( 9 )
7. przesunięta średnia krocząca ( 9, 5 )
8. wykładnicza średnia krocząca ( 9 )
9. OBV
10. ROC ( 10 )
11. RSI ( 14, 20 , 80 )
12. Ultimate Osc. ( 7, 14, 28 )
13. Volume Osc. ( 14, 34 )
Z szeregów wyeliminowano stałe ( np. wartości progów RSI 20 i 80, które stanowią dwa szeregi o
powtarzających się wartościach odpowiednio 20 i 80 ). W ten sposób pozostało 20 zmiennych
objaśniających. Dodatkowo wprowadzono opóźnienia o 2 i 3 okresy wszystkich szeregów. W sumie
poddano analizie 60 zmiennych. Analizie poddano sesje od 400 do 1650. Zbiór danych podzielono na
3 części. Sesje 402, 406, 410, 414 ... potraktowano jako zbiór testowy ( 25% obserwacji ). Sesje 404,
408, 412, 416 ... potraktowano jako zbiór próbek korygujących uczenie sieci ( 25% obserwacji ).
Pozostałe sesje posłużyły jako zbiór uczący ( 50% obserwacji ). Zbudowano sieć o jednej warstwie
ukrytej gdzie na wejściu było 60 neuronów wejściowych. Liczbę neuronów warstwy ukrytej
optymalizowano w przedziale (1, 50). Sieć o bieżącej liczbie neuronów uczono dziesięciokrotnie. Na
wyjściu jest jeden neuron. Wszystkie dane przeskalowano na przedział (0, 1). Jako funkcje aktywacji
zastosowano funkcję logistyczną. Krok uczenia ustalono na 0.02. Proces uczenia był przerywany jeżeli
:
1. przekroczony został limit 50 epok ( nie zdarzyło się to ani razu )
2. przekroczony został czas 10 minut uczenia sieci ( nie zdarzyło się to ani razu )
3. został osiągnięty maksymalny dopuszczalny błąd sieci ustalony na poziomie 0.0001.
4. po kolejnych 5 epokach mimo dalszego uczenia sieci nie uzyskiwano poprawy generalizacji
sieci ( jakości prognoz ).
Przy tak dużej sieci gwałtownie wzrosły wymagania co do mocy i pamięci komputera. Pełna analiza
zajęła 51 minut. Jednak maksymalny czas jaki mogła ona zająć wynosił 50*10*10/60 = 83.33
godziny10. Należy pamiętać, że tak krótki czas uczenia pojedynczej sieci można ustalić na komputerze
wyposażonym w ogromną ilość pamięci. Przy zastosowaniu 64MB, gdy większość operacji jest
buforowanych na dysku czas ten należy wydłużyć przynajmniej czterokrotnie. W przeciwnym
wypadku SN nie będzie maiła szans na nauczenie się czegokolwiek. Wyniki uzyskane przez najlepszą
uzyskaną sieć są jednak gorsze niż poprzednio ( rys.7 ). Zwiększanie liczby neuronów nie dawało
żadnej systematycznej poprawy. Sieć o 27 neuronach uzyskała błąd na poziomie 1.4%. Jak widać był
to raczej „dobry traf”. Średnia z 10 prób jest tu jedną z najgorszych ze wszystkich uzyskanych. Mimo
to zgodność przebiegów WIG’u i jego prognoz była bardzo dobra. Na rysunku 8 widzimy WIG i
uzyskane tu prognozy. Prognozowana jest co czwarta sesja od 401 począwszy.
9
J.J.Murphy, „Analiza Techniczna”, WIG-PRES, Wa-wa 1995.
Opóźnienia od 1 do 50, każde testowane 10 razy, każdy test maksimum 10 minut.
10
RYS.7
RYS.8
( Wartość na osi X równa 50 oznacza sesję o numerze 401+50*4 = 601)
Widzimy tu typowy fragment prognoz. Wiele z nich jest niemal idealnych ( punkty 27,
34,40,47,49,50). Jednak znajdują się także serie prognoz zupełnie nie udanych ( 28-35 ).
Rys. 9
Na rysunku 9 widzimy rozkład procentowych błędów prognoz dla najlepszej uzyskanej w
optymalizacji sieci. Widać, że zdecydowana większość błędów zawiera się w przedziale ( –1.5 , 1.5 )
procenta. Jest poniżej 10% błędów przewyższających ± 3%. Linia czerwona pokazuje jak powinny
kształtować się liczebności błędów gdyby miały one rozkład Gaussa. Wyniki próby poprawienia
wyników przez dodanie drugiej warstwy ukrytej przedstawione są na rysunku 10. W drugiej warstwie
ukrytej zastosowano tą samą liczbę neuronów co w warstwie pierwszej.
RYS.10 ( 1772 minuty pracy komputera )
Jak widzimy nie udało się uzyskać żadnej poprawy. Minimalny błąd wyniósł 1.43% przy 9 neuronach.
Gwałtowny wzrost błędów powyżej 36 neuronów jest spowodowany brakiem pamięci komputera.
Gdy sieć zajęła całą dostępną pamięć czas uczenia pojedynczej epoki wzrasta wielokrotnie. Z
łatwością przekracza całkowity czas uczenia sieci. W związku z tym sieć nie uczy się „prawie nic” i
takie też generuje prognozy. Dane te nie mogą być interpretowane. Podsumowując możemy
powiedzieć, że sieć oparta na wskaźnikach technicznych11 nie dała znaczącej poprawy w
prognozowaniu WIG’u w stosunku do sieci uwzględniającej jedynie własne opóźnienia WIG.
11
W tym ujęciu. Można oczywiście użyć innych wskaźników. Można także użyć tych samych ale ze zoptymalizowanymi
parametrami. Można zwiększyć liczbę opóźnień uwzględnionych w analizie. Nie jest to w żadnym razie dyskwalifikacja
AT.
SYSTEM INWESTYCYJNY
Zestawy prognoz krótko i średnio terminowych prezentowane powyżej pozwalają zbudować wiele
mechanicznych systemów inwestycyjnych. Najprostszym rozwiązaniem byłoby potraktowanie tych
prognoz jako oscylatorów. Prognozy krótkoterminowe jako oscylator wolny a średnioterminowe jako
szybki. Ta nie intuicyjna kolejność spowodowana jest tym ,że przeciwnie niż przy innych wskaźnikach
oba te oscylatory są równie wrażliwe. Prognoza na 5 sesji naprzód będzie zawsze „szybsza” niż na
jedną sesję. Tak więc, jeżeli linia prognoz średnioterminowych przetnie z dołu krótkoterminową o
zadaną liczbę punktów będzie to sygnał kupna. Jeżeli przecięcie nastąpi z góry będzie to sygnał
sprzedaży. Aby wykluczyć przypadkowe słabe sygnały należy ustalić wartość progową kiedy sygnał
uważamy za ważny. Wysokość progu jest sprawą indywidualną i będzie ustalana arbitralnie. Dla
przykładu inwestując w WIG na przestrzeni roku począwszy od sesji 1301 ustalając wartości prognoz
optymalnymi sieciami uzyskanymi w powyższej analizie, przyjmując wartość progową mocy sygnału
na 150 punktów uzyskano następujące sygnały :
Tab.1
PROCENT
NR
ZYSKU
TRANSAKCJI NR SESJI NR SESJI PROCENT
KUPNA SPRZEDARZY ZYSKU SKUMULOWANY
1
1323
1336
-2.22
-2.22
2
1342
1345
0.94
-1.28
3
1349
1357
3.19
1.91
4
-14.05
1358
1375
-12.14
5
1377
1380
1.63
-10.51
6
1389
1391
1.22
-9.30
7
1400
1401
-0.09
-9.38
8
1410
1411
-2.89
-12.27
9
1413
1416
1.54
-10.73
10
1418
1421
2.61
-8.13
11
1428
1458
4.11
-4.02
12
1461
1463
-3.96
-7.98
13
18.45
1470
1480
10.48
14
1481
1487
-1.87
8.61
15
1494
1508
-3.35
5.26
16
1509
1511
-0.06
5.20
17
1513
1521
3.75
8.96
18
1525
1541
5.36
14.31
19
11.50
1542
1586
25.82
20
1587
1600
4.94
30.75
21
1617
1625
-1.44
29.32
22
1627
1630
2.45
31.77
23
32.57
1636
1645
0.80
W analizowanym okresie przy powyższych założeniach uzyskaliśmy 23 sygnały. Można było uzyskać
32.57% zysku. Zdecydowana większość transakcji dawała małe zyski a czasem straty. Trzy transakcje
były wysokie w tym dwie „udane”. Wyliczenia powyższe nie uwzględniają prowizji maklerskich.
Kilka „małych udanych” transakcji w rzeczywistości byłoby „nieudanych”. Rzeczywista efektywność
brutto byłaby oczywiście nieco niższa niż 30%. Ocena tego wyniku to już indywidualna sprawa
każdego inwestora. Niewątpliwie jest to znacznie lepszy wynik niż obligacje państwowe czy lokaty
bankowe. Z pewnością da się jednak znaleźć efektywniejsze strategie.
WNIOSKI
Przedstawiliśmy wyniki prostych badań nad zdolnościami sieci neuronowych w prognozowaniu
indeksu WIG. Dostarczają one dość obiecujących informacji. Udało się zbudować prognozy kierunku
zmian WIG’u o ponad 80% skuteczności w krótkim i średnim horyzoncie. Prognozy wartości indeksu
również są zadowalające. Oczywiście należy sobie zdawać sprawę, że pokazane tu ujęcie jest tylko
jednym z bardzo wielu możliwych. Wyniki te nie są ostateczne a mają jedynie zachęcić do
samodzielnych badań. Istnieje wiele innych typów sieci, które należało by przetestować. Powinno się
optymalizować również inne parametry sieci niż tylko liczbę neuronów w warstwach ukrytych.
Należało by zoptymalizować wartości współczynników technicznych analizowanych w ostatnim
przykładzie, sprawdzić wpływ informacji fundamentalnych na możliwości prognostyczne. Można by
zbudować sieć „rozpoznającą” formacje techniczne – do wspomagania prognoz długoterminowych.
Dróg poprawy prezentowanych wyników jest wiele…
Więcej informacji technicznych i merytorycznych dotyczących powyższego artykułu można znaleźć na stronie internetowej:
http://www.bg.univ.gda.pl/~Najman/sn/sn.htm Zamieszczamy tam także podstawowe informacje o programowaniu w
MATLAB’ie a także kody źródłowe większości analiz prezentowanych w artykule.
Download