Kontynuujemy cykl tekstów, które mają przybliżyć ciekawe funkcjonalności Amibrokera. Tym razem opiszemy funkcje, której używanie „odróżnia mężczyzn do chłopców” w tradingu. Z drugiej strony dzieli projektujących systemy na „prawie” milionerów i tych którzy porzucili wszelką nadzieję. Złośliwi twierdzą, że funkcja ta może również uzależnić – trader zamiast handlować będzie „gonić króliczka” czyli testować testować…. Ta funkcja to BACKTEST.
Z założenia backtest ma zastąpić testowanie projektowanych systemów na prawdziwych pieniądzach. Sprawdzenie skuteczności naszego systemu transakcyjnego na danych historycznych powinno pomóc nam również szybciej zidentyfikować
i wyeliminować jego słabe strony.
Zakładając, iż stworzyliśmy już system transakcyjny, który pozwoli nam w krótkim czasie stać się milionerami 😉 lecz mamy jeszcze pewne wątpliwości co do jego słuszności powinniśmy przeprowadzić testy bazujące na danych historycznych, najlepiej na szerokim horyzoncie czasowym ze względu na zmieniające się cechy danego rynku.
Algorytm
W pierwszej kolejności reguły otwierania i zamykania pozycji z naszego systemu należy zapisać w języku AFL(składnia tego języka jest bardzo intuicyjna i przypomina inne języki w których tworzy się systemy transakcyjne). W tym celu można wykorzystać następujące zmienne języka AFL zarezerwowane dla otwierania i zamykania pozycji długich i krótkich:
buy – wartość „prawda ” lub 1 otwiera pozycję długą
sell – wartość „prawda ” lub 1 zamyka pozycję długą
short – wartość „prawda ” lub 1 otwiera pozycję krótką
cover – wartość „prawda ” lub 1 zamyka pozycję krótką
Przy zastosowaniu strategii ?zawsze na rynku”(stop i odwrócenie) należy przypisać sprzedaż (zmienna sell) do zmiennej short, natomiast kupno(zmienną buy)do zmiennej cover:
short = sell;
cover = buy;
Do zaprezentowania szerokiej funkcjonalności Backtestu posłużę się bardzo prostym systemem transakcyjnym opartym na MACD:
Buy = MACD()>0;
Sell = MACD()<0;
Short = MACD()<0;
Cover = MACD()>0;
Testowaniu zostanie poddana spółka KGHM w okresie 07.04.2006 – 24.07.2008 przy założeniu, że sygnały będą generowane na wykresie godzinowym.
Po wpisaniu powyższej formuły w oknie ?Formula Editor„, w celu przetestowania historycznego systemu należy kliknąć na przycisk ?Back test” w oknie ?Automatic analysis„.
Analiza
Okno Automatic Analysis z listą symulowanych transakcji wygląda następująco:
W dolnej części okna ?Automatic Analisys” zamieszczone są wstępne wyniki testu, które pozwalają na szybką ocenę wydatności systemu.
Sekcja ?Apply to”
Przeprowadzony test dotyczy jedynie obecnie przeglądanej spółki KGHM, za co odpowiedzialna jest sekcja ?Apply to” opcja ?current symbol„. Amibroker pozwala także na jednoczesne przetestowanie systemu na wszystkich walorach dostępnych w naszej bazie, wtedy powinniśmy zaznaczyć opcję ?all symbols„. Jeżeli np. system nasz stworzyliśmy w celu dokonywania transakcji jedynie na akcjach, a nasza baza Amibrokera zawiera wszystkie instrumenty notowane na GPW, przy użyciu opcji ?use filter” i zdefiniowaniu odpowiedniego filtra jesteśmy w stanie wybrać pożądane walory.
Sekcja ?Range”
Test systemu przeprowadzony został na wszystkich dostępnych danych w naszej bazie. Jeżeli jednak uważamy, iż wynik naszego testu zostanie zniekształcony przez sytuację jaka miała miejsce np. na początku notowania waloru kiedy płynność była bardzo ograniczona możemy pominąć ten okres korzystając z sekcji ?Range„. Należy zaznaczyć opcję ?from” i wybrać interesujący nas okres. Dostępne są też innej opcje:
– n last quotations – ilość ostatnich kwotowań,
– n last days – ilość ostatnich dni.
Sekcja ?Results”
W tej części okna Automatic Analysis przedstawione jest zestawienie wszystkich symulowanych transakcji w czasie trwania testu wraz ze szczegółowymi danymi. Chcąc zaobserwować w jakim momencie na wykresie miały miejsce wygenerowane transakcje (spełniony został dany warunek kupna lub sprzedaży) należy kliknąć prawym przyciskiem myszy na dowolny wiersz i wybrać ?Show arrows for actual trades„. W podobny sposób można zilustrować pojedynczą transakcje, w tym celu należy dwukrotnie kliknąć na wybrany wiersz jednocześnie trzymając wciśnięty klawisz SHIFT. Zaznaczona niebieską obwódką transakcja na wykresie prezentuje się następująco (strzałki oznaczają moment wejścia i wyjścia):
Raporty
Amibroker umożliwia także wygenerowanie zestawienia zawierającego szczegółowe dane statystyczne dotyczące testowanego systemu. Należy kliknąć na przycisk ?Report” w oknie Automatic analysis. Analiza poszczególnych pozycji wygenerowanego raportu pomoże nam ocenić zyskowność oraz ryzyko testowanej strategii.
Poza danymi (zaznaczone w raporcie na czerwono), które dostępne były w dolnej części okna Automatic analysis raport zawiera szereg innych ważnych danych statystycznych.
Analizując powyższy raport możemy stwierdzić, iż transakcji stratnych było prawie dwukrotnie więcej niż zyskownych (39 do 22), co przy osiągniętym zysku rzędu 53,21% powinno nieco wzbudzić nasze podejrzenia i od razu wskazać element, który wart jest poprawienia. Kolejne dane dotyczące średniej wartości osiąganego zysku lub straty mogą pomóc nam w zdefiniowaniu ewentualnych stopów.
W podobny sposób można interpretować pozostałe dane.
Przy testowaniu kolejnych systemów transakcyjnych zapewne ujawnią się inne charakterystyczne elementy, które będą warte ulepszenia lub niestety spowodują, iż będziemy musieli zrezygnować z naszego systemu.
c.d.n. a w nim m.in. dystrybucja zysków i strat, krzywa kapitału, ustawienia backtester’a.
Zbigniew Jabłoński


Dodaj komentarz