Amibroker – testowanie przeszłości cz. 2

Kontynuujemy cykl tekstów dot. ciekawych funkcjonalności Amibrokera. Zgodnie z obietnicą, w części drugiej opisującej BACKTEST:

  • rozkład zysków/strat,
  • krzywa kapitału,
  • zmiany parametrów testowania (stopy, prowizje, opóźnienia transakcyjne).

Kolejnym narzędziem ułatwiającym podjęcie decyzji o zastosowaniu lub nie zastosowaniu danej strategii są wykresy z poziomu raportu testu historycznego. Amibroker pozwala zilustrować w postaci wykresu następujące elementy:
– wielkość zysku/straty odnotowana w trakcie testowania systemu(rozkład),
– MAE – maksymalna strata odnotowana w trakcie testowania systemu(rozkład),
– MFE – maksymalny zysk odnotowany w trakcie testowania systemu( rozkład).

rozkład zysków i strat

Wykres słupkowy przedstawiający rozkład osiąganego zysku/straty ponownie wskazuje na niepokojącą ilość transakcji stratnych. Jednocześnie widzimy, że przeważająca większość tych transakcji (37 z 39) generuje stratę mieszczącą się w przedziale 0-5%, a jedynie dwie transakcje zakwalifikowały się do przedziału 5-10% straty. Dzięki temu, iż większe straty nie były generowane, a zysk w pojedynczych transakcjach dochodził nawet do 20%, mniej liczne transakcje zyskowne były w stanie zniwelować straty, a nawet wygenerować znaczny zysk.
Zilustrowanie wyników testowanego systemu w formie wykresu słupkowego daje nam możliwość innego spojrzenia na generowane wyniki i kolejną szanse na wychwycenie ewentualnych wad.

Krzywa kapitału
Dla tych którzy zamiast cyferek wolą wykresy pomocnym narzędziem może okazać się tzw. krzywa kapitału. Graficzną prezentację bieżącego stanu kapitału w całym testowanym okresie wywołuje się klikając na przycisk ?Equity” w oknie Automatic Analysis. W przypadku prawidłowo zbudowanego systemu krzywa kapitału powinna przybrać kształt wznoszącej się, regularnej linii, co oznacza, iż system ma zastosowanie w różnych warunkach rynkowych. System mający zastosowanie tylko w pewnych warunkach rynkowych wyrysuje krzywą o nieregularnej linii, z częstymi wzrostami i spadkami.

Dodatkowym elementem tej formy prezentacji wyników jest niebieska linia Buy&Hold, krzywa ta ukazuje wielkość portfela w czasie trwania strategii ?kup i trzymaj“. Umożliwia to szybkie porównanie czy najprostsza metoda inwestycyjna w badanym okresie nie pozwalała na osiągnięcie większych zysków.
Analizując krzywą kapitału testowanego systemu możemy wyszczególnić dwie fazy związane z sytuacja panującą na giełdzie, a tym samym na spółce KGHM. Sytuacja taka wynika z braku możliwości zajęcia pozycji krótkiej na akcjach. W czasie trwania hossy, zysk regularnie rośnie, pozwalając w szczytowym momencie na podwojenie wartości portfela. Jednakże od zmiany trendu na spadkowy system generuje regularnie straty. Przebieg osiąganych zysków/strat jest bardzo korzystny dla samopoczucia inwestora, system od samego początku utrzymuje się powyżej wkładu początkowego.

linia kapitału

Ustawienia backtester’a

Powyżej zaprezentowane narzędzia pozwolą nam zidentyfikować ewentualne słabe strony naszego sytemu. Natomiast do zniwelowania, a nawet całkowitego wyeliminowania błędnych założeń możemy posłużyć się oknem Backtester settings. Nie chodzi tu o zmianę podstaw naszego systemu, a jedynie o zarządzanie poszczególnymi parametrami.
Twórcy Amibrokera proponują zarządzanie poszczególnymi parametrami badanego systemu z poziomu języka AFL, jednakże dla tych, którzy wolą prostsze rozwiązania stworzono okno Backtester settings.

Ustawienia backtester?a
Z tego poziomu program Amibroker pozwala na zmianę podstawowych parametrów, takich jak:
– wartość portfela,
– okresowość (dane dzienne/tygodniowe/miesięczne),
– wielkość zlecenia,
– rodzaje pozycji (long, short, long and short),
– stopy maksymalnej straty i pożądanego zysku,
– wartość prowizji.

Wkład początkowy ustalony został na poziomie 10 000 zł, a system generował sygnały na danych godzinowych. Z tego poziomu Amibroker pozwala na szybka weryfikację badanego systemu także na innych interwałach. W tym celu należy rozwinąć okno ?periodicity” i wybrać dany interwał.
Ze względu na testowany walor – akcje KGHM-u, w pozycji ?Positions” zostało ustalone, iż system będzie zajmował jedynie pozycje długie. W przypadku gdy na danym walorze (np. kontrakty terminowe) istnieje możliwość zawierania także pozycji krótkich w polu ?Positions” można zdefiniować zawieranie transakcji tylko krótkich – opcję short lub jednoczesne zawieranie transakcji długich i krótkich – long and short.

