Dokumentacja Końcowa

Wielkość: px
Rozpocząć pokaz od strony:

Download "Dokumentacja Końcowa"

Transkrypt

1 Metody Sztucznej Inteligencji 2 Projekt Prognozowanie kierunku ruchu indeksów giełdowych na podstawie danych historycznych. Dokumentacja Końcowa Autorzy: Robert Wojciechowski Michał Denkiewicz

2 Wstęp Celem projektu było stworzenie systemu umożliwiającego przewidywanie ruchów (wzrostów i spadków) indeksów giełdowych na podstawie informacji historycznej. Zasadniczymi elementami systemu są: 1. Sieć neuronowa służąca do dokonywania prognoz. 2. Aplikacja w technologii.net zarządzająca danymi i procesem trenowania sieci. Opis aplikacji Okno główne aplikacji przedstawia się następująco: W panelu po prawej stronie wyświetlone są dane historyczne. Wyświetlane są wartości indeksu wskazanego w liście Index z zakresu dat zadanego przez Date range. Za pomocą zakładek Graph i Grid można przełączać pomiędzy wyświetlaniem w postaci wykresu i tabeli. Widok w postaci tabeli przedstawiony jest poniżej:

3 Na liście Networks widać nazwy aktualnie zdefiniowanych sieci neuronowych. Wskazana sieć jest uznawana za aktywną i do niej odnosić się będą polecenia trenowania i testowania (patrz niżej). Menu główne Wszystkie działania w programie dokonuje się za pomocą menu głównego. Poszczególne zadania zostaną omówione w kolejnych podrozdziałach. Struktura menu jest następująca: File Close kończy działanie aplikacji Networks Create otwiera okno dialogowe służące do tworzenia nowej sieci neuronowej. Load umożliwia wczytanie sieci neuronowej z pliku. Save umożliwia zapis wybranej sieci neuronowej do pliku. Train otwiera okno dialogowe służące do uczenia wskazanej sieci neuronowej. Test otwiera okno dialogowe służące do testowania uprzednio wyuczonej sieci. Start umożliwia dokonanie pojedynczej prognozy ruchu indeksu na wskazaną datę. Batch train - otwiera okno dialogowe służące do wykonania zadań z pliku wsadowego oraz obejrzenia rezultatów ich wykonywania. Data Add index - otwiera okno dialogowe służące do dodawania nowego indeksu do programu.

