Uniwersytet Ekonomiczny we Wrocławiu Wydział
Transkrypt
Uniwersytet Ekonomiczny we Wrocławiu Wydział
Uniwersytet Ekonomiczny we Wrocławiu Wydział Zarządzania, Informatyki i Finansów Krzysztof Drelczuk Wyszukiwanie wzorców kupna-sprzedaży w finansowych szeregach czasowych za pomocą teorii falek i gazów neuronowych Praca magisterska Katedra Teorii Informatyki Promotor: prof. dr hab. Jerzy Korczak Wrocław 2008 2 Wrocław University of Economics, Faculty of Management, Informatics and Finance Krzysztof Drelczuk Discovering buy-sell patterns in financial time series using wavelet theory and neural gas algorithm Master thesis Department of Computer Science Supervisor: prof. dr hab. Jerzy Korczak Wrocław 2008 3 Oświadczam, że pracę niniejszą przygotowałem samodzielnie. Wszystkie dane, istotne myśli i sformułowania pochodzące z literatury (przytoczone dosłownie lub niedosłownie) są opatrzone odpowiednimi odsyłaczami. Praca ta nie była w całości ani w części, która zawierałaby znaczne fragmenty przedstawione w pracy jako oryginalne (wyniki badań empirycznych, obliczenia, spostrzeżenia, oceny, wnioski, propozycje itp.), przez nikogo przedłożona do żadnej oceny i nie była publikowana. Krzysztof Drelczuk 4 PODZIĘKOWANIA Na pierwszych stronach mojej pracy magisterskiej chciałbym bardzo podziękować mojemu promotorowi prof. dr hab. Jerzemu Korczakowi za czas mi poświęcony oraz za bardzo cenne wskazówki, bez których praca ta w takiej formie nigdy by nie powstała. Przede wszystkim jednak jestem wdzięczny za słowa zachęty, wspieranie moich pomysłów oraz za bardzo dużą swobodę pozostawioną mi przy tworzeniu niniejszej pracy. Dziękuję również za wyrozumiałość szczególnie w ostatnim, edycyjnym, etapie tworzenia pracy. Chciałbym również podziękować Katedrze Teorii Informatyki oraz Centrum Inteligentnych Technologii Informacyjnych za udostępnienie mi sali laboratoryjnej, w której mogłem przeprowadzić pierwsze eksperymenty z prototypem systemu. Bez tej pomocy ukończenie badań w terminie byłoby niemożliwe. 5 Podziękowania 4 Wstęp 9 Rozdział 1 Wstępna analiza danych 16 1.1 Strumienie danych 17 1.2 Okna przesuwne 18 1.3. Klasyfikacja obserwacji a priori 19 1.4 Transformacja falkowa 22 1.5 Budowa wektora wejściowego 23 Rozdział 2 Klasteryzacja danych 26 2.1 Klasyfikacja a klasteryzacja danych 26 2.2. Funkcje podobieństwa 28 2.3 Kwantyzacja przestrzeni cech i wieloboki Woronoja 29 2.4 Algorytm gazu neuronowego 31 2.5 Ekstrakcja wiedzy z skwantyzowanej przestrzeni cech 34 Rozdział 3 Prototyp systemu wspomagającego podejmowanie decyzji 36 3.1. Metody podejmowania decyzji finansowych 36 3.2 Idea hybrydowego systemu wspomagającego decyzje 38 3.3 Formalizacja decyzji inwestycyjnej 39 3.4 Budowa systemu wspomagania decyzji. 40 3.5 Wartości początkowe systemu 42 Rozdział 4 Analiza skuteczności sysemu H-Adviser 44 4.1 Metodyka analizy skuteczności 44 4.2 Wybór danych do systemu 46 4.3 Symulacja zastosowania systemu H-adviser 47 4.4 Dyskusja wyników 49 Zakończenie 52 Dodatek A Teoria falek 57 A.1 Przestrzeń funkcyjna L2 (ℜ ) 57 A.2 Definicja falki 58 A.3 Analiza wielorozdzielcza 60 A.4 Falki Daubechies 64 A.5 Dekompozycja sygnału za pomocą falki D4 67 Dodatek B Opis Programu H-Adviser B.1 Ogólna charakterystyka 70 70 6 B.2 Panel wyboru danych i ustawień dla klasteryzacji 71 B.2 Panel klasteryzacji 73 Dodatek C Aneks statystyczny 76 Literatura 81 7 Acknowledgements 4 Introduction 8 Chapter 1 Data preprocessing 15 1.1 Data streams 16 1.2 Sliding windows 17 1.3 A priori classification 18 1.4 Wavelet transform 21 1.5 Construction of input vector 22 Chapter 2 Data clasterization 25 2.1 Comparizion of classification and clasterization 25 2.2 Similarity function 27 2.3 Space quantization and voronoi diagrams 28 2.4 Neural gas algorithm 30 2.5 Knowledge extraction from quantized space 40 Chapter 3 Prototype of adviser system 35 3.1 Stock market trading rules 35 3.2 Hydrid adviser system 37 3.3 Formality of financial decisions 38 3.4 Construction of advising system 39 3.5 Default setting 41 Chapter 4 Quality of stock market decisions 43 4.1 Methods of quality measure 43 4.2 Choice of data for quality expertise 45 4.3 Simulation of use H-Adviser in real-life situation 46 4.4 Summary 48 Conclusions 50 Appendix A Wavelet theory 55 A.1 Function space 55 A.2 Wavelet definition 56 A.3 Multiresolution analysis 58 A.4 Daubechies wavelets 62 A.5 Signal decompoition with D4 wavelet 65 Appendix B H-Adviser manual 68 B.1 General characteristic 68 8 B.2 Data and clustering algorithm parameters 69 B.3 Clustering panel 71 Appendix C Statistical attachment 74 Bibliography 79 9 WSTĘP Klasyfikacja szeregów czasowych przyciąga uwagę coraz większej rzeszy naukowców i praktyków. Szczególnie widoczne jest to przy przetwarzaniu długich szeregów czasowych, jakie występują na przykład w bioinformatyce czy też w sferze finansowej. Klasteryzacja jest jedną z najczęściej używanych technik pozyskiwania informacji z dużej ilości danych, o których charakterze ze względu na bardzo dużą wielowymiarowość mamy nie wielkie pojęcie. Podstawowym celem klasteryzacji jest transformacja danych źródłowych do postaci bardziej kompaktowej, która jest w stanie w pełni je odzwierciedlić. Polega na podziale zbioru danych na odpowiednie klasy abstrakcji, czyli mniejsze podgrupy, gdzie elementy danego klastra są podobne do siebie a mocno odmienne od innych. Rozwój technologii informatycznej w ostatnich latach spowodował duży postęp w wykorzystywaniu narzędzi sztucznej inteligencji w metodach pozyskiwania wiedzy z dużych wielowymiarowych struktur danych. Tematem niniejszej pracy jest klasteryzacja szeregów czasowych za pomocą algorytmu gazu neuronowego – specyficznej sieci neuronowej, zaliczanej do narzędzi sztucznej inteligencji. 10 Klasteryzacja jest dobrze ugruntowaną i opisaną w literaturze tematu metodą analizy struktury populacji, dziale statystyki. Wykładniczy przyrost informacji w czasie, z jakim mamy aktualnie dotyczenia spowodował, iż algorytmy klasteryzacji nabrały jeszcze większego znaczenia. Są one podstawowymi metodami pozyskiwania wiedzy (ang. knowledge discovery) [Fayyad 1996], pozyskiwania danych (ang. data mining) i inteligentnej analizie danych [Liu 2000]. Klasteryzacja jest metodą bardzo często wykorzystywaną w najróżniejszych dziedzinach badań, według [Backer 2000] zastosowanie można podzielić na cztery grupy: 1. Formułowanie hipotez na podstawie pewnych danych źródłowych. Bada zachowanie klastrów na różnych poziomach dokładności (dzieli przestrzeń na coraz mniejsze przestrzenie). Na podstawie obserwacji, w jakich sytuacjach klastry dzielą się na mniejsze lub scalają się możemy stawiać hipotezy, w jaki sposób źródło (na przykład rynek) generuje dane. 2. Tworzenie topologii danych. Zastosowaniem może być na przykład obserwacja zachowania konsumentów. Dzieląc je na reprezentatywne grupy możemy ulepszyć skuteczność działań marketingowych. 3. Prognozowanie danych. Problem predykcji może zostać sprowadzony do identyfikacji wzorców, po których występują stałe zachowania. 4. Optymalizacja procesów. Odpowiednia identyfikacja grup zapytań może zoptymalizować dostęp do danych. Istnieje pięć paradygmatów klasteryzacji. Pierwszy z nich hierarchiczny produkuje drzewiasty opis struktury. Drzewo jest konstruowane rekurencyjnie scalając klastry niższego poziomu (bardzo szczegółowe) w klastry wyższego poziomu (bardziej ogólne). Drzewo jest zakończone jednym głównym klastrem (ang. super-cluster) zawierającym wszystkie elementy populacji. [Bajcsy 1998], [ElSonbaty 1998]. 11 Drugi paradygmat grafowy prezentuje obiekty jako graf ważony. Jest on bardzo pomocny w analizowaniu struktur dwu-wymiarowych. Waga pomiędzy jednym węzłem a drugim jest odległością pomiędzy obiektami zgodnie z ustaloną metryką [Brito 1997], [Pacheco 1998], [Shapiro 1995]. Kolejnym paradygmatem są modele mieszanin (ang. mixtere models). Klastry są generowane za pomocą kombinacji rozkładów prawdopodobieństw [McLachlan 1998], [Fraley 1998], [Banfield 1993]. W następnym paradygmacie, grupującym (ang. partional) klastry są rozłączne, a każdy obiekt może należeć tylko i wyłącznie do jednego klastra [Lin, Lin 1996], [AlSultan 1996]. Ostatni paradygmat klasteryzacji rozmytej zakłada, iż elementy należą do odpowiednich klastrów w odpowiednim stopniu. Prowadzi to do możliwości przynależności jednego elementu do wielu klastrów [Bezdek, 1981], [Hoppner, 199]. Problem klasteryzacji jest, biorąc pod uwagę złożoność obliczeniową, równoważny z optymalizacją globalną nieliniowych funkcji wielomodalnych tak, więc zalicza się do problemów NP-trudnych [Weigend 1997]. Pomimo tego metody eksploracji danych finansowych mające na celu predykcje czy też klasyfikacje potrafią osiągać bardzo dużą skuteczność mierzoną tak w wskaźnikach statystycznych jak i realnych korzyściach ekonomicznych. Teoria błądzenia losowego rynków finansowych, która przekreślałaby skuteczność powyższej analizy szeregów czasowych również była i jest szeroko dyskutowana w wielu pracach. Jednakże w większości przypadku nie dało się jednoznacznie dowieść hipotezy o słabej efektywności rynku według Famy [Fama 1970]. W szczególności nie udało się tego ustalić dla polskich rynków kapitałowych [Czekaj 2003]. Problem postawiony w danej pracy brzmi: „Czy można tak podzielić szeregi czasowe, aby jeden klaster zawierał te, które w przyszłości wykażą tendencje wzrostowe, a drugi tendencje zniżkowe?” Aby trafniej klasyfikować wybrane podzbiory szeregów czasowych przynależność do klastrów zostanie 12 za pomocą funkcji przynależności zbiorów rozmytych [Rutkowski 2005]. Taka konstrukcja klastrów pozwoli również dać użytkownikowi bardzo czytelną odpowiedź w stylu: „Ten szereg czasowy wzrośnie z 78 procentowym prawdopodobieństwem”. Komunikat taki umożliwi podjęcie decyzji w zależności od skłonności do ryzyka danego inwestora. Jednym z kluczowych problemów podczas procesu klasteryzacji jest wielowymiarowość danych wejściowych. Przestrzeń rozwiązań, którą system będzie dzielić na klastry ma taką wymiarowość jak wektory do niej wprowadzane. W przypadku, gdy będą brane dane z sześćdziesięciu (dane z jednej minuty w odstępach jednosekundowych) ostatnich obserwacji, przestrzeń, jaką będzie musiał podzielić będzie przestrzenią 60-wymiarową. Klasyfikacja polega na przypisywaniu elementów do odpowiednich klastrów za pomocą z góry założonej normy (na przykład Euklidesowej). Przy dużej liczbie wymiarów różnica pomiędzy najbliższym i najdalszym sąsiadem staje się coraz mniej istotna, co znacznie utrudnia podział przestrzeni na znaczące klastry [Beyen 1999]. W literaturze przedmiotu istnieje bardzo wiele dobrze poznanych i bogato opisanych algorytmów redukcji wymiarów takich jak na przykład: neuronowe sieci autoasocjacyjne, dyskretna transformacja Fouriera, czy też dyskretna transformacja falkowa. Istnieje także wiele innych mniej znanych metod jak na przykład: drzewo regresji [Geurts 2001], nieciągłych reprezentacji (z ang. piecewise representation) [Keogh 1998], nieciągłe zagregowane aproksymacje (z ang. piecewise aggregate approximation) [Keogh 2000], [Yi 2000]. W niniejszej pracy problem klasteryzacji zostanie użyty do analizy, a w konsekwencji do predykcji, szeregów finansowych o dużej częstotliwości. Dane takie często nazywane są w literaturze jako szeregi prawie-losowe (ang. near-random walk). Analiza i predykcja takich danych jest niezmiernie trudna a wyniki skuteczności na poziomie 55-60% są uznawane za duże [Lipiński 2005]. 13 Istnieje wiele metod, tak teoretycznych jak i obliczeniowych, analizy i predykcji finansowych szeregów czasowych. Często polega ona na zbudowaniu formalnego modelu rynku na podstawie długich obserwacji i wielu zmiennych [Box 1994], [Brockwell 2002], [Karatzas 1998], [Rachev 2004]. Te metody jednakże bywają zawodne w stosunku do danych o wysokiej czy też ultra-wysokiej częstotliwości, czyli o bardzo częstych dyskretnych zmian cen wraz z dużą nieregularnością w domenie czasu [Bień 2005]. Jednym z wielu rozwiązań jest podejście obliczeniowe, które najczęściej polega na narzędziach sztucznej inteligencji takich jak algorytmach genetycznych, sieci neuronowych, stawia sobie na celu, zamiast próby budowania kompletnego modelu, znalezienie pewnych chwilowych własności, które mają istotny wpływ na rynek finansowy [Allen 1999], [Bauer 1994], [Demster 2003], [Kwasnicka 2001], [Tsang 2000]. W niniejszej pracy zostanie zaproponowany system wyszukujący wzorce w szeregach czasowych o wysokiej i ultra-wysokiej częstotliwości. Ich poznanie i identyfikacja pozwoli na przewidywanie przyszłych zachowań szeregów czasowych. Formalnie zostaną teraz sformułowane hipotezy, których prawdziwość zostanie zweryfikowana w niniejszej pracy. 1. Szereg czasowy zawiera pewne wzorce, po których następuje taka sama zmiana wartości tego szeregu. 2. Znalezienie i identyfikacja niniejszych wzorców, jest możliwa do przeprowadzenia w bardzo krótkim czasie za pomocą jednostanowiskowej aplikacji uruchomionej na komputerze domowym. 3. Wykorzystanie znalezionych wzorców w środowisku rynków finansowych pozwoli na osiągnięcie ponadprzeciętnych zysków. Próby weryfikacji powyższych hipotez zastaną przedstawione niniejszym pracy. Do weryfikacji hipotez posłuży autorski program H-Adviser zaimplementowany w C# i działający na platformie uruchomieniowej.NET 14 szczegółowo opisany w niniejszej pracy z szczególnym uwzględnieniem rozdziału 3 i dodatku C. Struktura pracy i wybór tematyki jest ściśle związana z procesem budowy systemu wspomagającego decyzje (od wstępnej analizy danych, poprzez problem klasteryzacji do konstrukcji samego systemu) lub też w sposób, w jaki system buduje decyzje (od pobrania i wstępnego przetworzenia danych, poprzez klasteryzację do utworzenia decyzji prezentowanej użytkownikowi). W rozdziale pierwszym zostanie przestawiony model strumieni danych za pomocą, których dane zostaną pozyskane a następnie zostanie opisana ich wstępna obróbka. W tym rozdziale zostanie przedstawiona propozycja rozwiązania problemu wielowymiarowości wektora wejściowego za pomocą dyskretnej transformacji falkowej. Zostanie również tutaj przedstawiony sposób opisu klastrów za pomocą liczb rozmytych. Ostatecznie zostanie zaprezentowany wektor w takiej postaci, w jakiej zostanie wprowadzony do systemu klasteruzującego. Rozdział drugi ma charakter teoretyczny. Zostanie w nim szczegółowo i formalnie opisany problem klasteryzacji oraz sposób jej przeprowadzenia za pomocą algorytmu gazu-neuronowego. Zostanie także zaprezentowana metoda ekstrakcji wiedzy z przestrzeni podzielonej na klastry. W rozdziale trzecim zostanie przedstawiona budowa systemy wspomagającego decyzje inwestycyjne zbudowanego na podstawie założeń przedstawionych w rozdziale pierwszym i drugim. Ostatni rozdział, czwarty, zawierać będzie analizę skuteczności decyzji inwestycyjnych opartych na informacjach wygenerowanych poprzez system. W nim też nastąpi weryfikacja hipotez przedstawionych w niniejszym wstępie. Dodatkowo praca zawiera trzy dodatki. Pierwszy poświęcony jest teorii falek. Z większą dokładnością zostanie opisana w nim dyskretna transformacja falkowa oraz opis i budowa falki Daubechies 4, która została wykorzystana w niniejszej pracy. Znajdują się tam także szczegółowo opisany algorytm 15 redukcji wymiarów oparty na dyskretnej transformacji falkowej. Ostatni dodatek jest opisem programu wspomagającego decyzje H-Adviser, którego prototyp zastał zaprezentowany na łamach niniejszej pracy. W dodatku ostatnim C, zatytułowanym aneks statystyczny, zestawiono wszystkie szeregi czasowe wybrane do weryfikacji hipotez przy użyciu hybrydowego systemu wspomagania decyzji wraz z ich krótkim opisem statystycznym. 16 ROZDZIAŁ 1 WSTĘPNA ANALIZA DANYCH 1.1 Strumienie danych 1.2 Okna przesuwne 1.3 Klasyfikacja obserwacji a priori 1.4 Transformacja falkowa 1.5 Budowa wektora wejściowego W niniejszym rozdziale autor pracy przedstawi w pierwszej kolejności sposób pozyskiwania danych finansowych. Zostaną opisane ograniczenia nałożone na system w związku z traktowaniem wartości szeregów czasowych, jako strumień danych. Następnie zostanie opisany sposób redukcji wymiarów oraz zmniejszania wagi sygnałów odległych za pomocą transformacji falkowej. Na końcu przedstawiona zostanie ostateczna budowa wektora wejściowego, który używany będzie w procesie klasteryzacji jako wektor kodujący odpowiedni wzorzec. 17 1.1 Strumienie danych Strumienie danych (ang. data streams) aktualnie przyciągają uwagę wielu specjalistów w najróżniejszych technologiach między innymi takich jak systemy bazodanowe, biometrii lub też systemy rozproszone. Jak sama nazwa wskazuje o strumieniu danych możemy myśleć, jako o uporządkowanej sekwencji tych samych elementów (tak bitów jak i bardziej złożonych obiektów), które oddziela zmienny interwał czasu [Garofalakis 2002], [Golab 2003]. Wykorzystuje się je między innymi w systemach telekomunikacyjnych, sieciach monitorujących jak też w analizie bieżących danych finansowych. Pomijając problem magazynowania danych i ich analizy, przetwarzanie ciągłego strumienia napływających danych rozmieszczonych nieregularnie w czasie i teoretycznie bez żadnych ograniczeń jest wyzwaniem samym w sobie. Przy takiej ilości danych nie ma miejsca na to aby składować je w na przykład w bazach danych i po osiągnięciu ich odpowiedniej ilości poddać obróbce. Oczywiście strumienie muszą być przetwarzane w czasie rzeczywistym. Celem niniejszej pracy jest klasyfikacja strumieni danych w taki sposób aby te podobne do siebie na bieżąco były klasyfikowane do odpowiadających im grup. Oczywiście surowe dane nie nadają się do analizy chociażby z powody szumów i zbyt dużej wielowymiarowości. Analiza taka nie dość, że nie jest wystarczająco skuteczna, to jeszcze jest bardzo czasochłonna. Rysunek 1 Prosty schemat modelu przetwarzania strumieni danych Źródło: [Beringer 2007] 18 Model strumieni danych zakłada brak możliwości dostępu do danych w sposób asynchroniczny z dowolnego źródła danych (RAM lub dysk) choć dopuszcza możliwość ich buforowania. Komunikacja z serwerem danych jest jednostronna. Sposób odbierania danych w taki sposób wymusza, co następuje: • klient nie wysyła żadnych żądań, działa jak odbiornik i reaguje odpowiednimi zdarzeniami na pojawiające się dane; • system nie weryfikuje danych, nie odpowiada serwerowi, gdy dane otrzyma; • zakłada się, że długość strumienia danych jest nieskończona; • nie ma możliwości, aby pobrać dane już wcześniej dostarczone (choć oczywiście mogą być one buforowane); • dopuszcza się możliwość bezpowrotnej utraty danych spowodowaną błędami transmisji. Wszelkie operacje związane z pobieraniem i przetwarzaniem danych będą spełniały wyżej wymienione warunki. 1.2 Okna przesuwne Analiza nieskończenie długich strumieni danych jest niemożliwa do wykonania, dlatego też należy wydzielić z niego mniejsze fragmenty. Wielkość wydzielonego fragmentu powinna być na tyle mała, aby strumienie można było szybko sklasyfikować, ale też na tyle duża, aby analiza była wiarygodna i mogła stanowić podstawę do podejmowania skutecznych decyzji inwestycyjnych. Najpopularniejszym sposobem, aby uzyskać taki rezultat jest wykorzystanie okna przesuwnego (ang. sliding-window). Długość okna może być stała lub też zmieniać się w czasie podczas wykonywania klasyfikacji. Rozważając okna przesuwne o założonej długości w, strumień można formalnie opisać jako w-wymiarowy wektor X = ( x0 , x1 , x2 ,…, xw −1 ) ∈ ℜ w . Każdą obserwację x traktujemy jako liczbę rzeczywistą. Tak, więc całkowity 19 strumień X = ( x0 , x1 , x2 ,…, x∞ ) dzielimy oknem przesuwnym na wektory składowe w następujący sposób: X 0 = ( x0 , x1 , x2 ,…, xw −1 ) , X 1 = ( x1 , x 2 , x3 ,… , x w ) = X 0 − {x0 } ∩ {x w }, X 2 = ( x 2 , x3 , x 4 ,… , x w+1 ) = X 1 − {x1 } ∩ {x w+1 } lub ogólnie zgodnie ze wzorem (1). X n = ( x0 + n , x1+ n , x2 + n ,…, xw −1+ n ) = X n −1 − {x0 + n } ∩ {xw −1+ n } (1) Tak skonstruowane wektory za pomocą okien przesuwnych posłużą jako wektory kodowe do wyszukiwania wzorców kupna i sprzedaży. 1.3. Klasyfikacja obserwacji a priori Ustalony tak wektor jest wystarczający do sprawnego działania systemu. Jednakże, aby mógł on się kalibrować ze względu na warunki aktualnie panujące na rynku oraz umożliwić opisanie klastrów w przestrzeni, do każdego wektora zostanie dodana dodatkowa wartość określająca a priori przynależność danego wektora do odpowiedniego klastra. Będzie ona wyrażała procentowo zmianę pierwszej wartości nowego okna przesuwnego względem ostatniej wartości ostatniego okna przesuwnego. Wartość tą będzie wyrażać liczba rzeczywista. Aby zapewnić bardziej precyzyjne opisanie wzorców wartość ta zostanie znormalizowana do przedziału (-1,1). Obserwację taką będzie można uznać wtedy jako matrycę wzorca kupna jeśli wartość ta będzie bliska 1, i odwrotnie jeśli będzie ona bliska -1 będzie wskazywała na wektor który koduje wzorzec sprzedaży. Można potraktować ten przedział jako zbiór rozmyty decyzji inwestycyjnych gdzie na blisko granicy lewostronnej znajdują się decyzje sprzedaży a blisko granicy prawostronnej decyzje kupna. 20 Mając na uwadze powyższe funkcja tworząca taki zbiór rozmyty musi spełniać przy tych założeniach następujące warunki: lim f = 1 x → ∞ f = f ( 0) = 0 lim f = −1 x → −∞ (2) Odpowiednią funkcją spełniającą te warunki jest między innymi tangens hiperboliczny. Z punktu widzenia działania systemu ma ona dodatkowo dwie ciekawe własności. Pierwsza z nich to łatwość obliczenia jej wartość przy zadanym argumencie. Dokładną postać funkcji po przestawia wzór (3). tanh x = e x − e−x e x + e −x (3) Aby dokonań obliczenia wystarczy obliczyć wartość funkcji e dla wartość argumentu x i –x (rysunek 2). Rysunek 2. Wykres ex Źródło: opracowanie własne przy użyciu programu Derive Druga własność to łatwa skalowalność funkcji. Operując parametrem x można zmieniać kąt nachylenia pomiędzy funkcją, a osiami współrzędnych. Można potraktować ten parametr jako współczynnik ryzyka. W zależności od 21 niego sygnały kupna lub sprzedaży będą pojawiały się przy mniejszych zmianach bezwzględnych elementów wektora wejściowego. Ilustruje to rysunek 3. Rysunek 3 Skalowanie funkcji tanh(x) Źródło: opracowanie własne przy użyciu programu Derive Parametrem tym można także dostrajać system do zmienności szeregu czasowego. Przy szeregach czasowych o bardzo wysokiej amplitudzie zmian, zmiana jedno-procentowa może być bardzo znacząca natomiast dla innych o mniejszej częstotliwości może być zmianą nic nieznaczącą. Wtedy wzorzec zakodowany jako wzrostowy dla szeregu o mniejszej amplitudzie zmian może w rzeczywistości oznaczać trend boczny, w którym porusza się klasteryzowany walor i prowadzić do błędnych decyzji inwestycyjnych. Użytkownik będzie miał możliwość wyboru tego parametru, co sprawi, że system będzie bardziej elastyczny i lepiej reagował z danych o różnych amplitudach zmian. 22 1.4 Transformacja falkowa Dyskretna transformacja falkowa [Daubechies 1992], [Meyer 1995], [Mallat 1989] jest bardzo częstą techniką wykorzystywaną we wstępnej analizie danych. Dzięki niej można zarówno zredukować ilość wymiarów wektora wejściowego, do docelowego systemu analizującego dane (np. klasyfikującego albo predykcyjnego), jak i usunąć część informacji uznanych przez transformacje jako szum lub redundancje danych, jednakże pozostawiając w sygnale informacje oryginalne (w sensie Shanon’a) [Sharon 1948]. Skrótowy opis teorii falek wraz z opisem pozyskania falki Daubechies2 (D2), która została wykorzystana w systemie przez autora pracy, oraz kryterium jej wyboru zawiera dodatek A. Istnieje nieskończenie wiele możliwości podziału wektora wejściowego na podciągi. Dodatkowo jest wiele możliwości ustawienia stopnia kompresji danych wejściowych. W niniejszej pracy, przy budowie systemu wspomagania decyzji na drodze eksperymentów został wybrany następujący model: wektor przekazany do systemu zostanie poddany dyskretnej transformacji wejściowej (DTF) za pomocą falki D2 w sposób następujący: 1. pierwsze osiem elementów zostanie zredukowanych do dwóch; 2. kolejne szesnaście elementów zostanie zredukowane do czterech; 3. trzydzieści dwa następne elementy zostanie zredukowane do ośmiu. Uzyskamy w ten sposób redukcję z przestrzeni 56-wymiarowej do 14wymiarowej: W procesie decyzyjnym najważniejszą wartość mają dane aktualne. Im dalej od ostatniego sygnału tym mniejszą wartość informacyjną przypisujemy danym. Jeśli wektor wejściowy do systemu klasyfikującego ma postać X = ( x1 , x2 , x3 ,..., xn ) , to największą wagę przypiszemy składowej najmłodszej (czyli x1 ), mniejszą kolejnej ( x2 ), a najmniejszą ostatniej ( xn ). Taki sposób podzielenia na podciągi wektora wejściowe zapewni właśnie taki rezultat. 23 1.5 Budowa wektora wejściowego Uzyskany przez transformację falkową wektor ze strumienia danych po redukcji wymiarów i dodaniu wartości opisującej wzorzec a priori jest już prawie gotowy do wprowadzenia do systemu klasteryzującego. Jednakże, jeśli pozostawimy w wektorze wartości rzeczywiste może dojść do sytuacji, kiedy dwa identyczne, pod względem kształtu, wektory kodowe zostaną zaklasyfikowane do dwóch oddzielnych klastrów. Problem przedstawia rysunek 4. Problem ten można rozwiązać stosując normalizację danych do odpowiedniego przedziału. Tak przeskalowane wektory kodowe będą już nie rozróżnialne dla systemu i zostaną umieszczone w tym samych klastrach. Formalnie chcemy uzyskać, aby wartości minimalna i maksymalna danego wektora były, z definicji, równe z góry założonym liczbom. Autor pracy arbitralnie wybrał wartości -1 i 1 (równie często spotykanym rozwiązaniem jest wybór wartości 0 i 1). df df a = max( X n ) = 1 , b = min ( X n ) = − 1 (4) Taką normalizację nazywamy normalizacją mini-max. Wartości składowych znormalizowanego wektora obliczamy za pomocą wzoru 5. X* = X − min( X ) X − min( X ) = zakres( X ) max( X ) − min( X ) (5) Przy tak znormalizowanych wartościach, wszystkie wektory kodowe, zostaną umieszczone w hiperprzestrzeni ograniczonej przez hipersześcian o środku ciężkości w środku układu współrzędnych. 24 Rysunek 4 Nieznormalizowany wektor kodowy w zakresie [3,18] i [30,180] Źródło: Opracowanie własne przy użyciu programu MATLAB 25 Tak przygotowany wektor, o zredukowanej transformacją falkową liczbie wymiarów, składający się z znormalizowanych wartości jest już w pełni gotowy do przekazania go do systemu klasteryzującego opisanego w kolejnych rozdziale. 26 ROZDZIAŁ 2 KLASTERYZACJA DANYCH 2.1 Klasyfikacja a klasteryzacja danych 2.2 Funkcje podobieństwa 2.3 Kwantyzacja przestrzeni cech i wieloboki Woronoja 2.4 Algorytm gazu neuronowego 2.5 Ekstrakcja wiedzy z skwantyzowanej przestrzeni cech W rozdziale tym zostanie teoretycznie nakreślony problem klasteryzacji oraz zostanie zaproponowana metoda jej wykonania za pomocą algorytmu gazu neuronowego. Opisany szczegółowo zostanie także sam proces dzielenia przestrzeni na klastry, czyli kwantyzacja przestrzeni cech. Na samym końcu zostanie przedstawiony problem wizualizacji przynależności wektora do danego klastra i zostanie zaproponowane rozwiązanie tego problemu w sposób intuicyjny i łatwy dla odczytanie przez końcowego użytkownika. 2.1 Klasyfikacja a klasteryzacja danych Klasyfikacja statystyczna to rodzaj procesu przetwarzania danych, który przydziela obserwacje statystyczne do klas, bazując na atrybutach 27 (cechach) tych obserwacji. Formalnie problem ten można przedstawić: dla danego zbioru danych klasyfikator trenujących , który przydziela obiektowi znaleźć klasę [Bobrowski 1986]. W przypadku problemu postawionej w niniejszej pracy xi reprezentować będą wektory kodowe natomiast y określać będą wzorce kupna lub sprzedaży. Klasteryzacja jest natomiast klasyfikacją nie nadzorowaną obiektów na różne podgrupy. Bardziej formalnie jest to partycjonowanie zbioru danych na podzbiory (klastry), takie, że elementy w każdym zbiorze są do siebie podobne (identyczne) ze względu na jakąś cechę, natomiast odmienne od innych elementów zgromadzonych w innych klastrach [Malarska 2005]. Do porównywania elementów używamy z góry zadanej funkcji liczącej odległości od elementów i na jej podstawie ustalamy podobieństwo. Inną bardo ważną cechą klasteryzacji jest to, iż dzielenie elementów, na klastry jest nienadzorowane. Z tego też względu klasteryzacja nie posiada zbioru uczącego. Dane analizowane są dla całego zbioru. Idea polega na tym, ze badamy odległości obiektów od skupisk umieszczonych w przestrzeni metrycznej za pomocą z góry określonej normy. Na potrzeby niniejszej pracy gdzie klasteryzujemy wektory kodowe, które są podciągami szeregu czasowego możemy klasteryzację zdefiniować następująco. Niech V będzie zbiorem wektorów v j gdzie j = 1,2,..., n . Celem klasteryzacji jest przyporządkowanie elementów zbioru V elementom zbioru klastrów K w taki sposób, że zmienne należące go jednego klastra są bardziej do siebie podobne ze względu na z góry założoną miarę (normę). Wynikiem tej procedury jest injekcja (w szczególnych przypadkach bijekcja) V → K . Bardzo ważnym elementem przy klasteryzacji jest wybór funkcji podobieństwa, czyli normy mierzącej odległości elementów od siebie. Skrótowe przedstawienie najczęściej wykorzystywanych norm zawiera kolejny podrozdział. 28 2.2. Funkcje podobieństwa Istnieje wiele podziałów funkcji mierzących dystans między elementami umieszczonymi w klasteryzowanej przestrzeni. Jedna najbardziej widocznym podziałem są normy symetryczne i niesymetryczne. W normach symetrycznych odległość (podobieństwo) elementu A do elementu B jest równoważne odległości elementu B do elementu A. W niektórych procesach klasteryzacji jest to poważne ograniczenie, dlatego też używane są normy niesymetryczne na przykład sequence-alignment methods [Prinze 2006]. W niniejszej pracy klasteryzacji podlegają wektory umieszczone w wielowymiarowej przestrzeni euklidesowej, która jest symetryczna, dlatego autor pracy ograniczy się do bardziej szczegółowego opisania norm symetrycznych. Najczęściej używaną normą, która jest zarazem najbardziej intuicyjna, jest norma euklidesowa [Rutkowski 2006]. Dla dwóch wektorów P i Q o składowych odpowiednio pi i qi, gdzie i oznacza naturalny indeks składowej wektora, normę euklidesową definiujemy, jako: (6) Jest to po prostu odległość między dwoma punktami taka jaką znamy z świata rzeczywistego. Prawdziwość (6) można udowodnić stosując rekursywnie twierdzenie pitagorasa, dlatego też kiedyś nazywana była metryką Pitagorejską. Inną metodą mierzenia podobieństwa jest metryka Minkowskiego1, dla wektorów x i y możemy ją zapisać wzorem (7). Jest ona również nazywana metryką Manhattan, miejską lub taksówkową. (7) 1 Nazwana tak na cześć Hermanna Minkowskiego (ur. 22 czerwiec 1864. zm. 12 styczeń 1909), niemieckiego pochodzenia matematyka i fizyka ur. w Aleksotas (obecnie Kowno w Rosji). 29 Nie wszystkie miary ograniczają się tylko i wyłącznie do liczenia dystansu. Miarą, która nie tylko rozróżnia odległość elementów, ale także korelacje między tymi jest odległość Mahalanobisa. Mając dane dwa wektory x i y, oraz pewną symetryczną, dodatnio określoną macierz C możemy ją opisać wzorem (8). (8) Mierzy ona odległość między dwoma punktami w n wymiarowej przestrzeni różnicując wkład poszczególnych składowych oraz wykorzystując korelacje między nimi. Ze względu na swoje cechy często nazywana także ważoną miarą euklidesową, przy czym macierzą wag jest C-1. W niniejszej pracy w celu uproszczenia problemu oraz zmniejszenia złożoności obliczeniowej procesu, klasteryzacji jako funkcja podobieństwa została wybrana norma euklidesowa. 2.3 Kwantyzacja przestrzeni cech i wieloboki Woronoja Podczas procesu uczenia systemowi klasyfikującemu zostaną przedstawione odpowiednio przygotowane wektory danych. W tym czasie neurony starają się ulokować pośród tych punktów (danych) i stać się ich reprezentantami. W ten sposób cała przestrzeń zostaje podzielona na obszary odzwierciedlające strefy wpływów poszczególnych neuronów. W przypadku używania metryki euklidesowej są to obszary wypukłe, które czasami nazywane są wielobokami Woronoja2, które schematycznie przedstawia rysunek 5. Reprezentujące te obszary neurony nazywa się wektorami Woronoja lub wektorami kodowymi. 2 Graf nazwany tak na cześć rosyjskiego matematyka Gieorgija Fieodosjewicza Woronoja (1868 – 1908). Znany również jako tesselacja Dirichleta, tesselacja Woronoja, lub komórkami Woronoja. W powszechnym użytku jest też inna pisownia nazwiska – Voronoi. 30 Rysunek 5. Diagram Woronoja dla R2 Źródło: opracowanie własne. Obszary Woronoja Vi są zdefiniowane jako miejsce geometryczne punktów x spełniający następujący warunek: { } Vi = x : wi − x < w j − x , j ≠ i (9) W rezultacie po wykształceniu stref wpływów poszczególnych neuronów, cała przestrzeń danych zostaje, skwantyzowana – co oznacza, że pozostaje ona podzielona na rozłączne obszary, które dopełniają się do całej przestrzeni, którą kwantyzują. Dla n-wymiarowej rzeczywistej przestrzeni zachodzą własności (10), mianowicie: ∞ ∪V i = Rn i (10) ∞ ∩V i =∅ i Wtedy wektory danych należące do jednego obszaru Woronoja są reprezentowane przez znajdujący się w tym obszarze neuron. 31 2.4 Algorytm gazu neuronowego Algorytm Gazu Neuronowego (Neural Gas NG został zaprezentowany w pracy Martineza, Berkovicha, Schultena „Neural-gas network for vector quantization and its application to time series prediction.” [Martinetz 1993].). Celem autorów było dokonanie kwantyzacji przestrzeni cech i uzyskanie wektorów kodowych, które mogłyby odgrywać role reprezentantów zbioru danych. W zaproponowanej metodzie wektory te, są znajdywane metodą nauczenia bez nadzoru w warunkach konkurencji. Używa się łagodnej funkcji sąsiedztwa obejmującej wszystkie neurony i malejącej wykładniczo w miarę zwiększania się odległości neuronu od prezentowanego wektora danych. W przypadku asymptotycznym, gdy ilość neuronów dąży do nieskończoności, rozkład neuronów w przestrzeni opisuje równanie różniczkowe identyczne jak równanie charakteryzujące dyfuzję gazu – stąd nazwa sieci „gaz neuronowy” [Martinetz 1993]. Algorytm gazu neuronowego nie jest tak popularny jak na przykład metoda samoorganizujących się map Kohonena. Jednak badania wykazały, że metoda ta jest bardziej efektywna niż sieci Kohonena i parę innych metod klasyfikacji bez wzorcowej [Osowski 1996]. Jednak metoda ta nie dostarcza w przeciwieństwie do klasycznych SOM (ang. self-organizing map) wizualizacji danych. W metodzie NG nie ma żadnej sieci, natomiast neurony dryfują swobodnie w przestrzeni próbując ulokować się pomiędzy wektorami wejściowymi. Liczba neuronów jest stała (zdefiniowana przez projektanta sieci). Swoboda poruszania się jest jedynie ograniczona współzawodnictwem. Do poprawnego działania algorytmu projektant musi ustalić następujące parametry. Pierwszy z nich to oczywiście liczba neuronów. Nie istnieje idealna recepta na dobór tego parametru. Każdy neuron reprezentuje odpowiedni obszar w przestrzeni rozwiązań. Zbyt mała liczba będzie powodowała problem błędnej klasyfikacji wektorów, zbyt duża natomiast 32 stworzy klasy bez reprezentantów, co spowoduje błędy przy uogólnianiu wiedzy. Kolejny parametr, który trzeba wziąć pod uwagę to współczynnik uczenia ε. Na ogół przyjmuje się, że współczynnik ten maleje ze wzrostem numeru iteracji algorytmu od wartości początkowej εi do końcowej εf osiąganej w ostatnim przejściu. Najczęściej przyjmuje się, że współczynnik ten maleje zgodnie z funkcją potęgową: ε ε (t ) = ε i f εi t tmax , (11) gdzie t jest numerek wykonywanej iteracji a tmax jest ustaloną ilością iteracji. Ostatnim parametrem jest sąsiedztwo oznaczane, jako λ. Funkcja sąsiedztwa przyjmuje postać (12). Jako λi oznaczone jest sąsiedztwo początkowe a jako λf końcowe. Parametry t i tmax oznaczają to samo, co w formule (11). λ λ (t ) = λi f λi t tmax (12) Przy λ = 0 mamy do czynienia z zerowym sąsiedztwem i regułą WTA3. Przy λ > 0 są aktualizowane wagi wszystkich neuronów (czyli również tych, które są „dalekimi” sąsiadami), lecz współczynnik uczenia odległych sąsiadów szybko dąży do zera. Jest to sytuacja podobna do tej, z jaką mamy do czynienia w klasycznym algorytmie SOM z gaussowską funkcją sąsiedztwa [Martinetz 1993]. 33 Klateryzacja za pomocą gazu neuronowego ma następujący przebieg: Gaz neuronowy – algorytm: 1: Zainicjalizuj parametry: −> λi – początkowy współczynnik sąsiedztwa (domyślnie połowa liczby neuronów), −> λf – końcowy współczynnik sąsiedztwa (domyślnie 0,01), −> εi – początkowy współczynnik uczenia (domyślnie 0,5), −> εf – końcowy współczynnik uczenia (domyślnie 0,005), −> tmax – czas uczenia (domyślnie 3000), −> t = 0 – aktualna iteracja algorytmu. 2: Zainicjuj zbiór A tak aby zawierał N elementów (ilość A = {c1 , c 2 , c3 , c 4 ,..., c N } . neuronów) Każdemu neuronowi przyporządkuj wektor wi (składowe ustalane są losowo). 3: Pobierz jeden sygnał ze zbioru uczącego ξ . 4: Posortuj odległość wszystkie od ξ elementy Neuron zbioru najbliższy A ze staje względu się na neuronem zwyciężcą. Pozostałe neurony w zależności od odległości ustawiają się w kolejce za nim, i otrzymują miejsca 1,2,3,..,N-1. Miejsca te oznaczane są i, co odczytuje się „pozycja i-tego neuronu”. 5: Funkcja sąsiedztwa przyjmie wartość −i hλ = exp λ (t ) (13) gdzie i to pozycja w stosunku do neuronu zwycięskiego a λ(t) jest wyrażona wzorem (12). 6: Dokonaj adaptacji wag (pozycji neuronów w przestrzeni) zgodnie ze wzorem: ∆wi = ε (t ) ⋅ hλ ⋅ (ξ − wi ) (14) 7: Zwiększ parametr t o jeden. 8: Jeśli t < tmax wróć do punktu 3 w przeciwnym razie zakończ działanie. 3 WTA – z ang. Winner Takes All (zwyciężca bierze wszystko) 34 W punkcie czwartym algorytmu występuje przy sortowaniu pojęcie odległości. Można tutaj użyć dowolnej normy potrafiącej skutecznie zróżnicować wektory kodowe. Niektóre z najbardziej popularnie stosowanych zostały opisane w podrozdziale drugim niniejszego rozdziału. W niniejszej pracy, co było już wspomniane, zostanie użyta norma euklidesowa. 2.5 Ekstrakcja wiedzy z skwantyzowanej przestrzeni cech Algorytm gazu neuronowego w przeciwieństwie do na przykład samoorganizującej mapy Kohonena nie zapewnia wizualizacji efektów klasteryzacji. Aby wizualizować użytkownikowi efekt działania algorytmu należy wydobyć wiedze z skwantyzowanej przestrzeni cech i w odpowiedni sposób ją zaprezentować. W tym celu zostanie przeprowadzona procedura zbliżona do uczenia sieci. Schemat działania pozyskania wiedzy można schematycznie opisać następująco: Ekstrakcja wiedzy – algorytm: 1: Przedstaw sieci wektor do zaklasyfikowania ψ. 2: Posortuj wszystkie elementy zbioru A (neurony) ze względu na odległość od wektora ψ. 3: Zwróć wzorzec wektora ψ wraz zakodowany z w odległością neuronie od tego najbliższym neuronu. od Zakończ działanie. W ten sposób pozyskamy nie tylko wzorzec, jaki dany neuron koduje, ale także znając odległość od niego możemy ustalić stopień przynależności wektora do danego wzorca. Chociaż zaklasyfikowanie wektora do odpowiedniego wzorca określa wartość rozmyta to jednak użytkownik systemu wspomagającego decyzje, w zależności od ustalonych parametrów, musi mieć decyzje „ostrą”. Jako 35 wartość ostrą rozumiemy jednoznaczną wartość określającą decyzje inwestycyjną utworzoną z wartości rozmytej. Dzięki temu, że zostanie zwrócona także odległość wektora od zwycięskiego neuronu określającego przynależność do danego klastra, w systemie sprawdzając ją można określić czy jest ona wystarczająca do tego, aby dany wektor uznać, jako posiadający tendencję wzrostową lub spadkową. Wtedy taka konkretna informacja może być przedstawiona użytkownikowi. Wyostrzanie liczby rozmytej za pomocą odległości od środka klasy (neurony) wygeneruje sygnał zawierają jedną z trzech wartości: -1, 0, 1. Aby uczynić wizualizacje jeszcze bardziej intuicyjną można przedstawić ten triplet, jako powszechnie znaną i zrozumiałą sygnalizację świetlną gdzie kolor żółty (odpowiadający zeru) oznaczać będzie oczekiwanie na sygnał, kolor czerwony (odpowiadający ujemnej jednostce) będzie oznaczał sugestie do zamknięcia pozycji długiej lub do otwarcia pozycji krótkiej i analogicznie kolor zielony (odpowiednik jedynki) będzie sygnalizował otwarcie pozycji długiej lub też zamknięcie pozycji krótkiej. Tak skonstruowany system klasteryzujący jest już w pełni gotowy do zaimplementowania i nadaje się do weryfikacji hipotez postawionych we wstępie niniejszej pracy. Jego budowę prezentuje kolejny, trzeci rozdział. 36 ROZDZIAŁ 3 PROTOTYP SYSTEMU WSPOMAGAJĄCEGO PODEJMOWANIE DECYZJI 3.1. Metody podejmowania decyzji finansowych 3.2. Idea hybrydowego systemu wspomagającego decyzje 3.3 Formalizacja decyzji inwestycyjnej 3.4. Budowa systemu wspomagania decyzji. 3.5. Wartości początkowe systemu W niniejszym rozdziale zostanie zaprezentowana idea hybrydowego systemu wspomagającego decyzje. Zostanie zaprezentowany sposób podejmowania decyzji inwestycyjnych oraz opisane wartości początkowe systemu wymagane do działania algorytmu klasteryzującego opisanego w rozdziale wcześniejszym. 3.1. Metody podejmowania decyzji finansowych Istnieje bardzo wiele metod podejmowania decyzji finansowych na rynku papierów wartościowych. Można opierać się tylko i wyłącznie na danych ilościowych takich jak cena waloru oraz wolumen transakcji. Mówimy 37 wtedy o analizie technicznej. Nazywana ona jest inaczej analizą wykresów i opiera się na trzech założeniach [Murphy 1999]: 1. rynek dyskontuje wszystko – cena uwzględnia wszystkie dostępne informacje dotyczące danego papieru wartościowego, jego emitenta, sytuację mikro i makroekonomiczną oraz uwarunkowania gospodarcze i polityczne; 2. ceny podlegają trendom – ceny znajdują się w określonych trendach (wzrostowym, spadkowym, horyzontalnym) i będą tym trendom podlegać, dopóki nie nastąpią wyraźne sygnały oznajmujące odwrócenie tego trendu; 3. historia się powtarza – analiza techniczna zajmuje się badaniem przyszłości, w oparciu o badanie przeszłości. Do narzędzi analizy technicznej należą wskaźniki, formacje jak i mniej naukowe metody jak teoria fal Elliota [Frost 1995] oraz obserwacje księżyca [Bernstein 2000]. Inne podejście bierze pod uwagę informacje dotyczące aktualnego stanu spółki akcyjnej jak na przykład jej dochody, przepływy finansowe oraz stan otoczenia, w jakim firma prosperuje. W przypadku walorów niezwiązanych z jedną konkretną instytucją jak na przykład indeksy giełdowe lub notowania rynków walutowych pod uwagę brane są czynniki takie jak polityka fiskalna i monetarna, zdarzenia polityczne, sytuacja w poszczególnych branżach. Analiza taka nazywana jest analizą fundamentalną [Ritchie 1997]. Wiele systemów agendowych czerpie dane tak z analizy technicznych jak i analizy fundamentalnej [Lipiński 2005]. Często używanymi wskaźnikami analizy fundamentalne są C/Z (cena/zysk ang. P/E Price Earnings Ratio), C/WK (cena/wartość księgowa ang. Price/BookValue) oraz C/EBIT (ang. Earnings Before Interest and Tax). 38 3.2 Idea hybrydowego systemu wspomagającego decyzje Zaprezentowany w pracy system wspomagania decyzji ma celu pomoc użytkownikowi, działającemu na rynku papierów wartościowych, w podjęciu decyzji inwestycyjnej, która w przyszłości skutkowałby mogła osiągnięciem zysków większych niż inwestycja wolna od ryzyka (na przykład lokata bankowa). Do tego celu zostanie wybrana pierwsza z prezentowanych metod podejmowania decyzji, analiza techniczna. Czysto techniczne podejście jest często krytykowane jest w środowisku inwestorów giełdowych. Uważa się, że sama analiza techniczna może pominąć informacje, która bezsprzecznie świadczyć będzie za kupnem lub sprzedażą waloru. Pomijając słuszność tego argumentu należy mieć na uwadze to, że dostęp do takiej informacji może mieć niewiele osób. Ponadto jeszcze mniej osób ma wystarczającą wiedzę, aby tę decyzje dobrze zinterpretować. Kontrargumentem jest jedna z zasad analizy technicznej, która mówi o tym że rynek dyskontuje wszelką dostępną informację. Dodatkową zaletą podejścia technicznego jest to, że informacja w większości jest tak samo przez wszystkich interpretowana. Zamysłem podczas projektowania systemu, było, iż miałby on być częścią większego systemu agendowego, który mógłby uwzględniać inne metody podejmowania decyzji tak fundamentalnych jak i technicznych. Przykłady i konstrukcje takich systemów można znaleźć w pracy [Korczak 2007]. Moduł H-Adviser bazowałby tylko na cenach walorów i na tej podstawie generował decyzję inwestycyjne. Nazwa modułu bierze się ze słowa hybrydowy (h od hybrid) gdyż do podjęcia decyzji będzie wykorzystana w pierwszej kolejności teoria falek do redukcji wymiarów oraz gaz neuronowy do klasteryzacji wektorów. Dodatkowo decyzja jest interpretowana zgodnie z teorią zbiorów rozmytych. Wynikiem działania systemu po przetworzeniu danych wejściowych będzie ostra decyzja wskazująca na potencjalny wzrost lub spadek notowań 39 albo brak wystarczających przesłanek o jednoznacznym zaklasyfikowaniu wprowadzonego wektora. Skonstruowanie jednak takiego komunikatu dla użytkownika wymaga sformalizowania pojęcia decyzji inwestycyjnej. 3.3 Formalizacja decyzji inwestycyjnej Pojęcie decyzji finansowej na rynku kapitałowym można sformalizować niezależnie od wybranej strategii na wiele różnych sposobów. W niniejszej pracy zaproponowano dwupoziomowy model podjęcia decyzji bazujący na dwóch poniższych definicjach. Definicje są modyfikacjami adekwatnymi do założeń systemu definicji zaprezentowanych w [Lipiński 2005]. W obydwu definicjach W oznacza aktualną wiedzę o danych walorze. Definicja 3.1: Decyzja inwestycyjna jest funkcją f : W → y ∈ −1,1 , która przypisuje wiedzę W do liczby y należącą do przedziału −1,1 . Wartość -1 oznacza potencjalny spadek a 1 wzrost. Wartości pośrednie oznaczając stopień przynależności do danej decyzji. Definicja 3.2: Decyzja inwestycyjna jest funkcją f : W n → ( k , s ) ∈ −1,1 n która przyporządkowuje wiedzę z n następujących po sobie obserwacji do pary (k,s), gdzie k oznacza liczbę decyzji kupna a s oznacza ilość decyzje sprzedaży w n okresach. Definicja 3.2 dla jednej obserwacji jest równoważna definicji 3.1. Jednakże czasami może zajść potrzeba weryfikacji sygnału lub zaniechaniu decyzji, gdy informacje sprzeczne pojawiają się po sobie. Zmniejsza ono ryzyko inwestycji aczkolwiek należy mieć na uwadze, iż takie podejście po pierwsze uniemożliwi „kupno w dołku” i „sprzedaż na szczycie” i po drugie może, zmniejszając liczbę decyzji, usunąć tę właściwą. 40 3.4 Budowa systemu wspomagania decyzji. Na tym etapie, zaprojektowany system jest jednostanowiskową aplikacją działającą na platformie .NET i zaimplementowaną w C#. Ponieważ założeniem, że użytkownikiem programu jest użytkownik dysponujący standardowym komputerem domowym na program nałożono pewne ograniczenia. Musi on uruchamiać się na komputerze uruchomionym w system MS Windows w środowisku graficznym. Najważniejszym i najtrudniejszym do realizacji ograniczeniem jest czas klasteryzacji. Analiza skuteczna będzie wtedy i tylko wtedy, gdy przy danych tikowych nadchodzących z częstotliwością, co kilku sekund system musi podejmować decyzje, co najmniej w takim właśnie czasie. Jednym z rozwiązań tego problemu jest redukcja przestrzeni wektora wejściowego. W niniejszej pracy do tego celu została zastosowana dyskretna transformacja falkowa. Ponadto ilość iteracji została ustawiona na poziomie najniższym możliwym poziomie. Interfejs użytkownika został zminimalizowany do minimum. Po pierwsze, dlatego aby aplikacja działała efektywniej a po drugie, aby jak najbardziej uprościć proces wspomagania decyzji. Diagram przypadków użycia dla aplikacji H-Adviser przedstawia rysunek 7. Rysunek 6. Diagram przypadków użycia H-Adviser Źródło: opracowania własne 41 Działanie systemu można podzielić na dwa moduły. Pierwszy zbierania danych ma na celu pobranie odpowiedniej ilości danych z serwera dystrybuującego strumienie danych. W tej fazie tworzone są wektory i odkładane w pomięci podręcznej. Gdy ich liczba osiągnie odpowiednią wartość wysyłane są one do klasteryzacji. Za to odpowiedzialny jest drugi moduł klasteryzacji. Działanie modułu zbierania danych można przedstawić za pomocą następujących kroków: Pobieranie danych – algorytm: 1: Zainicjalizuj wartości początkowe. 2: Oczekuj na sygnały. 3: Po otrzymaniu odpowiedniej liczby sygnałów utwórz wektor wejściowy. 4: Przekształć wektor wejściowy według reguł opisanych w rozdziale pierwszym. 5: Odłóż wektor wejściowy na stosie. 6: Gdy liczba wektorów osiągnie założoną ilość prześlij je do modułu klasteryzującego, po czym usuń ze stosu najstarszy wektor i wróć do punktu drugiego. W przeciwnym przypadku wróć do punktu drugiego. 7: Gdy liczba wektorów osiągnie założoną ilość prześlij je do modułu klasteryzującego, po czym usuń ze stosu najstarszy wektor i wróć do punktu drugiego. Algorytm działa aż do momentu, kiedy interakcja użytkownika wyśle komunikat przerywający kolekcjonowanie danych. Tak przygotowany stos wektorów kodowych jest gotowy, aby poddać je klasteryzacji, za co odpowiedzialnych jest drugi moduł systemu. Działanie tego modułu można natomiast opisać następująco: 42 Przygotowanie wektorów do klasteryzacji – algorytm: 1: Oczekuj na wektory wejściowe. 2: Gdy otrzymasz wektory wejściowe zainicjuj algorytm gazu neuronowego. 3: Dokonaj kwantyzacji przestrzeni. 4: Wróć do punktu pierwszego. Algorytm działa aż do momentu, kiedy interakcja użytkownika wyśle komunikat przerywający. Stos wektorów po przekazaniu do modułu klasteryzującego jest w pełni wystarczający do dokonania kwantyzacji przestrzeni cech, z której później będziemy czerpać wiedzę do budowania decyzji inwestycyjnych. 3.5 Wartości początkowe systemu Opis wszystkich parametrów wraz z opisem systemu jest zamieszczony w dodatku C. Tutaj zamieszczona zostaną jedynie wartości domyślne, dla których zostały przeprowadzone symulacje. Przedstawia je tabela 1. Należy zauważyć, iż wartości domyślne nie oznaczają optymalne. Kombinacja wszystkich możliwych ustawień jest nieskończona ponadto dla każdego szeregu czasowe mogą się one różnić. Tabela 1. Domyślne zestawienie parametrów H-Adviser. Nazwa parametru Wartość Falkowa redukcja wymiarów Stopień kompresji falkowej 4 Ilość podciągów poddanych kompresji 3 Długość podciągów 8,16,32 Długość wektora przed kompresją 56 Długość wektora po kompresji 14 Funkcja tworząca zbioru rozmytego klasyfikacji a priori 43 Parametr α funkcji tanh(αx) Poziom akceptacji wektorów Kupno Sprzedaż Gaz neuronowy Początkowy współczynnik sąsiedztwa Końcowy współczynnik sąsiedztwa Początkowy współczynnik uczący Końcowy współczynnik sąsiedztwa Ilość iteracji Promień decyzji kupna Promień decyzji sprzedaży Ilość neuronów Dopuszczalna odległość wektora od klastra Ilość wektorów uczących 1 0,06 -0,06 3 0,01 1,5 0,005 15000 0,04 -0,04 6 10 15 Źródło: opracowanie własne. Ustawienia zostały tak dobrane, aby spełnić ograniczenia przedstawione w poprzednim podrozdziale oraz dać dobre rezultaty podczas klasteryzacji wektorów. 44 ROZDZIAŁ 4 ANALIZA SKUTECZNOŚCI SYSEMU H-ADVISER 4.1 Metodyka analizy skuteczności 4.2 Wybór danych do systemu 4.3 Symulacja zastosowania systemu H-adviser 4.4 Dyskusja wyników W niniejszym rozdziale zostanie przedstawiony model weryfikacji skuteczności systemu wspomagającego decyzje H-Adviser. Zostanie także wykonana sama weryfikacja systemu. Tutaj także zostaną zaprezentowane kryteria wyboru danych do systemu, na których przeprowadzona będzie symulacja. 4.1 Metodyka analizy skuteczności Istnieje wiele podejść do analizy skuteczności systemów transakcyjnych. Jednakże w warunkach rzeczywistych, inwestorzy na rynkach kapitałowych, są zainteresowani tylko i wyłącznie jednych wskaźnikiem – zyskownością. Można uznać, że system jest skuteczny, gdy wartość ta jest większa od zera oraz że jest nieskuteczny w każdym innym razie. Spojrzenie na stopę zwrotu jest najprostszą metodą analizy skuteczności aczkolwiek jest 45 to podejście niewystarczające. Po pierwsze załóżmy, że inwestor działa na runku bardzo dynamicznie zwyżkującym. Uzyskanie wtedy wartości większej od zera będzie niewystarczające. Wypracowanie kilku procentowego zysku w sytuacji, gdy rynek wzrósł dziesięciokrotnie więcej nie można uważać za sukces. Drugim przypadkiem jest wypracowanie zysku mniejszego niż stopa zwrotu wolna od ryzyka. W takim przypadku inwestowanie w ogóle nie ma sensu. Żaden inwestor nie byłby zainteresowany lokowaniem pieniędzy na rynkach kapitałowych, kiedy zyski z tych operacji byłyby mniejsze od zwykłej lokaty bankowej. Ryzyko wynikające z wahania cen papierów wartościowych jest nie warte podejmowania, gdy oczekiwana stopa zwrotu jest mniejsza niż stopa zwrotu z inwestycji niepodlegających częstym zmianom. Dlatego też badając skuteczność systemu wspomagania decyzji będzie brany pod uwagę zysk, ale w odniesieniu do strategii „kup i trzymaj oraz stopy zwrotu z inwestycji wolnej od ryzyka takiej jak lokata bankowa. Strategia „kup i trzymaj” polega na otwarciu pozycji na początku założonego okresu i zamknięciu jej na jego końcu. Jest to bardzo często używana strategia przez inwestorów długo terminowych i jest klasyczną strategią podążania za trendem. Jest to także najczęściej polecana strategia przez zwolenników teorii błądzenia losowego rynków finansowych. Podczas podejmowania decyzji przy strategii „kup i trzymaj” jest wykonywana tylko jedna transakcja w ciągu dnia. W niniejszej pracy każda transakcja jest pozycją długą. W analizowanych danych dominuje trend wzrostowy i zajmowanie pozycji krótkiej jest dużo mniej efektywne. Wszystkie symulacje wykonywane są na danych dziennych tikowych z zagregowanymi do jednej minuty. System weryfikujący decyzje inwestycyjne działa zgodnie z założeniami inwestowania dziennego (ang. day trading). Strategie takie charakteryzują poniższe założenia: • każdy dzień rozpoczynamy z pustym portfelem walorów (posiadamy tylko środki pieniężne), 46 • wszystkie pozycje zamykamy przed zakończeniem dnia; jeśli pozostały jakieś walory na koniec sesji to automatycznie realizowane jest zlecenie PKC (po każdej cenie) na zamknięcie. Wyniki są prezentowane w procentowych wartość bezwzględnych. Przykładowo wskaźnik 102,4% oznacza, że na koniec dnia wartość portfela wynosiła 102,4% wartość środków pieniężnych na początku dnia. Stopa zwrotu z transakcji wynosi 2,4%. We wszystkich transakcja brana będzie pod uwagę prowizja ustalona przez użytkownika. 4.2 Wybór danych do systemu Wszystkie dane do systemu są rzeczywistymi danymi archiwalnymi pobranymi z serwisu www.parkiet.com.pl4. Pliki, które rozpoznaje HAdviser są aplikacji tekstowymi o następującej strukturze (przedstawiony został nagłówek wraz z kilkoma przykładowymi wierszami): <ticker>,<per>,<date>,<time>,<open>,<high>,<low>,<close>,<vol> WIG20_I,1,20030220,100100,1106.53,1106.53,1106.53,1106.53,0 WIG20_I,1,20030220,100200,1107.23,1107.34,1107.23,1107.34,0 WIG20_I,1,20030220,100300,1107.93,1107.93,1107.93,1107.93,0 WIG20_I,1,20030220,100400,1108.30,1108.30,1108.30,1108.30,0 WIG20_I,1,20030220,100500,1108.05,1108.90,1108.05,1108.90,0 WIG20_I,1,20030220,100600,1109.33,1109.91,1109.33,1109.91,0 WIG20_I,1,20030220,100700,1110.50,1110.50,1110.50,1110.50,0 WIG20_I,1,20030220,100800,1110.50,1110.50,1110.17,1110.17,0 WIG20_I,1,20030220,100900,1110.08,1110.08,1109.40,1109.40,0 WIG20_I,1,20030220,101000,1108.88,1108.88,1108.47,1108.47,0 Pierwsza kolumna <ticker> oznacza nazwę waloru, w tym przypadku indeks WIG 20. Kolumna <date> określa datę nadejścia tiku w formacie rrrr-mm-dd, natomiast kolumna <time> określa czas w formacie hhmmss. Kolejne cztery kolumny określają odpowiednio cenę otwarcia, najwyższą i najwyższą w okresie agregacji czasowej oraz cenę zamknięcia. W przypadku minutowych danych tikowych wszystkie te wartości są równe. Ostatnia kolumna oznacza 4 link bezpośredni: http://www.parkiet.com/dane/dane.jsp 47 wolumen transakcji. W danych udostępnionych przez serwis www.parkiet.com.pl wartość ta zawsze jest równa 0. Analiza skuteczności została przeprowadzona na podstawie indeksu WIG20. Kontrakty terminowe na WIG 20 są najpłynniejszym walorem notowanym na Giełdzie Papierów Wartościowych w Warszawie. Dane pochodzą z pięciu lat (od 2003-02-20 do 2007-03-22). Do analizy wybrano wszystkie notowania dzienne, które spełniły dwa warunki: 1. odchylenie standardowe wynosiło więcej niż 11, 2. różnica pomiędzy ceną najwyższą a najniższą wynosiła więcej niż 60. Kryteria te dodano, aby wyeliminować szeregi czasowe poruszające się w trendzie bocznym. Uwzględnienie danych o dużej wariancji i dużej amplitudzie zmian pozwoli wybrać te szeregi, w których ruchy cen są istotne i pozwolą osiągnąć zauważalne zyski przy poprawnej interpretacji wzorców jak i zauważalne straty przy błędnych decyzjach, 4.3 Symulacja zastosowania systemu H-adviser W przeprowadzonej symulacji, zastosowania systemu wspomagania decyzji H-Adviser, wykorzystano 128 szeregów czasowych, które spełniały warunki wymienione w poprzednim podrozdziale. Decyzja inwestycyjna była podejmowana przez program zgodnie z definicją 3.2 przedstawioną w poprzednim rozdziale dla pięciu okresów. System wymagał podwójnego potwierdzenia sygnału kupna w okresie pięciu decyzji. Algorytm podjęcia decyzji można opisać w pseudo kodzie w następujący sposób: Podjęcie decyzji - algorytm 1: Utwórz pięcioelementową tablicę decyzji D 2: Jeśli prognoza jest wzrost to dodaj do tablicy D ‘+’ w przeciwnym razie dodaj D ‘-‘ 3: Jeśli ilość elementów w tablicy D jest większe niż 5 usuń pierwszy element 48 4: Jeśli ilość ‘+’ w tablicy D wynosi 3 otwórz długą pozycję 5: Jeśli ilość ‘-‘ w tablicy D wynosi 3 otwórz krótką pozycję Algorytm działa aż do momentu, kiedy interakcja użytkownika wyśle komunikat przerywający. Wraz z każdą otwartą pozycją została ustawiana wartość stop-loss i stop-gain na poziomie 5% w stosunku do ceny otwarcia pozycji. Jest to bardzo duża wartość dla kontraktów terminowych jednakże ustawienie jej na takim poziomie bardziej rygorystycznie pozwoli ocenić działanie algorytmu wyszukiwania wzorców. W rzeczywistości można te wartości zmniejszyć. Obserwując wyniki umieszczone w dodatku C ustawienie poziomu stop-loss na wysokości 2% poprawiłoby wyniki ostateczne (zwiększyłoby stopę zwrotu). Celem badania jednak maksymalizacja zysków była celem pośrednim. Głównym celem była weryfikacja hipotezy postawionej we wstępie, iż istnieją wzorce w szeregach czasowych i ich wykrycie pozwoli osiągnąć ponadprzeciętne zyski. Jedyna możliwość zamknięcia pozycji to osiągnięcie któregoś z tych poziomów. Otwarcie każdego kontraktu terminowego pociąga za sobą naliczenie prowizji. Zgodnie z cennikiem domu maklerskiego bossa.pl5 koszt otwarcia jednego kontraktu wynosi 9.90 pln. Taka też wartość jest odejmowana każdorazowo przy otwieraniu nowej pozycji. W dodatku C zestawiono wszystkie 128 szeregów czasowych użytych do analizy skuteczności systemu wraz z odniesieniem do strategii „kup i trzymaj”. Szeregi są wybrane zgodnie z kryteriami umieszczonymi w podrozdziale 4.2 niniejszego rozdziału. Dodatkowo zamieszczono dwie kolumny z opisem statystycznym szeregu. Maksymalna amplituda określa rozpiętość pomiędzy minimum i maksimum szeregu w danym dniu. Idea 5 http://bossa.pl/oferta/internet/kontrakty/#prowizje 49 wybrania tych dwóch wartości do opisu szeregu czasowego została umieszczona również w podrozdziale 4.2 niniejszego rozdziału. 4.4 Dyskusja wyników Podsumowując w całym okresie strategia „kup i trzymaj” przyniosła 3,97% zysku natomiast konsekwentne podążanie za decyzjami systemu wspomagającego decyzje H-Adviser wyniosło 31,05%. Kumulatywny przyrost stóp zwroty został przestawiony na rysunku 7. Używając żargonu giełdowego stopy zwrotu ze strategii kup i trzymaj są w trendzie bocznym, natomiast przy podążaniu za decyzjami hybrydowego systemu wspomagania decyzji H-Adviser są w trendzie wzrostowym. Ponadto przy korzystaniu ze strategii kup i trzymaj wielokrotnie następował spadek kapitału poniżej wartości początkowej. 40% 35% 30% 25% 20% 15% 10% 5% 0% -5% -10% Kup i trzymaj H-Adviser Rysunek 7 Porównanie stop zwrotu Źródlo: Opracowanie własne przy pomocy program MS Excel W porównaniu do inwestycji wolnej od ryzyka przy 128 dniach inwestycyjnych żadna z dostępnych ofert istniejących na rynku nie byłaby większa od uzyskanego wyniku 31,05%. 50 Zestawienie stosunku błędnych decyzji do poprawnych zawiera rysunek 8. Ilość poprawnych decyzji, która również jest dobrym wskaźnikiem skuteczności rozpoznawania i poprawnej klasteryzacji wzorców kupna i sprzedaży, do decyzji błędnych w wykonanym badaniu wynosi 55,91% przy korzystaniu z systemu H-Adviser. Przy strategii kup i trzymaj wyniósł on 47,24%. Ten współczynnik nie jest idealny, ale można go zaakceptować biorąc pod uwagę uzyskane stopy zwrotu. Jednakże należy mieć na uwadze, iż wybrane szeregi czasowe charakteryzowały się dużą wariancją i maksymalna amplitudą zmian. W sytuacji trendu bocznego przy takim stosunku decyzji błędnych i poprawach i po uwzględnieniu prowizji jest prawie pewne, iż przewidywana stopa zwrotu nie osiągnie oczekiwanego poziomu. H - Adviser 40,16% 59,84% Decyzje poprawne Decyzje błędne Kup i trzymaj 47,24% 52,76% Rysunek 8 Stosunek błędnych decyzji do poprawnych Źródło: Opracowanie własne przy pomocy programu MS Excel 51 Szczegółowa podsumowanie skuteczności systemu wraz z możliwościami jego zastosowania oraz dalszym rozbudowaniem zostanie przedstawiona w kolejnym rozdziale. 52 ZAKOŃCZENIE W niniejszej pracy przedstawiono hybrydowe podejście do wyszukiwania wzorców kupna i sprzedaży w finansowych szeregach czasowych. Przedstawiono falkowe podejście do problemu redukcji wymiarów wektora wejściowego. Przynależność do danego wzorca opisano za pomocą teorii zbiorów rozmytych natomiast sama klasteryzacja została wykonana za pomocą sieci neuronowej – samoorganizującej się struktury opartej na algorytmie gazu neuronowego. W przeciwieństwie do metod analitycznych, w których stopień przynależności do wzorca jest określony z góry założonymi zasadami, zastosowano podejście, takie, że to sam system ma wydobyć tę wiedzę z danych prezentowanych systemowi w procesie uczenia. Taki sposób pozwala na dynamiczne przekształcanie modelu ekspertyzy i jego adaptacje do różnych sytuacji mogących zaistnieć na rynku. Pozwala również lepiej dopasować się systemowi do specyficznych charakterystyk różnych walorów. Wydajna klasteryzacja, czyli taka, która mogłaby być przeprowadzona w akceptowalnym przez użytkownika czasie oraz generująca zadowalające efekty liczone w ilości dobrych decyzji inwestycyjnych, była możliwa dzięki zastosowaniu w systemie między innymi teorii falek. Dzięki niej dane pochodzące z rynków inwestycyjnych mogły zostać na tyle uproszczone, że była możliwa taka ekstrakcja wiedzy w akceptowalnym czasie. Zastosowanie 53 transformacji falkowej umożliwiło bardzo dużą redukcje złożoności wprowadzonych danych jednakże beż starty informacji (w sensie Shanon’a). Bardzo ważnym i trudnym ograniczeniem systemu postawionym w pracy było, aby decyzje przez niego podejmowane mogły być wykorzystywana w czasie rzeczywistym na przeciętnym komputerze domowym. Dzięki wykorzystanym algorytmom udało się ten cel osiągnąć. Cała wstępna analiza danych, optymalizacja, uczenie oraz ekstrakcja wiedzy przy domyślnych ustawieniach systemu może być zastosowana do analizowania finansowych strumieni danych w czasie rzeczywistym po agregacji sygnałów do okresów dwu sekundowych (cały proces od uzyskaniu sygnału do podjęcia decyzji zajmuje systemowi 1.63s.6). System był projektowany, aby stał się pomocnym narzędziem dla inwestorów giełdowych i wspomóc ich proces podejmowania decyzji. We wstępie pracy postawiono hipotezy, iż finansowe szeregi czasowe zawierają wzorce, których odnalezienie – o ile istnieją, mogłoby skutkować w decyzjach inwestycyjnych, które prowadziłyby do osiągnięcia ponad przeciętnych zysków. Podczas badania analizie poddano 1026 dziennych szeregów czasowych zagregowanych do jednej minuty z okresu ponad 5 lat (od 200302-20 do 2007-03-22). Z tej liczby wybrano 127 szeregi, które posiadały duże odchylenie standardowe i amplitudę zmian. Analizując systemem wspomagania decyzji H-Adviser wybrane dane otrzymano potwierdzenie hipotezy postawionej wstępie w stosunku do wybranych szeregów. Porównanie przedstawione, po wykonaniu symulacji, w poprzednim rozdziale zysków osiągniętych podczas podążania za decyzjami systemu HAdviser w odniesieniu do strategii „kup i trzymaj” świadczą o istnieniu takich wzorców. Ponadto świadczą one także za tym, iż systemowi udało się te wzorce rozpoznać. 6 Na komputerze z procesorem Inter Core Duo T7250 taktowanym zegarem 2.00 GHz i wyposażonym w 1 GB pamięci RAM 54 W porównaniu do strategii „kup i trzymaj” system osiągnął dużo większą stopę zwrotu. Ponadto wielokrotnie udało mu się osiągnąć większe zyski od strategii „kup i trzymaj”, nawet, gdy generowała ona zyski znacząco większe od zera. Dalszy rozwój algorytmów klasteryzujących oraz redukujących wielowymiarowość przestrzeni danych, może skutkować jeszcze większym wzrostem skuteczności systemu, rozumianej, jako lepszego dopasowania skawntyzowanej przestrzeni cech do rzeczywistych charakterystyk szeregów czasowych. Cel taki może być osiągnięty na przykład poprzez zwiększenie ilości iteracji procesu uczenia oraz wykonania bardziej wnikliwej wstępnej analizy danych. Osiągnąć to można albo poprzez wykorzystanie algorytmów o mniejszej złożoności obliczeniowej albo też zwiększeniem mocy obliczeniowej komputerów, na których klasteryzacja będzie przeprowadzana. W tej chwili system nie analizuje podobieństw pomiędzy szeregami wprowadzonymi do systemu, a tymi, w których decyzje inwestycyjne były błędne. Jak pokazano w pracy system może nie generować zadawalających stóp zwrotu przy silnym trendzie bocznym i małej wariancji szeregów czasowych. Rozbudowując moduł wstępnej analizy danych o dodatkowe narzędzia analityczne, które mogą być oparte tak na algorytmach sztucznej inteligencji (na przykład algorytmów ewolucyjnych, lub też dedykowanych sieci neuronowych) jak i statystycznych, można by dokładniej weryfikować przydatność wektora wejściowego w procesie klasteryzacji. Dodatkowo zwiększenie efektywności można by uzyskać poprzez wnikliwszą analizę częstotliwości szeregów czasowych i dopasowanie do niej stopnia kompresji falkowej. Ponadto należy zauważyć, że skuteczność metody została potwierdzona w stosunku do strategii „kup i trzymaj”. Bardzo ciekawe wyniki mogłyby dostarczyć porównanie strategii innych systemów w stosunku do programu wspomagania decyzji H-Adviser. 55 Należy jeszcze podkreślić, że oprogramowanie obsługujące system w formie, w jakiej został on zaprezentowany w pracy, posiada interfejs użytkownika, który jest nieprzyjazny dla użytkownika. Wynika to, iż jest ono w pełni konfigurowalne. Każdy aspekt budowy systemu, każdy wskaźnik i parametr można ustawić w głównej formatce programu. Ilość parametrów i ich współzależności, jak i samo zrozumienie działania każdego parametru, jest niepotrzebnym obciążeniem dla potencjalnego użytkownika. Aby umożliwić realną przydatność programu H-Adviser należałoby zbudować interfejs graficzny, który będzie zorientowany na użytkownika a jego wiedza o parametrach potrzebnych do działania systemu będzie bardzo powierzchna. Interfejs zaproponowany w niniejszej pracy przez autora jednakże miał umożliwić pełną konfigurowalność algorytmów z poziomu aplikacji a nie z poziomu kodu. Celem programu było zweryfikowanie hipotez zawartych we wstępie, co wymagało dostępu do wszystkich parametrów algorytmów – tak tych kluczowych jak i tych, które można by pominąć w wersji skierowanej do końcowego użytkownika. W dalszych pracach nad systemem można by także rozważyć utworzenie modułu, którego celem było by dynamiczne, podczas klasteryzacji on-line, ustalanie optymalnych wartości parametrów. Efektem byłaby większa elastyczność systemu, która pozwoliłaby mu się automatycznie dostrajać do warunków aktualnie panującym na różnych rynkach. Rezultat taki może być osiągnięty za pomocą algorytmów genetycznych gdzie funkcją błędu była by stopa zwrotu. Struktura i metoda działania systemu umożliwia, po pewnych modyfikacjach, skierowanie go tak do przeciętnego użytkownika zainteresowanego inwestycjami na rynkach finansowych jak i może również działać, jako część systemu agendowego wspomnianego w treści pracy [Korczak 2007]. System jest zaimplementowany dla platformy .NET. Bez większych nakładów pracy może być dzięki temu przeniesiony na serwery 56 ASP.NET, i pracować, jako samodzielna aplikacja on-line w dowolnej przeglądarce www za pomocą protokołu http. Podsumowując badanie zawarte w niniejszej pracy można przyjąć hipotezę przyjętą na początku pracy, iż w szeregach czasowych, na których przeprowadzono badanie, istnieją wzorce poprzedzające wzrosty i spadki wartości szeregu za prawdziwą. Dodatkowo systemowi wspomagania decyzji H-Adviser udało się te wzorce odnaleźć w akceptowalnym czasie i uzyskać ponad przeciętne zyski na Warszawskiej Giełdzie Papierów Wartościowych analizując kontrakty terminowe na indeks WIG 20. Należy jeszcze raz podkreślić, że badanie jedynie ukazało istnienie takich wzorców w dziennych notowaniach WIG20 o dużej wariancji i amplitudzie zmian. Pełna weryfikacja hipotezy zawartej we wstępie wymaga dalszych prób na znacznie bogatszym materiale empirycznym. 57 DODATEK A TEORIA FALEK Dyskretna transformacja falkowa [Meyer 1995] jest bardzo częstą techniką wykorzystywaną we wstępnej analizie danych dzięki bezstratnej (teoretycznie) i bardzo szybkiej kompresji obiektów (obrazów, szeregów liczbowych). Dzięki niej można zarówno zredukować ilość wymiarów wektora wejściowego do docelowego systemu analizującego dane (np. klasyfikującego, predykcyjnego) jak i usunąć część informacji uznanych przez transformacje, jako szum lub redundancje danych, jednakże pozostawiając w sygnale informacje oryginalne (w sensie Shanona) [Shanon 1948]. A.1 Przestrzeń funkcyjna L2 (ℜ ) Sygnał lub funkcja f (t ) w większości przypadków może być lepiej zanalizowana, opisana i przetworzona, gdy wyrazimy ją, jako liniową kombinację postaci: f (t ) = ∑ aψ (t ) Wyś gdzie l ∈ Z i oznacza indeks sumy (skończony lub nieskończony), a ∈ ℜ , natomiast ψ jest zbiorem funkcji rzeczywistych. Jeśli powyższy rozkład jest jednoznaczny wtedy zbiór funkcji ψ t nazywamy bazą przestrzeni funkcyjnej 58 (przestrzeń liniowa gdzie zamiast wektorów mamy funkcje, natomiast skalarami są liczby rzeczywiste albo zespolone). Jeśli iloczyn skalarny wszystkich funkcji ψ jest równy zero wtedy bazę tą nazywamy ortogonalną, a zapisujemy: ψ k (t ),ψ (t ) = ∫ψ k (t ) ⋅ψ (t )dt = 0, ∀ k ≠ k ,∈Z Wyś Pozwala nam to wyznaczyć współczynniki a za pomocą iloczynu skalarnego w następujący sposób: a = f (t ),ψ (t ) = ∫ f (t ) ⋅ψ (t )dt Wyś Tak skonstruowaną przestrzeń rozpiętą na funkcjach ψ k nazywamy przestrzenią Hilberta L2 (ℜ ) lub przestrzenią funkcji całkowalnych z kwadratem7. Podsumowując funkcja zmiennej rzeczywistej f (t ) przynależy do przestrzeni L2 (ℜ ) wtedy i tylko wtedy, gdy f (t ) jest całkowalne, to 2 znaczy, jeśli: ∫ f (t ) 2 dt < ∞ Wyś t∈ℜ Jej iloczyn skalarny określamy zgodnie z równaniem (16), natomiast normę definiujemy jako: f = f, f = ∫ f (t ) 2 dt Wyś t∈ℜ Zapisujemy to krócej f (t ) ∈ L2 . A.2 Definicja falki Falkę definiujemy [Daubechies 1992] jako funkcje rzeczywistą ψ (u ) ∈ L2 (ℜ ) jeśli spełnione są następujące warunki: 7 „L” oznacza całkę Lebesgue’a, „2” określa kwadrat modułu funkcji, funkcji ℜ wskazuje na rzeczywiste parametry 59 ∞ ∫ψ (u )du = 1 2 Wyś −∞ ∞ ∫ψ (u )du = 0 Wyś −∞ Rysunek 9 Wykresy trzech przykładowych falek Źródło: [Percival 1] Transformatą falkową będziemy nazywać grupę funkcji ψ a.b , taką, że: t −b dt a ψ a ,b (t ) = w(a ) ⋅ψ Wyś Gdzie a i b są parametrami skalującymi natomiast w(a) jest funkcją ważącą zapewniającą, że energia falki nie zmienia się ze zmianą skali, czyli ψ a ,b = ψ = a ∈ ℜ + . W większości przypadków za w(a) kładziemy a −1 / 2 . Wtedy transformata flakowa przybiera postać: ψ a ,b (t ) = Jednakże formuła (23) 1 a t −b dt a ψ Wyś jest właściwa jedynie dla sygnałów ciągłych. W niniejszej pracy sygnał wejściowy ma charakter dyskretny. Aby umożliwić zastosowanie powyższej transformaty należy dokonać próbkowania sygnału wejściowego. Osiągniemy to stosując dyskretyzację logarytmiczną skali a i uzależnimy ją od wielkości kroku pomiędzy odległościami od kolejnych parametrów b. Taka dyskretna transformata falkowa ma postać: 60 ψ m ,n (t ) = t − nb0 a 0m ⋅ m a 0m a 0 1 Wyś Dobór parametrów a0 i b0 ma kluczowe znaczenie, aby funkcje ψ a ,b utworzyły bazę ortogonalną w L2 . Najpopularniejszym wyborem tych parametrów jest odpowiednio przyporządkowanie im wartości liczbowych 2 i 1. Mówimy wtedy o próbkowaniu diadycznym. Falka (24) przyjmuje wtedy postać: Wyś ψ m ,n (t ) = 2 − m / 2 ⋅ψ (2 − m t − n ) Wyś ψ m ,n (t ) = t − n ⋅ 2m ⋅ m 2m 2 1 co po uproszczeniu daje nam: Ponieważ falka podstawowa ma postać: ψ m ,0 (t ) = 2 − m / 2 ⋅ψ (2 − m t ) Wyś ψ m ,n (t ) = ψ m ,0 ⋅ψ (t − 2 − m ) Wyś więc co oznacza, że 2 m jest krokiem, z jakim przesuwane są w czasie falki ψ m.n na poziomie skali m. Natomiast kolejne potęgi dwójki wyznaczają próbkowanie na osi skali. Ponadto zbiór falek opisanej wzorami (25)-(28) są ortogonalne względem siebie: ∞ 1 ∫ψ (t ) ⋅ψ (t )dt = 0 m ,n m ', n ' −∞ ⇔ m = m '∧ n = n ' ⇔ m ≠ m '∧ n ≠ n ' Wyś A.3 Analiza wielorozdzielcza Rozkład sygnału wejściowego nosi nazwę analizy wielorozdzielczej [Mallat 1989]. Sygnał f (t ) ∈ L2 rozkładany jest na składowe, które lokalizowane są w podprzestrzeniach rozpiętych na odpowiednich funkcjach skalujących. Funkcja skalująca ma taką samą postać jak falka (porównaj ze wzorem (27)): 61 φ m ,n (t ) = 2 − m / 2 ⋅ φ (2 − m t − n ) Wyś Jednakże w przeciwieństwie do falki jej całka wynosi 1 (całka falki zgodnie z założeniem (21) wynosi 0): ∞ ∞ −∞ −∞ ∫ φ0,0 (t )dt = ∫ φ (t ) = 1 Wyś Podprzestrzenie takie definiujemy następująco (przestrzeń z bazą ortogonalną daną funkcją skalującą { ( (30)): )} Vm = Span φ n 2 −m t = Span{φ m ,n (t )} n Wyś n Największą rozdzielczość wiążemy z przestrzenią L2 . Schematycznie ilustruje zagnieżdżenie podprzestrzeni. Przestrzenie rozpinane na odpowiednich funkcjach spełniają poniższe warunki: {0} ⊂ … ⊂ V− 2 ⊂ V−1 ⊂ V0 ⊂ V1 ⊂ V2 ⊂ … ⊂ L2 lub indukcyjnie: ∀ (Vm ⊂ Vm +1 ) Wyś j∈Z przy czym: ∪V m = L2 oraz m∈Z ∩V m = {0} m∈Z Rysunek 10 Schematyczne zagnieżdżenie podprzestrzeni funkcjach falkowych Źródło: [Burrus 2001] L2 rozpinanych na 62 Ponadto spełnione muszą być jeszcze warunki: f (t ) ∈ Vm ⇔ f (2 m t ) ∈ V0 Wyś co oznacza, że wszystkie przestrzenie Vm są przeskalowanymi odmianami przestrzeni V0 . Następnym warunkiem jest niezmienniczość przestrzeni Vm względem przesunięć całkowitych, to znaczy: ∀ ( f (t ) ∈ V0 ⇒ f (t − n ) ∈ V0 ) Wyś n∈Z co uwzględniając (34), prowadzi do niezmienniczości Vm względem przesunięć będących całkowitą wielokrotnością 2 m . Funkcja φ zawiera się w V0 oraz w V1 , przestrzeni rozpiętej przez φ (2t ) , tak więc φ (t ) możemy zapisać w postaci ważonej sumy przeskalowań φ (2t ) : φ (t ) = ∑ hn 2 ⋅ φ (2t − n ) Wyś n gdzie hn jest ciągiem liczb rzeczywistych lub zespolonych, nazywanym współczynnikami funkcji skalującej. Przez odpowiedni wybór tych parametrów możemy znaleźć rodzinę falek optymalną dla reprezentacji danej klasy sygnałów. Sygnał znajdujący się w przestrzeni Vm można wyrazić wzorem: x m (t ) = ∞ ∑S m, n ⋅ φ m.n (t ) Wyś n = −∞ gdzie współczynniki aproksymacji S m, n wyrażone są wzorem: ∞ S m ,n = ∫ x(t ) ⋅ φ (t )dt m,n Wyś −∞ Mając funkcję skalującą φ używamy ją do zdefiniowania głównej funkcji falkowej. Zdefiniujemy przestrzeń Vm następująco: Vm −1 = Vm ⊕ Wm Wyś gdzie Wm oznacza ortogonalne dopełnienie przestrzeni Vm w Vm +1 . Analogicznie do (32) możemy ją zdefiniować: Wm = Span{ψ m ,n } n Wyś 63 Możemy stwierdzić, że W m ⊥ Wk ⇔ j ≠ k Wyś W m ⊂ Vk ⊥ W k ⇔ j > k tak więc: V1 = V0 ⊕ W0 , V2 = V0 ⊕ W0 ⊕ W1 I ogólnie (42) L2 = V0 ⊕ W0 ⊕ W1 ⊕ W2 ⊕ ... Schematycznie ilustruje to rysunek 11. Istnieją bardzo dokładne procedury znajdowania ψ mając dane φ ([Daubechies 1992] rozdział 5.1). Jedną z możliwości ([Daubechies 1992] twierdzenie 5.1.1.), która została wykorzystana w tej pracy, jest ustalenie funkcji falkowej w następujący sposób: ψ (t ) = ∑ (−1) n hn −1 2 ⋅ φ (2t − n ) Wyś n Sygnał zawarty w przestrzeni Wm można uzyskać stosując wzór: ∞ ∑T d m (t ) = m,n ⋅ φ M .n (t ) Wyś n = −∞ Gdzie transformata wyraża się wzorem: ∞ Tm ,n = ∫ x(t ) ⋅ψ (t )dt Wyświetlany tekst musi mie m ,n −∞ Rysunek 11 Schematyczne zagnieżdżenie podprzestrzeni funkcjach falkowych wraz z funkcjami skalującymi Źródło: [Burrus 2001] L2 rozpinanych na 64 Cały sygnał zawarty w L2 możemy uzyskać syntetyzując (37) i (38): ∞ ∑ S m0 ,n ⋅ φm.n (t ) + x(t ) = n = −∞ m0 ∞ ∑ ∑T m ,n ⋅ φ M .n (t ) Wyświetlany tekst musi mie m = −∞ n = −∞ Tak, więc sygnał jest przedstawiony, jako synteza aproksymacji na danym poziomie oraz sumy detali do danego poziomu włącznie. Upraszczając możemy zapisać powyższe równanie, jako: x(t ) = x m0 (t ) + m0 ∑ d (t ) Wyświetlany tekst musi mie m m = −∞ Z równania (48) widać bezpośrednio główną ideę analizy wielorozdzielczej. x m −1 (t ) = x m (t ) + d m (t ) Wyświetlany tekst musi mie Jeśli dodamy do detalu sygnału na założonym poziomie (indeks m) do aproksymacji na tym samym poziomie to otrzymamy aproksymacje na niższym poziomie, czyli o zwiększonej rozdzielczości (indeks m-1). Uogólniając odpowiada to założeniom (42). A.4 Falki Daubechies Falki Daubechies, nazwane tak ze względu na ich twórcę Ingrid Daubechies8, są rodziną falek ortogonalnych szczegółowo opisanych w [Daubechies 1992]. Falki te oznaczane D2-D20 (tylko parzyste indeksy oznaczające niezerowe współczynniki funkcji skalującej) są bardzo często używane, między innymi, ze względu na bardzo małą złożoność obliczeniową, która wynosi Ο(n ) . Porównywalnie powszechnie używana szybka transformacja Fouriera ma złożoność obliczeniową Ο(n ⋅ log n ) . Graficzne porównanie przedstawia rysunek 12. W niniejszej pracy falką używaną w analizie sygnału będzie D4, czyli falka Daubechies o czterech współczynnikach funkcji skalującej. 8 Belgijski fizyk i matematyk urodzona w 1954 roku, aktualnie profesor na uniwersytecie Prinstone, New Jersey, USA 65 Rysunek 12 Porównanie złożoności obliczeniowej Szybkiej Transformacji Falkowej i Szybkiej Transformacji Fouriera Źródło: opracowanie własne. Rysunek 13 Falka i funkcje skalujące D4 Źródło: opracowanie własne przy użyciu MATLAB. 66 Z równania (36) wiemy, że funkcja skalująca dla czterech parametrów (n=4) ma postać: φ (t ) = 2 (h0φ (2t ) + h1 (2t − 1) + h2 (2t − 2) + h3 (2t − 3)) Wyś a z równania (40) odpowiadająca mu funkcja falkowa: ψ (t ) = 2 (h3φ (2t ) − h2 (2t − 1) + h1 (2t − 2) − h0 (2t − 3)) Wyś Ponadto załóżmy, że współczynniki hn spełniają poniższe równania: ∑h n =2 Wyś n ∑h h n n+2k ' n 2 k ' = 0 = 0 k ' ≠ 0 Wyś Powyższe warunki wynikają z tego, że chcemy, aby utworzone falki były ortogonalne. W naszym przypadku dla falki D4, warunki te przyjmują postać: h0 + h1 + h2 + h3 = 2 Wyświetlany tekst musi mie h02 + h12 + h22 + h32 = 2 Wyświetlany tekst musi mie Ponadto Daubechies żąda aby współczynniki spełniały warunek: N n −1 ∑ (− 1) n hn n m = 0 Wyświetlany tekst musi mie n dla arbitralnie wybranego m. Tak, więc dla m=0 i m=1 odpowiednio otrzymujemy równania: Rozwiązując równania h0 − h1 + h2 − h3 = 0 Wyświetlany tekst musi mie − h12 + 2h22 − 3h32 = 0 Wyświetlany tekst musi mie (53), (54), (56) i (57) otrzymujemy współczynniki (w obliczeniach należy uwzględnić jeszcze parametr normalizujący (w niniejszej pracy przyjęto 1 2 h0 = ): 1+ 3 3+ 3 3− 3 1− 3 h1 = h2 = h3 = 4 4 4 4 Wyświetlany tekst musi mie oraz h0 = 1− 3 3− 3 3+ 3 1+ 3 h1 = h2 = h3 = 4 4 4 4 Wyświetlany tekst musi mie 67 Współczynniki (58) odpowiadają funkcji skalującej φ (t ) natomiast (59) φ (− t ) . Mając te współczynniki możemy zdefiniować już falkę. A.5 Dekompozycja sygnału za pomocą falki D4 Rozkładając sygnał wejściowy na składowe, z każdym krokiem pozbywamy się pewnej ilości detali zakłócających sygnał. Kolejne przestrzenie Vm zawierają odpowiednie aproksymacje sygnału wejściowego, natomiast przestrzenie Wm detale usunięte z sygnału. Mając na uwadze ortogonalność przestrzeni możemy być pewni, że nie nastąpi redundancja sygnału oraz każdy detal zostanie wyeliminowany tylko raz. Na rysunku 14 widać dekompozycje silnie zaszumionej funkcji sin(x) wraz z detalami usuniętymi w każdym kroku dekompozycji. Sygnał wejściowy możemy przedstawić, jako sumę kolejnych detali wraz z ostatnią aproksymacją. Odnosząc się do oznaczeń na rysunku sygnał ma postać s = a 7 + d 7 + d 6 + d 5 + d 4 + d 3 + d 2 + d1 co jest zgodne z założeniami (42). Aby dokonać rekurencyjnie wzór (48). dekompozycji sygnału wejściowego stosujemy Zaczynając od skali m-1=0 otrzymujemy sygnał dla skali m=1: x1 (t ) = x0 (t ) − d1 (t ) Wyświetlany tekst musi mie następnie dla skali m=2: x 2 (t ) = x0 (t ) − d1 (t ) − d 2 (t ) Wyświetlany tekst musi mie i dalej: x 2 (t ) = x0 (t ) − d 1 (t ) − d 2 (t ) − d 3 (t ) Ilustruje to rysunek 15. Wyświetlany tekst musi mie 68 Rysunek 14 Dekompozycja zaszumianej funkcji sinus na aproksymacje a1..a9 oraz detale d1..d9 Źródło: opracowanie własne przy użyciu MATLAB Rysunek 15 Dekompozycja szeregu. Źródło: [Burrus 2001]. 69 Rysunek 16 Schemat dekompozycji wektora Źródło: [Burrus 2001]. Można zauważyć, że n sukcesywnie podwaja się z każdą iteracją algorytmu. Dla m=1 mamy 2M/21=N/2 współczynników aproksymacji. Dla m=2 mamy już 2M/22=N/4. Rozkładając wektor zawierający osiem składników otrzymujemy ( S 0,0 , S 0,1 , S 0, 2 , S 0,3 , S 0, 4 , S 0,5 , S 0, 6 , S 0, 7 ) wektor w pierwszej ( S1, 0 , S1,1 , S1, 2 , S1,3 , T1, 0 , T1,1 , T1, 2 , T1,3 ), ( S 2,0 , S 2,1 , T2, 0 , T2,1 , T1, 0 , T1,1 , T1, 2 , T1,3 ) i tak dalej. w iteracji kolejnej 70 DODATEK B OPIS PROGRAMU H-ADVISER B.1 Ogólna charakterystyka H-Adviser jest programem autorskim wykonanym na potrzeby weryfikacji hipotez zawartych w niniejszej pracy. Został napisany w języku C# i działa na platformie .NET. Została ona utworzona przez Microsoft i zapewnie niezależność kodu od systemu, na którym będzie on wykonywany. Uruchomienie wykonawczego, jego wymaga które www.micriosoft.com można jednak zainstalowania pobrać (Microsoft .NET bezpośrednio Framework środowiska ze strony Version 2.0 Redistributable Package)9. W sytuacji, gdy używanym systemem jest MS Vista wtedy nie jest to koniecznie. System ten ma standartowo zainstalowane wyżej wymienione środowisko uruchomieniowe. Program dołączony jest do pracy w wersji instalacyjnej. Instalacja nastąpi po uruchomieniu aplikacji setup.exe. Umieści on system wspomagania decyzji na komputerze użytkownika. W systemie MS Windows uruchomić go będzie można poprzez wybranie w menu „Start” folderu H-adviser i kliknięcie aplikacji o tej samej nazwie. 9 Bezpośredni odnośnik: http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D8EDD-AAB15C5E04F5&displaylang=en 71 Do programu dołączono również pliki z danych, na których wykonana była weryfikacja hipotez zawartych w pracy. B.2 Panel wyboru danych i ustawień dla klasteryzacji Parametry falkowa redukcji wymiarów: • stopień kompresji – stopień kompresji podciągów ciągu wejściowego utworzonego z współrzędnych wektora wejściowego; przy stopniu kompresji 4x podciąg o długości 32 zostanie zredukowany do ciągu o długości 8; • podciągi wektora wejściowego – wektor wejściowy jest dzielony na mniejsze części w celu uzyskania zmiany istotności wpływu danych odległych na decyzje inwestycyjną; z powodu zastosowania dyskretnej transformacji falkowej wielkość podciągu musi być potęgą dwójki; 72 • ilość podciągów wektora – liczba na jaką zostanie podzielony wektor wejściowy; Parametry gazu neuronowego • początkowy współczynnik sąsiedztwa – szczegółowo opisany w rozdziale 2.4 „Algorytm gazu neuronowego”; • końcowy współczynnik sąsiedztwa – jak wyżej; • początkowy współczynnik uczący – jak wyżej; • końcowy współczynnik uczący – jak wyżej; • ilość neuronów – jak wyżej; • ilość iteracji – ilość powtórzeń procesu uczenia • promień decyzji kupna – decyzja inwestycyjna reprezentowana jest poprzez liczbę rozmytą osadzoną w przedziale [-1,1] gdzie 0 oznacza brak decyzji; ustalając promień decyzji można rozciągnąć tę wartość na większy przedział; na przykład ustalając poziom na 0,1 wszystkie decyzje z przedziału [0;0,1] będą uważane za niewystarczające do podjęcia decyzji inwestycyjnej; • promień decyzji sprzedaży – jak wyżej; • dopuszczalna odległość od klastra – odległość wektora od środka wieloboku Woronoja liczony w normie euklidesowej; • ilość wektorów uczących – ilość wektorów, które będą przekazane do procesu uczenia; Poziom akceptacji wektorów • kupno – klasa przynależności od której wektory są brane pod uwagę w procesie klasteryzacji jako kodujące wzorzec kupna; • sprzedaż – jak wyżej, z tym że dotyczy wzorca sprzedaży; Funkcja tworząca zbioru rozmytego klasyfikacji a priori • współczynnik funkcji – współczynnik α funkcji tworzącej zbiór rozmyty tanh(αn) szczegółowo opisany w rozdziale 1.3; 73 B.2 Panel klasteryzacji Większą część okna zajmuje dziennik zdarzeń, w którym ukazywane są wszystkie komunikaty systemu. Przykładowe komunikaty mogą mieć następującą postać: 2008-05-30 17:53:14 > Otrzymano wartość: 12,25 Przygotowano wektor do wstępnej analizy: 12,3 12,3 12,3 12,3 12,25 12,25 12,25 12,25 12,2 12,2 12,2 12,25 12,2 12,2 12,2 12,2 12,25 12,25 12,25 12,25 12,25 12,25 12,2 12,25 12,25 12,25 12,25 12,25 12,25 12,25 12,25 12,3 12,25 12,25 12,25 12,25 12,25 12,25 12,25 12,25 12,25 12,25 12,25 12,25 12,2 12,25 12,2 12,25 12,2 12,2 12,2 12,25 12,25 12,3 12,25 12,25 Przygotowano wektor do klasyfikacji: 0,353 -1 0,795 -0,03 0,353 1 0,353 0,294 0,795 -0,03 0,353 0,353 0,353 Wektor przyjęto (klasa: 0,39) 74 W tej wersji systemu jedynie za pomocą tych czterech komunikatów system komunikuje się z użytkownikiem. Pierwsza linijka określa czas, w którym nadeszła wartość (składowana szeregu czasowego) oraz jej wielkość. Po uzyskaniu wystarczającej ilości danych tworzony jest wektor wejściowy i przekazywany jest on do wstępnej analizy danych, co prezentuje linia druga linia (z powodów edycyjnych w pracy została przedstawiona w siedmiu wierszach). Trzecie linijka (tutaj zapisana w trzech wierszach) przedstawia znormalizowany wektor po wstępnej analizie danych. Widać tutaj wyraźnie redukcje wymiarów wektora wejściowego. Ostatnia linia informuje, do jakiej klasy należy wektor (liczba oznacza stopień przynależności określony przez liczbę rozmytą utworzoną za pomocą funkcji tworzącej – proces ten szczegółowo opisany został w rozdziale 1.3) oraz czy został on przyjęty czy odrzucony. Czynność tak jest realizowana w zależności od ustawienia parametru „Poziom akceptacji wektorów”. System przyjmuje, iż dla wartości ujemnych wektor koduje wzorzec sprzedaży a dla wartości dodatnich „kupno” wzorzec kupna. Panel stan systemu informuje użytkownika o tym czy klasteryzacja już się rozpoczęła czy też wciąż trwa zbieranie danych potrzebnych do aktywacji systemu. Ukazuje on także ile wektorów jeszcze musi być dostarczonych, aby system wystartował. Panel użytkownika przestawia informację, która w założeniu ma być jedyną widoczną oznaką działania systemu w aplikacji z interfejsem graficznym zorientowanym na użytkownika. Wykorzystując powszechnie znaną sygnalizację świetlną stosowaną w ruchu ulicznym, system ma informować użytkownika o prawdopodobnym wykryciu wzorca, po których powinien wystąpić wzrost (kolor zielony – sugerujący otwarcie pozycji długiej) lub spadek (kolor czerwony – sugerujący otwarcie pozycji krótkiej). Kolor żółty jest ukazywany podczas zbierania danych oraz wtedy, gdy brak jednoznacznych przesłanek do klasyfikacji zaprezentowanego wektora wejściowego. 75 Ocena skuteczności prezentuje sytuacje jaka zaistniałaby gdyby zainwestowano 100 000,00 pln na rynku finansowym i konsekwentnie podążano za decyzjami systemy wspomagającego decyzje. Przycisk „Wstrzymaj” zatrzymuje klasteryzację jednakże z możliwością wznowienia jej od momentu, w których została zatrzymana. Natomiast możliwości. przycisk „Przerwij” zatrzymuje klasteryzację bez takiej 76 DODATEK C ANEKS STATYSTYCZNY Zestawienie stóp zwrotu uzyskanych ze strategii “kup i trzymaj” oraz podążając za decyzjami systemu wspomagania decyzji H-Adviser wraz z krótką charakterystyką szeregów. Data Odchylenie Maksymalna Zysk ze strategii Zysk H-Adviser standardowe amplituda kup i trzymaj 2003-09-01 13,3 73,42 +3,70% -2,4% 2003-10-06 18,26 75,21 +4,89% +4,5% 2003-10-14 13,55 66,41 -3,27% +3,4% 2003-10-21 18,88 71,28 +3,37% -2,8% 2003-10-22 11,14 60,99 +3,06% +3,4% 2003-10-28 19,78 89,89 -4,42% +0,4% 2003-12-08 12,38 64,63 -4,19% -2,6% 2004-01-05 11,46 62,45 -3,53% +0,7% 2004-05-07 11,42 70,04 +3,63% -2,1% 2005-09-19 13,87 92,66 -3,52% +2,7% 2005-09-20 12,51 84,63 +2,56% +0,5% 2005-09-26 22,97 67,47 -2,08% +2,2% 2005-09-28 12,45 63,95 +2,13% -0,9% 2005-10-03 19,95 75,27 -1,90% -2,6% 2005-10-06 15,49 62,39 +1,89% -2,3% 2005-10-13 14,89 97,68 +4,00% +1,8% 77 Data Odchylenie Maksymalna Zysk ze strategii Zysk H-Adviser standardowe amplituda kup i trzymaj 2005-10-26 20,06 88,44 3,47% -2,8% 2005-10-28 11,18 60,51 -2,22% -2,3% 2006-01-02 14,99 75,24 -2,41% +1,6% 2006-01-03 16,51 88,96 -3,20% +1,8% 2006-01-06 19,67 76,02 -2,01% +2,5% 2006-01-09 21,44 82,07 +1,68% -2,5% 2006-01-16 12,04 61,66 -2,01% +1,2% 2006-01-19 14,36 73,36 -2,42% +1,0% 2006-01-23 14,64 71,1 -1,83% -1,5% 2006-01-31 26,37 150,78 +5,13% -2,6% 2006-02-10 12,66 72,7 +2,30% +2,1% 2006-02-17 29,66 109,32 -3,64% +3,4% 2006-02-28 28,36 107,03 +0,94% +1,9% 2006-03-03 11,01 70,02 +0,91% +0,4% 2006-03-07 18,14 83,93 +1,68% -0,1% 2006-03-08 19,47 84,82 +1,80% -0,2% 2006-03-10 16,38 61,3 +0,18% -1,5% 2006-03-16 13,82 71,57 -2,22% -2,1% 2006-03-29 11,68 77,46 -1,66% +1,8% 2006-04-19 13,44 66,67 1,44% -0,2% 2006-04-20 24,48 89,26 -0,83% +1,2% 2006-04-21 28,16 118,62 -2,69% +1,7% 2006-04-24 14,37 61,6 -1,12% +0,3% 2006-04-26 11,61 74,45 -0,96% -1,3% 2006-04-27 39,8 131,25 3,49% -2,4% 2006-05-04 11,52 92,13 -2,52% -2,4% 2006-05-05 14,08 97,74 -1,39% -1,9% 2006-05-11 16,53 74,51 -0,69% -0,5% 2006-05-12 11,93 63,54 +1,34% -1.4% 2006-05-15 15,51 129,82 +3,78% -2,0% 2006-05-16 16,16 82,8 -1,21% +1,8% 2006-05-17 38,68 179,2 +5,06% -4,1% 78 Data Odchylenie Maksymalna Zysk ze strategii Zysk H-Adviser standardowe amplituda kup i trzymaj 2006-05-18 16,88 197,58 +4,94% +5,9% 2006-05-24 48,22 144,13 +2,81% -1,9% 2006-05-25 32,64 190,08 -3,96% +4,8% 2006-05-29 13,77 89,96 +2,62% -1,9% 2006-05-31 21,05 98,33 -2,99% +0,6% 2006-06-05 16,19 76,47 +0,41% -1,2% 2006-06-09 25,1 101,12 +3,13% +2,3% 2006-06-13 29,61 125,1 -0,98% +2,5% 2006-06-14 21,47 183,94 -3,52% +1,8% 2006-06-16 21,72 87,17 2,38% -2,2% 2006-06-20 11,94 63,63 -1,54% -0,6% 2006-06-21 17,76 96,74 -2,25% -1,7% 2006-06-22 18,04 83,13 2,75% +1,4% 2006-06-27 30,4 121,29 -2,47% -1,2% 2006-06-28 17,95 106,89 -3,85% -2,8% 2006-06-29 13,05 100,28 -2,26% -2,4% 2006-06-30 12,86 60,17 +0,91% +0,5% 2006-07-06 31,92 105,24 -3,22% +3,2% 2006-07-07 21,78 93,10 -0,10% 0,04% 2006-07-10 32,44 122,05 -2,85% +1,9% 2006-07-11 15,29 76,64 -0,04% -0,8% 2006-07-12 14,76 65,87 +0,36% +1,3% 2006-07-13 34,75 183,6 5,73% +5,4% 2006-07-14 14,7 74,74 -1,76% -0,3% 2006-07-17 11,33 61,55 +1,85% -0,2% 2006-07-18 13,24 61,17 -1,78% -0,1% 2006-07-26 12,25 70,95 -1,75% +1,9% 2006-07-27 21,88 78,32 -2,06% -1,7% 2006-08-01 18,17 88,36 +2,62% +1,6% 2006-08-02 16,01 76,58 +0,98% +0,1% 2006-08-03 30,04 109,77 +2,82% +1,4% 2006-08-04 16,13 72,69 +0,36% +0,5% 79 Data Odchylenie Maksymalna Zysk ze strategii Zysk H-Adviser standardowe amplituda kup i trzymaj 2006-08-07 16,67 71,95 -0,07% -1,1% 2006-08-09 24,06 83,53 -0,98% -1,6% 2006-08-10 14,42 68,79 +0,45% +0,6% 2006-08-11 27,4 131,18 +3,19% +2,8% 2006-08-25 14,59 72,86 +2,02% +1,2% 2006-08-29 14,76 66,3 -2,08% +0,5% 2006-08-31 21,39 74,88 +1,91% -1,8% 2006-09-04 30,88 107,64 -2,94% -2,0% 2006-09-08 18,75 77,51 +2,25% +1,8% 2006-09-12 17,29 86,87 -1,87% +2,0% 2006-09-14 13,8 69,83 +2,01% +1,9% 2006-09-21 12,08 67,99 +1,5% -1,5% 2006-10-04 11,12 90,45 -2,89% +2,3% 2006-10-10 11,9 69,66 -1.88% +0,3% 2006-10-12 13,86 80,41 -2,39% -2,4% 2006-10-18 17,55 89,85 -1,27% -0,1% 2006-10-20 21,03 88,17 +1,46% +1,2% 2006-10-27 17,88 78,56 +2,04% +1,8% 2006-11-13 16,69 67,37 -0,38% +0,2% 2006-11-15 30,95 106,95 +2,53% +0,4% 2006-11-16 13,52 69,88 -0,23% +0,1% 2006-11-27 11,7 72,73 +1,83% -1,3% 2006-11-29 11,83 67,5 -2,05% +1,2% 2006-12-05 18,29 80,81 -2,09% -1,2% 2006-12-15 22,67 102,75 +0,09% -2,8% 2006-12-19 13,95 65,93 +0,91% -0,5% 2006-12-20 23,18 93,07 +1,98% +1,7% 2007-01-02 11,23 61,64 -1,31% +0,01% 2007-01-05 22,86 97,75 +2,72% +1,5% 2007-01-08 16,25 74,61 -1,37% +1,7% 2007-01-10 14,45 61,86 -0,76% +0,6% 2007-01-18 16,08 94,54 -1,33% -0,1% 80 Data Odchylenie Maksymalna Zysk ze strategii Zysk H-Adviser standardowe amplituda kup i trzymaj 2007-01-22 25,36 107,25 +2,22% -2,2% 2007-01-23 11,8 76,38 -1,6% -2,1% 2007-01-25 19,16 124,23 +2,32% +2,6% 2007-01-26 15,56 68,92 -1,7% +0,8% 2007-02-08 20,47 84,39 +1,83% +1,2% 2007-02-13 18,31 94,34 -2,54% -1,4% 2007-02-15 15,3 67,69 +1,42% +0,7% 2007-02-21 12,19 60,69 -1,39% +0,9% 2007-02-27 31,56 176,65 +4,97% +3,7% 2007-03-01 34,08 113,36 +1,11% +0,3% 2007-03-05 16,25 99,22 -2,06% -2,1% 2007-03-07 17,12 66,13 -0,5% +0,1% 2007-03-09 16,22 75,45 -1,04% -1,0% 2007-03-13 25,34 147,86 +3,58% +3,8% 2007-03-14 13,04 118,58 -3,68% -2,4% 2007-03-16 20,47 71,39 -1,75% -1,8% 81 LITERATURA [Rachel 2000] S.T. Rachev, S. Mittnik. Stable Paretian model in finance. Wiley&Sons. 2000. [Rachev 2004] S.T. Rachev. Handbook of Numerical Methods in Finance. Springer. 2004. [Allen 1999] F. Allen, R. Karjalainen. Using Genetic Algorithms to Find Technical Trading Rules. Journal of Financial Economics, 245-279. 1999. [AlSultan 1996] K.S. AlSultan, M.M. Khan. Computational experience on four algorithms for the hard clustering problem. Pattern Recognition Letters, 17(3), 295–308. 1996. [Backer 2000] E. Backer. Computer-Assisted Reasoning in Cluster Analysis. Prentice Hall. 2000. [Bajcsy 1998] P. Bajcsy, N. Ahuja. Location and density-based hierarchical clustering using similarity analysis. IEEE Transactions on Pattern Analysis and Machine Intelligence, 20(9), 1011–1015. 1998. [Banfield 1993] J.D. Banfield, A.E. Raftery. Model-Based Gaussian and Non-Gaussian Clustering. Biometrics, 49(September), 803–821. 1993. 82 [Bauer 1994] R.J. Bauer. Genetic Algorithms and Investment Strategies. Wiley. 1994. [Beringer 2007] J. Beringer, E. Hullermeier. Fuzzy Clustering of Parallel Data Streams. Otto von Guericke Universitat Magdeburg. Germany. 2007. [Bernstein 2000] J. Bernstein. Cykle giełdowe. WIG-PRESS. 2000. [Beyen 1999] K. Beyen, J. Goldstein, R. Ramakrishnan, U. Shaft. When is nearest neighbor meaningful? In Proceedings of the 7th International Conference on Database Theory, 217–235. 1999. [Bezdek 1981] J. Bezdek. Pattern Recognition with Fuzzy Objective Function Algorithms. Plenum Press. 1981. [Bień 2005] K. Bień. Wybrane modele ekonometryczne finansowych szeregów czasowych o ultrawysokiej częstotliwości. Rozprawa doktorska SGH Warszawa. 2005. [Birto 1997] M.R. Brito, E.L. Chavez, A.J. Quiroz, J.E. Yukich. Connectivity of the mutual k-nearest-neighbor graph in clustering and outlier detection. Statistics and Probability Letters, 35(1), 33–42. 1997. [Bobrowski 1986] D. Bobrowski. Probabilistyka w zastosowaniach technicznych. WNT. 1986. [Box 1994] G.E.P. Box, G.M. Jenkins, G.C. Reinsel. Time Series Analysis, Forecasting and Control. Prentice Hall. 1994. [Brockwell 2002] P.J. Brockwell, R.A. Davis. Introduction to Time Series and Forecasting. Springer. 2002. [Burrus 2001] C.S. Burrus. Introduction to Wavelets and Wavelet Transform. Pretntice Hall. 2001. [Czekaj 2003] J. Czekaj, M. Woś, J. Żarnowski. Efektywność giełdowego rynku akcji w Polsce. PWN. 2003. 83 [Daubechies 1992] I. Daubechies. Ten Lectures on Wavelets, Society for Industrial and Apllied Mathematics. 1992. [Demeter 2003] M.A.H. Dempster, Y. Romahi. Evolutionary reinforcement learning in FX order book and order flow analysis, Proceedings of the International Conference on Computational Intelligence for Financial Engineering, Hong Kong. China. 2003. [ElSonbaty 1998] Y. ElSonbaty, M. Ismail. On-line hierarchical clustering. Pattern Recognition Letters, 19(14), 1285– 1291. 1998. [Fama 1970] E. F. Fama. Efficient Capital Markets: A Review of Theory and Empirical Work. Journal of Finance. 1970. [Fayyad 1996] U. M. Fayyad, G. Piatetsky-Shapiro, P. Smyth. Advances in knowledge discovery and data mining. AAAI Press/MIT Press. 1996. [Fraley 1998] C. Fraley, A.E. Raftery. How many clusters? Which clustering method? Answers via model-based cluster analysis. Computer Journal, 41(8), 578–588. 1998. [Frost 1995] J. Frost, R. Prechter. Teoria fal Elliota. WIG-PRESS. 1995. [Garofalakis 2002] M. Garofalakis, J. Gehrke, and R. Rastogi. Querying and mining data streams: you only get one look. In Proceedings of the 2002 ACM SIGMOD International Conference on Management of Data, pages 635–635. ACM Press. 2002. [Geurts 2001] P. Geurts. Pattern extraction for time series classification. In Proceedings of the 5th European Conference on Principles of Data Knowledge Discovery, 115–127. 2001. Mining and 84 [Golab 2003] L. Golab, M. Tamer. Issues in data stream management. SIGMOD Rec., 32(2):5–14. 2003. [Hopper 1999] F. Hoppner, F. Klawonn, K. Rudoft, T. Runkler. Fuzzy Cluster Analysis. Wiley. 1999. [Karatzas 1998] I. Karatzas, S.E. Shreve. Methods of Mathematical Finance. Springer. 1998. [Keogh 1998] E. Keogh, M. Pazzani. An enhanced representation of time series which allows fast and accurate classification, clustering and relevance feedback. In Proceedings of the 4th International Conference of Knowledge Discovery and Data Mining, 239–241. 1998. [Keogh 2000] E. Keogh, K. Chakrabarti, S. Mehrotra. Dimensionality reduction of fast similarity search in large time series databases. Journal of Knowledge and Information System, 3:263–286. 2000. [Korczak 2007] J. Korczak, P. Lipiński. Systemy agentowe we wspomaganiu decyzji na rynku papierów wartościowych. 2007. [Kwasnicka 2001] H. Kwasnicka, M. Ciosmak. Intelligent Techniques in Stock Analysis, Intelligent Information Systems 2001, Proceedings of the 10th International Symposium on Intelligent Information Systems. Springer. 195-208. 2001. [Lin 1996] J. Lin, W. Lin. Real-time and Automatic Two-Class Clustering by Analytical Formulas. Pattern Recognition, 29(11), 1919–1930. 1996. [Lipiński 2005] P. Lipiński. Evolutionary data-mining methods in discovering stock market expertise from financial time series. Université Louis-Pasteur. 2005. 85 [Liu 2000] X. Liu. Progress in Intelligent Data Analysis. Applied Intelligence, 11(3). 2000. [Malarska 2005] A. Malarska. Statystyczna analiza danych. SPSS. 2005. [Mallat 1989] S.G. Mallat. A theory for multiresulution signal decomposition: Transactions the on wavelet Pattern representation. Analysis and IEEE Machine Intelligence, 11(7), 647-693. 1989. [Martinetz 1993] M. Martinetz, S. Berkovich, K. Schulten. “Neural-gas” network for vector quantization and its application to time series prediction. IEEE Trans. Neural Networks, V. 4, 1993, 558-569. 1993. [McLachlan] G.J. McLachlan, K.E. Basford. Mixture models: inference and applications to clustering. Marcel Dekker. 1988. [Meyer 1995] Y. Meyer. Wavelets and Operators, Cambridge University Press. 1995. [Murphy 1999] J. Murphy. Analiza techniczna rynków finansowych. WIG-PRESS. 1999. [Osowski 1996] S. Osowski. Sieci neuronowe w ujęciu algorytmicznym. WNT. 1996. [Pacheco 1998] F.A.L. Pacheco. Finding the number of natural clusters in groundwater data sets using the concept of equivalence class. Computers and Geosciences, 24(1), 7–15. 1998 [Prinze 2006] A. Prinze, D. Van Den Poel. Investigating Purchasing Patterns for Financial Services using Markov, MTD and MTDg Models/ European Journal of Operational Research, 170 (3), 710-734. 2006. [Ritchie 1997] J.C. Ritchie. Analiza fundamentalna przekład polski. WIG-PRESS. 1997. 86 [Rutkowski 2005] L. Rutkowski. Metody I techniki sztucznej inteligencji. PWN. 2005. [Rutkowski 2006] L. Rutkowski. Metody i techniki sztucznej inteligencji. PWN. 2006. [Shannon 1948] A. Shannon, A mathematical theory of communication, the Bell System technical Journal, 27 (3), 379-423 & 623-656. 1948. [Shapiro 1995] L.S. Shapiro. Affine Analysis of Image Sequences. Ph.D. thesis, University of Oxford. 1995. [Tsang 2000] E.P.K. Tsang, S. Markose, A. Salhi, G. Iori. EDDIE In Financial Decision Making, Journal of Management and Economics, Vol.4, No.4. 2000. [Weigend 1997] A.S. Weigend. Data Mining in Finance: Report from the Post-NNCM-96 Workshop on Teaching Computer Intensive Methods for Financial Modeling and Data Analysis. Neural Networks in the Capital Markets NNCM-96, 399-411. 1997. [Yi 2000] B. K. Yi, C. Faloustos. Fast time sequence indexing for arbitrary lp norms. In Proceedings of the 26th International Conference on Very Large Databases, 385–394. 2000.