W tej samej zakładce okna Backtester settings w sekcji ?Commissions&rates” program pozwala na zdefiniowanie wielkości płaconej prowizji. Niestety niektórzy inwestorzy zapominają o tym elemencie przy tworzeniu własnych strategii inwestycyjnych, co często prowadzi do błędnej decyzji o zastosowaniu systemu w rzeczywistych transakcjach na giełdzie. Systemy transakcyjne, które generują rewelacyjne wyniki, po uwzględnieniu prowizji mogą okazać się całkowitą klapą.

Prowizję definiuję się korzystając z opcji ?commission table“. W prezentowanym teście celowo do tego etapu prowizja nie była uwzględniona. Po zdefiniowaniu następującej stawki prowizyjnej: 0,39% (min: 5 zł), krzywa kapitału prezentuje się następująco.

linia kapitału z prowizją

Niestety testowany system po uwzględnieniu prowizji prezentuje się bardzo niekorzystnie, znaczący zysk generowany jest jedynie w czasie większych ruchów w górę. Co więcej cała inwestycja w badanym okresie kończy się ok. 5 % stratą!

Opóźnienia transakcyjne

W celu uniknięcia kolejnych niespodzianek, które mogą czekać na nas przy użytkowaniu systemu proponuję uwzględnić także opóźnienia transakcyjne. Szczególnie ważne jest to w przypadku systemów bazujących na danych dziennych. Ceny transakcyjne oraz opóźnienia możemy zdefiniować w zakładce ?Trades”:

Opóźnienia transakcyjne

Stopy

Dodatkową formą podkręcenia naszego systemu może być zdefiniowanie stopów. Najszybszą drogą określenia stopu jest skorzystanie z zakładki Stops w oknie Backtester settings.

Po dodaniu do wyliczeń stawek prowizyjnych próbowałem ratować system poprzez zdefiniowanie stopów. Niestety przeprowadzone symulacje nie generowały na tyle znacząco lepszych wyników aby bez wahania można było skorzystać z systemu w rzeczywistości.

Stopy

W ten sposób jesteśmy w stanie określić maksymalna dopuszczalną stratę oraz docelowy poziom zysku(stopy mogą być określane procentowo lub cenowo).

Szeroka funkcjonalność programu Amibroker pozwala nam stworzyć jakże pożądany przez wielu inwestorów tzw. stop kroczący. Stop tego typu umożliwia inwestorom ochronę wypracowanego zysku. Wartość stopa zmienia się w zależności od osiąganej wartości badanego waloru. Przy osiągnięciu przez walor wyższej ceny stop przemieszcza się w górę, natomiast przy spadku ceny waloru poniżej poziomu ustawionego stopu następuje zamknięcie pozycji. Ilustracja graficzna działania stopa kroczącego znajduje się poniżej:

Stop kroczący

Stopa kroczącego, podobnie jak w przypadku stopów innego typu możemy określić na dwa sposoby, za pomocą zakładki stops w oknie Backtester settings w sekcji Trailing stop lub przy użyciu formuły w języku AFL:

ApplyStop( 2, 1, 10, 1 );

// 10% stop kroczący, tryb procentowy, wyjście po aktywacji
stopu lub można użyć predefiniowanych stałych, które są bardziej opisowe
ApplyStop( stopTypeTrail, stopModePercent, 10, True );

Po co to wszystko?

Pod pierwszym wpisem na temat backtester’a pojawiła się wątpliwość natury “filozoficznej”. Po co to wszystko, skoro można do każdych danych dopasować jakieś parametry.

Abstrahując od odpowiedzi na to pytanie (lepiej to zrobi zapewne Tomek Symonowicz w swoim blogu), komentarz ten traktuję jako natchnienie do kolejnego tekstu dot. Optymalizacji.

Zbyszek Jabłoński

[Głosów:0    Średnia:0/5]

2 Komentarzy

  1. opcja

    Panie Michale!
    Cytuję: "Po co to wszystko?" Otóż bardzo dokładnie zapoznaje Pan odbiorców z funkcjonalnością programu Amibroker. Pana forma edukacji jest jasna i czytelna. Nie tylko dla doświadoczonych , ale także dla osób wkraczających w świat / pozwolę sobie napisać hossy/. Pozdrawiam !

  2. amibroker

    Witam,
    i tak trzymać! Należy optymializować i wykorztsywać dane historyczne, bo tylko one są prawdziwe. Zachowanie inwestorów może podlegać różnym emocjom, ale nasz postawiony STOP LOSS NIE! Dlatego należy badać wszystkie mozliwości zbudowanego systemu, aby wyciąnąć z niego jak najwięcej.
    Pozdrawiam. Amibroker

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę podać wartość CAPTCHA: *