4 Download data - otwiera okno dialogowe służące do pobierania historycznych wartości indeksów z internetu. Help About otwiera okno dialogowe zawierające krótkie informacje o programie. Pobieranie danych z internetu Do pobierania danych służy poniższe okno dialogowe: Z listy Index name wybrać należy nazwę indeksu, o który nam chodzi. Jeżeli interesującego nas indeksu nie ma na liście, należy go najpierw dodać (patrz niżej). W polu data range należy zaznaczyć zakres dat, z którego dane chcemy pobrać. Po kliknięciu Download program połączy się z witryną Yahoo Finance ( i pobierze dane. W wypadku problemów z połączeniem wyświetlony zostanie stosowny komunikat. Program przechowuje pobrane dane w pliku data.xml w katalogu aplikacji. Każde pobrane dane są automatycznie integrowane z bazą i zapisywane do tego pliku są więc dostępne przy kolejnych uruchomieniach. W przypadku skasowania pliku z bazą danych zostanie on odtworzony (oczywiście nie będzie zawierał żadnych danych). Należy nadmienić, że sieci neuronowe przechowywane są w osobnych plikach. Dodawanie nowego indeksu Do dodawania nowego indeksu służy następujące okno dialogowe: W polu name wpisać należy nazwę, jaką chcemy się posługiwać w programie. W polu symbol wpisujemy symbol indeksu znaleziony na stronie Yahoo Finance, bez znaku ^. Symbol ten jest używany do komunikacji z witryną i błędne jego wprowadzenie skutkować będzie niemożnością pobrania danych.

5 Tworzenie nowej sieci Do pobierania danych służy poniższe okno dialogowe: W polu Name można nadać nazwę nowej sieci. Pole Input days służy do określenia liczby dni, z których dane zostaną podane każdorazowo na wejście sieci. Całkowita liczba neuronów w warstwie wejściowej podana jest w polu Input layer nodes. Wreszcie liczbę neuronów w warstwie ukrytej modyfikowac można za pomocą pola Hidden layer nodes. Uczenie sieci Do uczenia aktualnie wybranej na liście Networks sieci służy następujące okno dialogowe: Znaczenie pól jest następujące: Index indeks, dla którego chcemy przeprowadzić trenowanie.

6 Training set zakres danych stanowiących zbiór uczący sieci. Validating set zakres danych stanowiących zbiór walidacyjny sieci. Learning rate współczynnik uczenia sieci. Validating factor współczynnik walidacji sieci. Generations liczba generacji, przez jaką chcemy uczyć sieć. Momentum parametr określający moment uczenia sieci. ClosePriceEMA do wejścia sieci podawana jest wykładnicza średnia krocząca z ceny zamknięcia.jako przedział do jej wyliczenia brany jest okres 9 dni. VolumeEMA do wejścia sieci podawana jest wykładnicza średnia kroczącej z wartości wolumenu obrotu akcjami danej firmy..jako przedział do jej wyliczenia brany jest okres 9 dni. Po ustawieniu pożądanych parametrów za pomocą przycisku Start rozpoczynamy uczenie. Możemy je przerwać klikając Stop lub zamykając okno. Wykładnicza średnia krocząca (ang. exponential moving average, EMA) jest odmianą średniej ważonej, w której znaczenie coraz bardziej odległych w czasie okresów maleje w sposób wykładniczy. gdzie:. p 0 - ostatnia wartość p 1 - przedostatnia wartość... p N - wartość sprzed N okresów N - ilość okresów

7 Testowanie sieci Testowanie sieci możliwe jest po uprzednim jej wytrenowaniu. Użytkownik wskazuje zakres czasowy, na którym mają być przeprowadzone działania. Dane do sieci wprowadzona są podobnie jak w procesie uczenie w postaci pakietów X dniowych. Otrzymany wynik porównywany jest z informacją historyczną o kierunku ruchu ceny z dnia X+1. Sieć testuje się przy użyciu poniższego okna dialogowego: Tutaj podobnie jak w innych oknach ustawiamy indeks, na którym testowana będzie sieć, oraz zakres danych testujących. Po naciśnięciu start następuj testowanie sieci. Total oznacza rozmiar zbioru danych, Buy/Sell - liczbę prognoz na kupno i na sprzedaż wygenerowanych przez sieć, Rate - procentową skuteczność sieci. Wykres po prawej stronie obrazuje graficznie prognozy sieci na tle rzeczywistych danych.

8 Uruchamianie zadania z pliku wsadowego Program ma możliwość wykonywania zadań uprzednio zdefiniowanych w pliku wsadowym. Analogicznie do poprzednich okien musimy ustalić jakie dane będą służyły do uczenia sieci podajemy nazwę indeksu, zbiór uczący i walidacyjny oraz testowy. Po naciśnięciu start wyświetla się dialog umożliwiający wybranie odpowiedniego pliku wsadowego XML (przykładowe pliki są dołączone do projektu). Po zaakceptowaniu wyboru rozpoczyna się uczenie a następnie testowanie sieci. Skuteczność poszczególnych sieci odczytać można z list Results. Dodatkowo są one zapisywane w katalogu programu w plikach opatrzonych ich nazwami, aktualną datą oraz czasem. Wyniki testów i wnioski Stworzona aplikacja jest w stanie trenować sieci neuronowe, które prognozują ruchy wskaźników giełdowych z prawdopodobieństwem 60%.Wynik ten może wzrosnąć do 62-65% gdy do nauki sieci wykorzystamy dane przetworzone wcześniej przy użyciu wykładniczych średnich kroczących. Z przeprowadzonych testów wynika, że współczynnik uczenie powinien mieć wartość bliską 0.3. Podczas gdy liczba generacji, które algorytm musiał wykonać aby sieć osiągnęła najwyższy możliwy dla niej stopień przewidywania kursów kształtował się około Jednak należy mieć na względzie to, iż wspomniane parametry zależały także od rodzaju danych wejściowych. I tak serie notowań charakteryzujące bardzo dużą zmiennością kierunku ruchu akcji definiowały zadanie przewidywania jako trudne. Liczba neuronów w warstwie ukrytej były albo wyznaczana jako bliska ¾ liczby neuronów wejściowych albo jako bliska ich pierwiastkowi.