pobierz plik referatu

Transkrypt

pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
Rozdział 37
w
Sieć neuronowa jako system ekspercki
na rynku instrumentów pochodnych
w
da
.b
w
Streszczenie. Niniejszy rozdział przedstawia zastosowanie sieci neuronowej
do oceny bieżącej sytuacji na rynku pozagiełdowym. Opisywana sieć neuronowa uczona jest na bazie kursów historycznych rynku walutowego i ma za
zadanie wskazać odpowiedni moment na otwarcie transakcji oraz jej rodzaj.
Do tego celu wykorzystano jednokierunkową, wielowarstwową sieć neuronową, której na wejście należy dostarczyć zestaw wyliczonych wartości prostych wskaźników statystycznych używanych w analizie technicznej, natomiast na wyjściu zwraca ona rekomendowany rodzaj operacji oraz wskaźnik
oceniający prawdopodobieństwo zysku przy jej zawarciu w danej chwili.
Sieć uczona jest programem zewnętrznym i eksportowana do pliku o ustalonej strukturze. Samo wykorzystanie nauczonej sieci jest natomiast możliwe
przy użyciu języka MQL4 (MetaQuotes Language 4) zintegrowanego z większością platform transakcyjnych działających na rynku instrumentów pochodnych.
1 Wprowadzenie
pl
s.
Przed laty najpopularniejszymi formami lokowania oszczędności dla przeciętnego obywatela były różnego rodzaju lokaty terminowe, które swoim oprocentowaniem w najlepszym
przypadku nadążały za inflacją. Dzisiaj inwestorzy indywidualni (detaliczni), którzy wraz
z podniesieniem swojej świadomości na temat bankowości internetowej, możliwości zawierania transakcji bezgotówkowych, użytkowania kart płatniczych (również przez Internet)
zauważają również, że ich oszczędności mogą stać się dodatkowym źródłem dochodu. Tym
samym w ostatnich latach ich lokowanie na rachunkach umożliwiających aktywne inwestowanie zgromadzonych na nich środków staje się coraz bardziej popularne. Do takich inwestycji można zaliczyć inwestowanie w fundusze inwestycyjne, akcje spółek notowanych na
giełdzie papierów wartościowych, lokaty strukturalne, instrumenty pochodne na rynkach
zdecentralizowanych oraz wiele innych.
Marta Grzanek, Sebastian Wojczyk
Uniwersytet Łódzki, Wydział Matematyki i Informatyki, ul. Banacha 22, 90-238 Łódź, Polska
email: [email protected], [email protected]
Marcin Lizis
Uniwersytet Łódzki, Instytut Studiów Informatycznych, ul. Konstytucji 3 Maja nr 65,
97-200 Tomaszów Mazowiecki, Polska
email: [email protected]
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
M. Grzanek, S. Wojczyk, M. Lizis
w
Obecnie największym rynkiem finansowym świata jest rynek walutowy (Forex). Średnie
dzienne obroty na tym rynku cały czas rosną i przekroczyły już 3 biliony Dolarów Amerykańskich. Forex to rynek pozagiełdowy, czyli taki, który nie posiada żadnej konkretnej lokalizacji, ale stanowi go sieć połączonych ze sobą banków, domów brokerskich, firm oraz
inwestorów indywidualnych. Rynek ten obejmuje swoim zakresem cały świat i działa przez
24 godziny na dobę – 5 dni w tygodniu.
Rynek walutowy staje się coraz popularniejszy. Ponadto posiada kilka zalet, które stawiają go na dobrej pozycji startowej w rankingach inwestorów. Jedną z nich jest właściwie
niczym nieograniczona liczba graczy oraz ich ogromna różnorodność, która sprawia, że rynek walutowy jest najbardziej płynnym rynkiem finansowym świata. Operowanie na tym
rynku nie jest obarczone żadnymi prowizjami. Jedyny koszt operacji stanowi różnica pomiędzy kursem kupna i sprzedaży (spread). Ponadto możliwe jest zastosowanie dźwigni finansowej (najczęściej 1:100) i to bez ponoszenia żadnych dodatkowych kosztów. Daje to
inwestorom możliwość zwielokrotnienia zysków przy zachowaniu tej samej ilości kapitału.
w
w
2 Platformy inwestycyjne
da
.b
Transakcje na rynkach walutowych zawierane są najczęściej przy użyciu tak zwanych platform inwestycyjnych. Są nimi aplikacje sieciowe zarządzane przez domy maklerskie.
Ogromną zaletą aplikacji tego typu jest bezpośredni dostęp do rynku. Przy pomocy aplikacji przez jedno kliknięcie myszką możemy zarówno otworzyć jak i zamknąć zlecenie. Aplikacje te stanowią zbiór wielu narządzi nie tylko umożliwiających zawieranie transakcji ale
również wspomagających podejmowanie decyzji oraz automatyczne wspomaganie zarządzania już otwartymi zleceniami.
Jednym z komponentów większości platform jest zintegrowane narzędzie umożliwiające
tworzenie systemów mechanicznych. Systemy takie implementuje się w języku MQL4
(MetaQuery Language 4) [9]. Jest to język przeznaczony specjalnie do tworzenia strategii,
wskaźników, skryptów oraz bibliotek. Mechanizmy dostępne w tym języku umożliwiają
łatwy dostęp do rynku, do wartości historycznych oraz do wielu popularnych wskaźników
analizy technicznej. Poza wieloma tradycyjnymi rozwiązaniami zarządzania zleceniami
opartymi na metodach analizy technicznej możliwe jest również tworzenie rozwiązań bardziej wyszukanych, do których z całą pewnością można zaliczyć zastosowanie sztucznych
sieci neuronowych.
pl
s.
3 Sieć neuronowa
Sieci neuronowe są zbiorem neuronów wzajemnie ze sobą połączonych. Ze względu na budowę, metody uczenia i zastosowanie wyróżnia się kilka rodzajów sieci neuronowych. Jednym z nich są jednokierunkowe wielowarstwowe sieci neuronowe (por. [4], [5], [6]).
Jednokierunkowe sieci neuronowe są wykorzystywane do aproksymowania odwzorowań. Każde odwzorowanie ciągłe może być z dowolną dokładnością aproksymowane przez
sieć neuronową zaledwie z jedną warstwą ukrytą. Jeżeli chcemy aproksymować odwzorowanie nieciągłe, to również możemy do tego celu użyć sieci neuronowe jednokierunkowe.
Sieć taka musi jedynie zawierać odpowiednią ilość warstw ukrytych. Jeżeli aproksymowane odwzorowanie ma n punktów nieciągłości to możemy je z dowolna dokładnością aproksymować jednokierunkowa siecią neuronową składającą się z (n+1) warstw ukrytych.
464
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
Sieć neuronowa jako system ekspercki na rynku instrumentów pochodnych
3.1 Zbiór uczący i zbiór testowy
w
Uczenie sieci neuronowych odbywa się przy wykorzystaniu danych uczących. W odniesieniu do omawianego problemu jedyną możliwością ich uzyskania jest wybranie odpowiedniego reprezentatywnego zbioru danych historycznych pochodzących z obserwacji rynku
walutowego. W tym celu wzięto zbiór danych historycznych dla najpopularniejszej pary
walutowej EURUSD z pierwszej połowy 2007 roku dla okresu pięciominutowego (M5).
Takich okresów przez pół roku jest ponad 30 000. Dla każdego okresu mamy dostępne kilka informacji: wartość otwarcia okresu, wartość zamknięcia, wartość najwyższą, wartość
najniższą. Do przygotowania danych uczących dla sieci neuronowej wykorzystane zostały
jedynie wartości zamknięcia dla poszczególnych okresów. Na ich podstawie wyznaczono
zarówno wartości wejściowe jak i żądane wartości wyjściowe z sieci.
W celu przygotowania zbioru uczącego dla sieci neuronowej podjęto próbę przygotowania pojedynczej próbki dla każdego z pięciominutowych okresów traktując go dla uproszczenia jako pewien moment czasowy. Oczywiście analizując dane w skali roku ze względu
na długość okresu można dokonać takiego uproszczenia. W tym celu na podstawie danych
dla punktów (będących bezpośrednio przed aktualnie analizowanym) obliczono wartości
kilku średnich kroczących dla różnych długości okresów, które stały się podstawą do wyznaczenia wartości wejściowych dla sieci neuronowej. Natomiast na podstawie danych
z punktów następujących bezpośrednio po bieżąco analizowanym, podjęto próbę jego oceny jako punktu czasowego dobrego do otwarcia zyskownej transakcji – co miało stanowić
wyjście z sieci neuronowej. W tym celu biorąc dane z kolejnych punktów czasowych wyszukano takiego, dla którego wartość pierwszy raz odbiegła co najmniej o 10 pipsów (pips
ang. price interest point – w przypadku kursów walutowych podawanych z dokładnością do
czterech miejsc po przecinku pips to 0,0001 wartości bezwzględnej) od wartości początkowej. Następnie aby nie uczyć sieci na sytuacjach bez wyraźnej szansy na zyskowną transakcję usunięto z powstałego zbioru próbki dla których osiągnięcie zmiany nastąpiło w okresie
dłuższym niż 100. Jeśli wartość poszła o 10 pipsów w górę rekomendowano zawarcie transakcji kupna, czyli otwarcie tzw. pozycji długiej, w przeciwnym zaś przypadku zawarcie
transakcji sprzedaży, czyli otwarcie pozycji krótkiej. Dodatkowo na podstawie ilości okresów potrzebnych do osiągnięcia zmiany o zadaną wartość wyliczono wskaźnik szacujący
prawdopodobieństwo zysku przy otwarciu danego typu transakcji. Następnie z tak powstałego zbioru wylosowano 150 próbek, które stały się gotowym zbiorem uczącym.
Zbiór testowy jest konstruowany w celu sprawdzenia poprawności działania nauczonej
sieci neuronowej. Jest generowany taką samą metodą jak zbiór uczący jednak zawiera inne
elementy. Elementami zbioru testowego są pary wektorów, z których pierwszy jest wektorem wejściowym do sieci, zaś drugi – żądaną wartością wyjściową. Proces sprawdzania poprawności działania sieci neuronowej jest przeprowadzany po zakończeniu procedury uczenia. Polega on na tym, że wyliczamy wyjście z sieci dla wektorów pochodzących ze zbioru
testowego a następnie porównujemy je z żądanymi wartościami wyjściowymi otrzymując
tym samym błąd na zbiorze testowym.
da
.b
w
w
pl
s.
3.1.1 Teoretyczna konstrukcja zbioru uczącego
Rozpatrzmy zbiór wszystkich dopuszczalnych danych wejściowych D i danych wyjściowych P oraz funkcję f zdefiniowane następująco:
465
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
M. Grzanek, S. Wojczyk, M. Lizis
7
D = [-100, 100] × · · · × [-100, 100] ⊂ ℜ
P = {0, 1} × {0, 1} × [0, 1] ⊂ ℜ
3
f :D→P
w
7
Argumentami funkcji f są wektory x ∈ D ⊂ ℜ . Ich wartości obliczone są z użyciem
wartości średnich kroczących dla różnej ilości okresów (M5). Poszczególne współrzędne
1 2
7
wektora x = {x , x ,..., x } odpowiadają średnim: 5, 10, 20, 30, 40, 50 i 100-okresowej.
Wartości wektora x są odległością w pipsach (różnicą) wartości odpowiedniej średniej od
wartości zamknięcia w bieżącym punkcie.
3
Wartościami funkcji f są wektory y ∈ P ⊂ ℜ . Pierwsze dwie współrzędne wektora
w
1
2
3
3
w
y = {y , y , y } mogą przyjmować jedynie wartości 0, 1, które mówią o typie rekomendowanej transakcji. Jeśli pierwsza z nich jest równa 1 i druga 0, to rekomendowaną transakcją
jest sprzedaż, natomiast jeśli pierwsza z nich jest równa 0 i druga 1, to rekomendowaną
transakcją jest kupno. Trzecia współrzędna przyjmuje wartość skonstruowaną na bazie ilości okresów t ∈ {1,2,...,100} potrzebnych do zmiany wartości początkowej o zadaną wartość
[ ]
da
.b
y = (100 − t ) / 100 i tym samym jest z przedziału 0,1 . Zakres zmienności t wynika
z wcześniejszych założeń o danych.
Tabela 1. Przykładowe próbki uczące przygotowane dla sieci neuronowej
Data i
godzina
07-02-19, 12:00
07.02.02, 14:35
07.02.02, 06:50
x
1
x
2
x
3
x
4
x
5
x
6
x
7
y
1
2.0
4.7 10.4 11.4 13.9 15.5 22.6
-9.6 -15.9 -17.5 -18.6 -20.1 -20.8 -22.2
0.0
1.5
1.9
1.7
1.1
0.3
0.3
1
0
1
y
2
y
0
1
0
3
0.87
0.95
0.09
3.2 Budowa sieci
pl
s.
W pierwszej próbce widać, że trend jest rosnący i rekomendowana transakcja to kupno
i to z dość dużym prawdopodobieństwem zysku (0.9). W drugiej próbce sytuacja jest zgoła
odwrotna. Trzecia zaś próbka przedstawia sytuację pośrednią pojawiającą się przy trendzie
bocznym, gdzie niby rekomendowana jest jakaś transakcja, ale współczynnik mówiący
o prawdopodobieństwie zysku jest niewielki.
Sieć neuronowa jest skonstruowana do aproksymowania odwzorowania f. Oznaczmy przez
L zbiór danych uczących i przez K ilość próbek w tym zbiorze. Zbiór L zdefiniowany następująco:
L = {(x , y ) ∈ D × P : f ( x ) = y } dla k = 1, ..., K .
k k
k
k
W celu aproksymowania odwzorowania f konstruujemy siec neuronową, która ma
7 wejść, dwie warstwy ukryte składające się odpowiednio z 20 i 10 neuronów oraz 3 neurony w warstwie wyjściowej. Taka a nie inna ilość neuronów została dobrana w wyniku przeprowadzonych doświadczeń i oceny zarówno procesu uczenia sieci jak i wyników jej zasto466
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
Sieć neuronowa jako system ekspercki na rynku instrumentów pochodnych
sowania. Dla skonstruowanej sieci konieczne jest przeprowadzenie procesu uczenia. Uczenie sieci jednokierunkowej wielowarstwowej polega na modyfikowaniu wartości wag celem minimalizacji funkcji błędu. Niech W oznacza wektor wag skonstruowanej sieci, wówczas:
1
2
2
3
W = { w11,0 , w1
1,1 ,..., w1,7 , w 2,0 , w 2,1 ,..., w 3,10 }
w
Istnieje wiele metod uczenia sieci. Jedną z nich jest algorytm Levenberga-Marquardta
[4], [8], który modyfikuje wartości wag w taki sposób, aby minimalizować funkcje błędu
zdefiniowaną następująco:
w
E (W ) =
K
3
(
∑ ∑ y ki − out ki
k = 1i = 1
)
2
da
.b
w
gdzie:
K – wielkość zbioru uczącego,
i
y - i-ta współrzędna k-tego wzorca,
k
out i - i-ta współrzędna wyliczonego wyjścia z sieci po podaniu k-tego wejścia ze zbioru
k
uczącego.
Modyfikowanie wag odbywa się zgodnie ze wzorem:
[
W (n + 1) = W (n ) - J T (W (n ))J (W (n )) + αI
]
-1 T
J W (n )ε (W (n ))
gdzie:
W (n ) jest wektorem wag sieci w czasie n,
ε (W (n )) jest wektorem błędu poszczególnych próbek na każdym neuronie w warstwie
ostatniej:
[
ε (W (n ))T = ε 1 ε 2 ε 3 ε 1 ... ε 1
]
pl
s.
ε2 ε3 .
K
K
K
1 1
1
2
natomiast J jest jakobianem, czyli macierzą pierwszych pochodnych cząstkowych błędu
i
każdej próbki w poszczególnych neuronach ostatniej warstwy - ε = y i - out i , i = 1,2,3
k
k
k
po wszystkich wagach sieci:
(
)
467
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
M. Grzanek, S. Wojczyk, M. Lizis
w
∂ε 1
1
1
∂w
1 1
∂ε 2
1
1
∂w
1 1
∂ε 3
1
1
∂w
1 1
∂ε 1
2
1
∂w
1 1
...
∂ε 1
K
1
∂w
1 1
∂ε 2
K
∂w1
1 1
∂ε 3
K
∂w1
1 1
...
...
...
...
...
...
∂ε 1
1
l
∂w
i
∂ε 2
1
l
∂w
i
∂ε 3
1
l
∂w
i
∂ε 1
2
l
∂w
i
...
∂ε 1
K
l
∂w
i
∂ε 2
K
∂wl
i
∂ε 3
K
∂wl
i
...
j
...
j
...
j
...
j
...
...
j
∂ε 1 ⎤
1 ⎥
3
⎥
∂w
3 10 ⎥
⎥
∂ε 2
1 ⎥
⎥
∂w 3
3 10 ⎥
⎥
∂ε 3 ⎥
1
⎥
∂w 3
3 10 ⎥
⎥
∂ε 1 ⎥
2
⎥
3
∂w
3 10 ⎥
⎥
...
⎥
∂ε 1 ⎥
K
⎥
3
∂w
3 10 ⎥
⎥
∂ε 2 ⎥
K
⎥
∂w 3
⎥
3 10
⎥
∂ε 3 ⎥
K ⎥
⎥
∂w 3
3 10 ⎦
da
.b
w
w
⎡ ∂ε 1
⎢ 1
⎢ ∂w1
⎢ 1 0
⎢ ∂ε 2
⎢ 1
⎢ ∂w1
⎢ 1 0
⎢
3
⎢ ∂ε1
⎢ 1
⎢ ∂w1 0
⎢
1
⎢ ∂ε 2
J (W ) = ⎢ 1
⎢ ∂w1 0
⎢ ...
⎢ 1
⎢ ∂ε K
⎢ 1
⎢ ∂w1 0
⎢
2
⎢ ∂ε K
⎢
⎢ ∂w1
⎢ 1 0
⎢ ∂ε 3
⎢ K
⎢ ∂w1
⎣ 1 0
...
...
...
j
...
j
pl
s.
Ponadto α jest parametrem algorytmu zaś I to macierz jednostkowa. Operator
T
−1
macierz odwrotną do macierzy J .
J oznacza transpozycję macierzy J , a J
Parametr α zawiera się w przedziale (0,...) i jest zmienny w trakcie uczenia. Jest on
mnożony przez współczynnik β , β > 1 , jeżeli przypuszczalny następny krok zwiększa
wartość błędu E danego wcześniejszym wzorem lub dzielony przez β jeżeli przypuszczalny następny krok zmniejsza tą wartość.
4 Wyniki
Do konstrukcji i uczenia sieci wykorzystano program Matlab 6.1. Uczono sieć składająca
się z 7 wejść, 20 neuronów w pierwszej warstwie, 10 neuronów w drugiej warstwie oraz
3 wyjść. Każda z trzech warstw ma przypisaną sigmoidalną funkcję aktywacji daną wzorem
φ(net) = 1/(1 + exp( − net)) , gdzie net oznacza wartość sumatora, czyli iloczyn skalarny
wektora wejściowego z przyporządkowanym mu wektorem wag. Sieć uczono metoda
Levenberga-Marquardta stosując następujące parametry uczenia sieci:
468
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
Sieć neuronowa jako system ekspercki na rynku instrumentów pochodnych
− wielkość zbioru uczącego – 150,
− maksymalna ilość epok dla procesu uczenia – 1000,
- 10
− docelowy błąd, który przerywa proces uczenia – 1e
,
w
- 20
− gradient poniżej którego przerywany jest proces uczenia - 1e
.
Procedura uczenia sieci jednokierunkowej to procedura modyfikowania wartości wag
w taki sposób, aby minimalizować wartość błędu. Błąd jest określony jako funkcja, której
zmiennymi są wagi sieci. Funkcja błędu przyjmuje wartości nieujemne oraz osiąga minimum globalne równe zero. Niej jest to funkcja wypukła a co się z tym wiąże, procedura
szukania jej minimum globalnego jest trudna.
Istnieje kilka metod uczenia sieci jednokierunkowych. Wybór metody LevenbergaMarquardta został podyktowany jego przewagą nad klasyczną wsteczną propagacją błędu.
„Algorytm Levenberga - Marquardta modyfikuje wagi w sposób grupowy, czyli po podaniu
wszystkich wektorów uczących.
Jest on jednym z najbardziej efektywnych algorytmów do uczenia sieci jednokierunkowych, który łączy w sobie zbieżność algorytmu Gaussa - Newtona blisko minimum, z metodą najszybszego spadku, która bardzo szybko zmniejsza błąd, gdy rozwiązanie jest dalekie.” [8]
Proces uczenia został przerwany automatycznie po 165 epokach. Poniższy rysunek
przedstawia zachowanie się błędu w trakcie trwania procesu uczenia. Jest to błąd średniokwadratowy liczony dla wszystkich elementów zbioru uczącego. Na rysunku oś pozioma
przedstawia liczbę epok uczenia, natomiast oś pionowej przedstawia błąd obliczony dla
wyjścia z sieci po zakończeniu każdej epoki.
da
.b
w
w
pl
s.
Rys. 1. Przebieg procesu uczenia. Zależność błędu od ilości epok
Dla nauczonej sieci neuronowej wyliczono błąd na zbiorze uczącym (150-cio elemento-4
wym). Otrzymano średniokwadratowy błąd na poziomie 1e .
469
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
M. Grzanek, S. Wojczyk, M. Lizis
w
W dalszej kolejności skonstruowana sieć neuronowa była użyta jako element prostego
systemu automatycznego. W tym celu wyeksportowano wagi dla nauczonej sieci do pliku
o ustalonym formacie. Dane te zostały zaimportowane i wykorzystane jako element programu napisanego w języku MQL4. Wykonany został szereg testów z kilkoma parametrami
oraz zamiennym użyciem sieci neuronowej lub tradycyjnej metody analizy technicznej
opartej na analizie średnich kroczących. W uproszczeniu metoda ta polega na zachowaniu
odpowiednich zależności pomiędzy średnimi [2]. Jeśli średnie wraz z długością okresu rosną to jest to sygnał do sprzedaży, natomiast jeśli średnie wraz z długością okresu maleją to
jest to sygnał do kupna. System dodatkowo był parametryzowany wartością „Stop Loss”
(zlecenie zamykające pozycję po określonym kursie, wykorzystywane jest do ograniczenia
strat [7]) oraz „Trailing Stop” (ruchomy stop, nazywany również zleceniem podążającym
za rynkiem [11], wykorzystywane w przypadku ruchu ceny w pożądanym kierunku, pozwala automatycznie redukować straty jak i zachowywać część wypracowanego zysku). System ten działał według następujących zasad:
− testową platformą był system transakcyjny X-Trader 4.0 (build 207) [10],
− do uczenia sieci wykorzystano środowisko Matlab 6.1.0.450 (Release 12.1),
− wszystkie transakcje dotyczą pary walutowej EURUSD,
− okresem analizy jest jednostka 5 minut,
− w danej chwili otwarta jest tylko jedna transakcja,
− wszystkie transakcje zawierane są na 0.1 lota (1 lot to miara określająca wielkość
transakcji na rynku FOREX, np. dla pary EURUSD 1lot to 100 000),
− dla wszystkich transakcji obowiązuje taka sama wartość „Stop Loss” i „Trailing
Stop” – wartość zmieniana dla różnych testów,
− wszystkie transakcje zamykane są automatycznie na podstawie wartości „Stop Loss”,
− wartość „Stop Loss” jest automatycznie modyfikowana przy pomocy funkcji
„Trailing Stop” z taką samą wartością jak wartość startowa „Stop Loss”,
− kapitał początkowy wynosił 10 000 USD,
− wszystkie testy wykonane zostały na danych historycznych z drugiej połowy 2007 r.
Przez zysk procentowy należy rozumieć różnicę wartości kapitału końcowego i kapitału
początkowego podzieloną przez wartość kapitału początkowego.
Przez zyskowną transakcję należy rozumieć taką, która nie spowodowała zmniejszenia
kapitału, czyli przyniosła zysk co najmniej w wysokości pokrywającej koszty związane
z jej zawarciem.
Tabele 2 i 3 w kolejnych kolumnach zawierają wyniki testów przeprowadzonych z różnymi wartościami parametrów „Stop Loss” i „Trailing Stop”. Wartości tego parametru wynosiły kolejno: 10, 25, 50, 75 i 100 pipsów (5 wartości parametru SL). W kolejnych wierszach umieszczone są dane dla testów różnych strategii (5 różnych strategii). Pierwszy
wiersz w obydwu tabelkach oznaczony „SN” dotyczy wyników systemu eksperckiego zbudowanego na bazie opisywanej sieci neuronowej, kolejne zaś o metodę średnich kroczących liczonych dla różnych okresów.
Ze względu na to, że strategie oparte o metody średnich kroczących są w pełni deterministyczne to test dla każdej pary (SL, strategia) wystarczyło wykonać jeden raz. Dla strategii opartej na sieci neuronowej wykonano natomiast trzy testy, a w tabeli umieszczono
średnią arytmetyczną z uzyskanych wyników. Strategia oparta o sieć neuronową jest niedeterministyczna, gdyż w fazie przygotowania sieci neuronowej pojawia się losowa inicjalizacja wag. Wylosowane początkowe wartości wag są punktem startowym dla procesu uczenia
sieci. Proces ten za każdym razem może skończyć się z innymi wartościami wag, a co za
tym idzie zwracać inne wartości wyjściowe.
da
.b
w
w
pl
s.
470
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
Sieć neuronowa jako system ekspercki na rynku instrumentów pochodnych
Tabela 2. Zestawienie procentowych zysków dla testów z różnymi parametrami.
w
Algorytm \ SL
SN
5/10/20
10/20/50
20/50/100
5/.../100
Średnia
10
-8,1%
-84,2%
-43,4%
-23,9%
-27,7%
-37,5%
25
-3,9%
-18,1%
-16,7%
-6,4%
-6,6%
-10,3%
50
4,5%
2,9%
1,8%
1,7%
2,5%
2,7%
75
8,5%
9,6%
-0,5%
1,3%
7,7%
5,3%
100
8,7%
13,3%
-1,3%
6,9%
9,8%
7,5%
Średnia
1,9%
-15,3%
-12,0%
-4,1%
-2,9%
-6,5%
100
43,3%
47,4%
33,3%
46,1%
48,8%
43,8%
Średnia
38,3%
37,0%
31,4%
34,2%
38,2%
35,8%
Tabela 3. Zestawienie procentowej ilości zyskownych transakcji.
10
23,0%
23,4%
23,8%
21,5%
24,9%
23,3%
w
w
Algorytm \ SL
SN
5/10/20
10/20/50
20/50/100
5/.../100
Średnia
25
32,9%
32,3%
31,9%
32,8%
32,0%
32,4%
50
42,3%
36,1%
32,3%
34,9%
38,9%
36,9%
75
50,0%
45,7%
35,5%
35,6%
46,4%
42,6%
da
.b
gdzie:
SL – wartość „Stop Loss” i „Trailing Stop”,
SN – sieć neuronowa,
5/10/20 – metoda średnich kroczących dla 5, 10 i 20 okresów,
10/20/50 – metoda średnich kroczących dla 10, 20 i 50 okresów,
20/50/100 – metoda średnich kroczących dla 20, 50 i 100 okresów,
5/.../100 - metoda średnich kroczących dla 5, 10, 20, 30, 40, 50 i 100 okresów.
5 Analiza wyników i wnioski
pl
s.
W tabeli 2 zawarte są dane o procentowych zyskach otrzymanych w wyniku testów dla różnych wartości „Stop Loss” i „Trailing Stop” z wykorzystaniem różnych strategii. Dla wartości SL równej 10 najlepszy rezultat otrzymano dla sieci neuronowej. Był on prawie pięciokrotnie lepszy niż, średni wynik wszystkich testowanych strategii. Pomimo tak dobrego
rezultatu testy dla wszystkich strategii zakończyły się stratą. Analogiczna sytuacja miała
miejsce dla wartości SL równej 25. W przypadku SL równego 50 wyniki wszystkich strategii zakończyły się dodatnim zyskiem, którego średnia wartość wynosiła 2,7%. Strategiami,
których zyski były większe od średniej okazały się strategie z wykorzystaniem sieci neuronowej (zysk 4,5%) oraz średnich kroczących 5/10/20 (zysk 2,9%). W przypadku wartości
SL równej 75 i 100 średnie wartość zysku wyniosły odpowiednio 5,5% i 7,5%. Strategiami,
których wartość zysku była większa od wartości średniej były strategie SN (zysk 8,5%
i 8,7%), średnich kroczących 5/10/20 (zysk 9,6% i 13,3,%) oraz średnich kroczących
5/.../100 (zysk 7,7% i 9,8%).
Podsumowując można stwierdzić, że w miarę wzrostu wartości SL średnia wartość zysku dla przeprowadzonych testów rośnie. Analizując efektywność poszczególnych strategii
widać, że średni zysk jest dodatnia jedynie dla SN. Dla wszystkich metod (wyjątek
10/20/50 dla SL 50 i 75) można zaobserwować wzrost procentowego zysku w miarę wzrostu wartości SL.
471
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
M. Grzanek, S. Wojczyk, M. Lizis
w
Tabela 3 zawiera dane o procentowej ilości transakcji zyskownych dla poszczególnych
testów otrzymanych dla różnych wartości SL oraz różnych strategii. Niezależnie od wyboru
strategii procentowa ilość zyskownych transakcji dla poszczególnych wartości parametru
SL oscyluje w granicach średniej. Maksymalne odchylenia sięgają co najwyżej kilku punktów procentowych. Analizując średnią wartość ilości zyskownych transakcji dla poszczególnych wartości SL (niezależnie od testowanej strategii) można powiedzieć, że średnia ta
wzrasta wraz ze wzrostem wartości parametru SL. Można to uzasadnić malejącym udziałem kosztu transakcji w wartości parametru SL. Koszt ten dla testowanej pary walutowej
wynosił 2 pipsy. Dla testów z parametrem SL równym 10 pipsów jest to 20%, zaś dla testów z parametrem równym 100 pipsów – 2%.
Ważnymi cechami przemawiającymi za stosowaniem systemów automatycznych są: odporność na stres, działanie zgodnie z wcześniej ustaloną strategią, nieuleganie emocjom
(zarówno gdy wygrywamy i jak przegrywamy) [1]. Systemy automatyczne w tym względzie nie mogą się równać nawet z doświadczonymi inwestorami. Istnieje jednak jeden dość
istotny aspekt takiego rozwiązania. Mianowicie autor systemu musi zyskać do niego takie
zaufanie, aby pozwolić mu na automatyczne (nie wymagające potwierdzania) zawieranie
transakcji. Istnieje bowiem możliwość wykorzystania strategii jako systemu wspomagającego inwestowanie – system przygotowuje miejsca i parametry transakcji, a użytkownik je
akceptuje bądź odrzuca. Takie podejście odbiera jednak zaimplementowanej strategii
wszelkie jej zalety związane ze słabością ludzkiej psychiki.
Kolejną ważną cechą inwestora jest obiektywizm, czyli umiejętność realnej ocena własnego postępowania. W tym celu konieczny jest dobór kryteriów do oceny. Przykładem,
który często pogrąża niedoświadczonych inwestorów jest procent zyskownych transakcji.
Jest on niewątpliwie pewnym wskaźnikiem, aczkolwiek sama przewaga ilościowa transakcji zyskownych nie oznacza jeszcze wygrywającej strategii. Przy takim wyborze dużą rolę
gra psychika człowieka działającego w stresie. Pod wpływem emocji wybiera on jako
wskaźniki jakości parametry najprostsze. Nie potrafiąc tym samym ocenić struktury wartościowej dla poszczególnych transakcji zyskownych lub stratnych. W praktyce okazuje się
bowiem, że systemy najlepszych inwestorów mają wyrównaną ilość transakcji stratnych
i zyskownych. Jednak przewaga średniej wartości zysku nad średnią stratą czyni system
strategią wygrywającą. Straty są bowiem integralną częścią wszelkich tego typu systemów
[1].
Podsumowując zaprezentowany mechanizm użycia sieci neuronowych jako automatycznego systemu na giełdzie walutowej okazał się mechanizmem skutecznym i lepszym od
analizy technicznej (w przykładzie reprezentowanej przez strategie oparte o metodę średnich kroczących). Kłopotliwe jednak jest jego stosowanie z uwagi na konieczność używania naprzemiennie dwóch aplikacji. Dlatego jako kolejny etap prac w tym zakresie planujemy zaimplementować bibliotekę umożliwiającą budowanie, testowanie i użytkowanie sieci
neuronowych bezpośrednio z poziomu platform transakcyjnych – czyli z poziomu języka
MQL4 [9]. Umożliwi to łatwiejsze testowanie sieci dla różnych parametrów wejściowych
oraz w przyszłości być może douczanie sieci neuronowych na bieżąco napływającymi danymi.
da
.b
w
w
pl
s.
Literatura
1.
2.
3.
4.
Kochan K.: Forex w praktyce. Vademecum inwestora walutowego, ONE Press, 2006.
Murphy John J.: Analiza techniczna rynków finansowych, WIG-PRESS, 1999.
Murphy John J.: Międzyrynkowa analiza techniczna, WIG-PRESS, 1998.
Osowski S., Sieci neuronowe, Oficyna Wydawnicza Politechniki Warszawskiej, 1994.
472
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
Sieć neuronowa jako system ekspercki na rynku instrumentów pochodnych
5.
w
Rutkowska D., Piliński M., Rutkowski L., Sieci neuronowe, algorytmy genetyczne i systemy
rozmyte, Wyd. Naukowe PWN, 1997.
6. Tadeusiewicz R., Sieci neuronowe, Akademicka Oficyna Wydawnicza, 1993.
7. http://www.aii.pl/article.php?id=5174
8. http://www.kik.pcz.czest.pl/nn/ Strona Katedry Inżynierii Komputerowej Politechniki
Częstochowskiej.
9. http://www.mql4.com/ - strona o MetaQuotes Language 4.
10. http://www.xtb.pl/ - strona Domu Maklerskiego X-Trade Brokers.
11. http://www.tms.pl/ - strona Domu Maklerskiego TMS Brokers.
da
.b
w
w
pl
s.
473
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008
Rozdział monografii: 'Bazy Danych: Rozwój metod i technologii', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2008
w
da
.b
w
w
pl
s.
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2008