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).
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.
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.
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.
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”:
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.
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:
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
2 Komentarzy
Dodaj komentarz
Niezależnie, DM BOŚ S.A. zwraca uwagę, że inwestowanie w instrumenty finansowe wiąże się z ryzykiem utraty części lub całości zainwestowanych środków. Podjęcie decyzji inwestycyjnej powinno nastąpić po pełnym zrozumieniu potencjalnych ryzyk i korzyści związanych z danym instrumentem finansowym oraz rodzajem transakcji. Indywidualna stopa zwrotu klienta nie jest tożsama z wynikiem inwestycyjnym danego instrumentu finansowego i jest uzależniona od dnia nabycia i sprzedaży konkretnego instrumentu finansowego oraz od poziomu pobranych opłat i poniesionych kosztów. Opodatkowanie dochodów z inwestycji zależy od indywidualnej sytuacji każdego klienta i może ulec zmianie w przyszłości. W przypadku gdy materiał zawiera wyniki osiągnięte w przeszłości, to nie należy ich traktować jako pewnego wskaźnika na przyszłość. W przypadku gdy materiał zawiera wzmiankę lub odniesienie do symulacji wyników osiągniętych w przeszłości, to nie należy ich traktować jako pewnego wskaźnika przyszłych wyników. Więcej informacji o instrumentach finansowych i ryzyku z nimi związanym znajduje się w serwisie bossa.pl w części MIFID: Materiały informacyjne MiFID -> Ogólny opis istoty instrumentów finansowych oraz ryzyka związanego z inwestowaniem w instrumenty finansowe.
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 !
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