Wroclaw 01.07.2008
Author: Łukasz Kała
Forecast of direction’s change of exchange rate of currency
This report has been prepared as a requirement for the course:
Methods and algorithms of artificial intelligence
The aim of this project was a short-term forecast of exchange rate of currency on the Foreign Exchange Market – FOREX.
The task was realized on the strength neural network. According to intentions, it manges to forecast exchange rate of currency with probability more than 50%. For creating the neural network had used program: Stuttgart Neural Network Simulator. The date come from the Internet, a part of them come from own study.
Celem projektu było przewidywanie krótkoterminowych zmian kursu waluty na rynku walutowym – FOREX.
Zadanie zostało zrealizowane w oparciu o sieci neuronowe. Zgodnie z zamierzeniami udało się przewidywać kierunek zmiany kursy waluty z prawdopodobieństwem większym niż 50%. Do tworzenia stworzenia sieci użyto programu Stuttgart Neural Network Simulator. Użyte dane są ogólnie dostępne w Internecie, część z nich poddano własnej obróbce.
W sieci prognozowany był kierunek zmiany kursu waluty USDCHF na następny dzień. Określenie kierunku jest łatwiejsze od określenia procentowej zmiany kursu jak i określenia przyszłej wartości tego kursu. Zmienna przyjmuje wartość
· 1 – gdy na koniec dnia następnego wartość kursu będzie większa od bieżącego
· 0 – gdy na koniec dnia następnego wartość kursu będzie mniejsza od bieżącego
Do danych nie należących do własnego opracowania należały dzienne kursy USDCHF: wartość na początku dnia (O), na końcu dnia(C), minimalna(L) i maksymalna wartość w ciągu dnia(H) oraz wolumen obrotów dla danego dnia. Podczas przygotowań badano różne wartości jakie można by dać na wejście uczącej się sieci. Ostatecznie wybrano zbiór, który najlepiej realizował cel wśród przebadanych.
Na wstępie zgromadzone dane posłużyły do stworzenia nowych zmiennych wejściowych dla sieci, zmienne te są między innymi wynikiem przeprowadzonych obliczeń jak i procesu normalizacji. Podczas przygotowań badano różne wartości jakie można by wykorzystać na wejściu uczącej się sieci. Ostatecznie wybrano zbiór, który najlepiej realizował cel wśród przebadanych:
· pierwsze 4 zmienne dla sieci stanowią odpowiednie różnice wartości obecnych czterech wymienionych kursów O, C, L, H i aktualnych średnich kroczących wyznaczonych na podstawie 30 okresów (badano również dla 50 okresów ).
· współczynnik On Balance Volume (OBV) wyznaczony na podstawie wolumenu odpowiednio podzielony, aby nie zakłócał sieci
· indykator Rrelative Strength Index (RSI) (Rrelative strength index) ,
gdzie:
a = Średnia wartość wzrostu cen zamknięcia z y dni
b = Średnia wartość spadku cen zamknięcia z y dni
· indykator Moving Average Convergence Divergence (MACD).
Nieprzetworzone dane, sprawiały że sieć działała z mniejszą skutecznością bądź też w czasie uczenia występowały duże zakłócenia. Prezentując sieci zmianę wartości zamiast wartości absolutnych, zwiększamy jej zdolności prognostyczne.
Cztery pierwsze zmienne zostały w ten sposób przetworzone, aby zniwelować niekorzystny wpływ trendów kursów jak i też fakt, że na przełomie lat, średni kurs dla danego roku ulega zmianie.
Poniżej przedstawiono jak dobór zmiennych wejściowych wpływały na ostateczny wynik nauki sieci(przedstawiona jest zmiana wartości średniego błędu kwadratowego MSE w zależności od krotności powtórzeń; kolorem czerwonym oznaczony błąd z puli testowej a czarnym z puli uczącej) :
· wykres dla zmiennych wejściowych przedstawionych powyżej:
· poza wymienionymi na początku zastosowano różnice między następną a bieżącą wartością kursu zamknięcia
Występują zakłócenia w procesie uczenia i jest duża różnica w błędach dla wartości uczących i testujących
· poza wymienionymi na początku zastosowano różnice między kursem otwarcia a zamknięcia
Nie ma dużej różnicy w błędach, ale w procesie uczenia bardzo wolno błąd jest zmniejszany
Zbiór danych trenujących składał się z 1750 wektorów trenujących, natomiast liczba wektorów testujących 250, przy czym wektory te są kolejne w szeregu czasowym po wektorach trenujących.
Wybierając architekturę sieci oparto się o literaturę, informacjach zdobyte na Internecie oraz własnych próbach. Zdecydowano się na sieci oparte na algorytmie wstecznej propagacji błędu. Wg literatury dla sieci trzywarstwowej liczba neuronów w warstwie ukrytej powinna się równać sumie zmiennych wejściowych i wyjściowych. Taki wariant przyjęto, lecz poniżej przedstawiono także wykresy MSE dla innych sieci:
· 7-8-1 sieć podstawowa:
· 7-14-1:
· Sieć czterowarstwowa7-10-10-1:
Po przygotowaniu zmiennych wybraniu, sieci przystąpiono do trenowania sieci. Najpierw zainicjowano losowe wagi dla połączeń, następnie próbowano nauczyć sieć wykorzystując różne wartości parametrów dla algorytmu uczącego - wstecznej propagacji– współczynnik nauki (Wn) i maksymalną różnicę między zmienną wytrenowaną a zmienną właściwą(Dif).
Analizując kilka przypadków przyjęto: Wn=0.05, Dif=0.2.
Badaną sieć wytrenowano korzystając z 40000 powtórzeń, większa liczba bardzo powoli zmniejszała błąd szacowania.
Po wytrenowaniu sieci sprawdzono
poprawność działania sieci na 250 zmiennych testujących,
porównano wynik otrzymanych z sieci z rzeczywistymi. Przyjęto,
że jeżeli
wartość otrzymana z sieci różni się o
wartość mniejsza niż określona (), wtedy sieć prawidłowo
przewidziała wynik. W ten sposób otrzymano następujące
wyniki:
·
dla = 0.3 skuteczność sieci wynosi
: 38 %
·
dla = 0.4 skuteczność sieci wynosi
: 56 %
·
dla = 0.45 skuteczność sieci wynosi
:63%
Tworząc ten projekt podjęto się zadania teoretyczni dużo łatwiejszego niż przewidzenie przyszłej wartości, w dodatku przewidywane wyprzedzenie było tylko jedno dniowe. Mimo wszystko problem nie należał do prostych. Na wynik i poprawność sieci ma wpływ bardzo wiele zmiennych, takich jak przyjęte zmienne, ilość wektorów uczących, architektura sieci, przyjęta metoda uczenia sieci, współczynniki dla odpowiedniego algorytmu. Jak już wcześniej napisałem analizowanym problemem zajmują się różni naukowcy, instytuty badawcze, poświęcając na to lata. Z pewnością, grając na rynku walutowym – Forex, nie należałoby bezgranicznie ufać stworzonej podczas tego projektu sieci. Mimo wszystko wyniki uzyskane dają większą szanse na poprawne stwierdzenie kierunku niż przysłowiowy rzut monetom.
Dalszym rozwojem projektu, mogłoby być określenie procentowej zmiany kursu waluty, bądź też przewidywanie kierunku zmiany z dłuższym wyprzedzeniem.
· Sieci neuronowe, algorytmy genetyczne i systemy rozmyte / Danuta Rutkowska, Maciej Piliński
· Sztuczne sieci neuronowe i metody statystyczne : wybrane zagadnienia finansowe / Dorota Witkowska · Sieci neuronowe – Prognozowanie finansowe i projektowanie systemów transakcyjnych / Ed Gately |
· Neural Networks in Business Forecasting / G. Peter Zhang |
· Stuttgart Neural Network Simulator