Kluczowym etapem pracy nad własnym systemem transakcyjnym jest weryfikacja jego skuteczności na danych historycznych – czyli właśnie backtesting. Jak on działa i na czym on polega – tego dowiesz się z dzisiejszego tekstu.
Jak działa backtesting?
Generalnie w backtestingu chodzi o to, żeby sprawdzić jak nasza strategia radziłaby sobie na danych historycznych. Dzięki temu jesteśmy w stanie zdobyć szereg cennych informacji:
- Weryfikacja, czy strategia w ogóle jest dochodowa i czy poziom tej dochodowości jest satysfakcjonujący. Zyskowność sama w sobie ma niewielkie znaczenie. Owszem – nie ma sensu inwestować pieniędzy w strategie, które nie przynoszą zysków. Jednak – nawet jeśli strategia okazuje się zarabiać pieniądze – zysk sam w sobie niewiele mówi bez zestawienia z miernikiem ryzyka.
- Na jakich interwałach czasowych strategia radzi sobie najlepiej. Właściwy backtesting powinien obejmować różne interwały (świeczki minutowe, godzinowe, dzienne itd.), tak aby zrozumieć, jak strategia radzi sobie na nich i jak duże są różnice w wynikach.
- Jak strategia radzi sobie na różnych instrumentach. Jeśli nasza strategia ma działać na rynku forex, warto sprawdzić nie tylko jak radzi sobie na jednej parze walutowej. Powinniśmy sprawdzić, czy wyniki są powtarzalne na innych instrumentach, żeby mieć większą pewność, że dobre wyniki na pojedynczym instrumentem nie są dziełem przypadku lub nadmiernej optymalizacji
Metody backtestingu
Mówiąc ogólnie, istnieją dwa sposoby na weryfikację skuteczności strategii inwestycyjnej:
- Manualny
- Zautomatyzowany
Manualny backtest
Manualny polega na tym, że otwieramy sobie wykres i ręcznie szukamy okazji do zawarcia transakcji, a także sprawdzamy moment wyjścia z pozycji. Następnie wyniki wpisujemy sobie na kartkę albo do arkusza kalkulacyjnego (Excela). Jest to proces niezwykle monotonny i szalenie czasochłonny w przypadku strategii wykorzystujących analizę techniczną. W dodatku bardzo łatwo o błędy. Ma on jakiś sens w przypadku strategii opartych o analizę fundamentalną, gdzie wykres nie ma znaczenia i interesują nas głównie wartości wskaźników finansowych. Jednak osobiście stanowczo odradzam stosowanie manualnej weryfikacji, w sytuacji gdy oznacza ona wpatrywanie się godzinami w wykres.
Sposób zautomatyzowany polega na wykorzystaniu algorytmów w celu wyszukania okazji inwestycyjnych oraz symulacji prowadzenia pozycji. Istnieje wiele programów i platform pozwalających przeprowadzenie takich analiz.
Zautomatyzowany backtest
W przypadku forexu oraz instrumentów tradycyjnie dostępnych u brokerów forexowych świetnym rozwiązaniem jest środowisko programistyczne platformy MetaTrader 4/5, a konkretnie MQL4/MQL5. Obecnie trwa proces przejścia ze standardu MQL4 na MQL5, który jest kolejną – nowszą wersją popularnego środowiska programistycznego.

Jeśli jednak jesteśmy zainteresowani innymi instrumentami np. kryptowalutami lub akcjami – sprawa jest odrobinę bardziej skomplikowana. Żeby korzystać z MQL4/MQL5 musimy zaimportować notowania (dane historyczne) do platformy MetaTrader. Jeśli to zrobimy, możemy dalej stworzyć program do testów strategii w tym środowisku. W przeciwnym razie zdani jesteśmy na inne technologie.
Wówczas prawdopodobnie najlepszym rozwiązaniem okaże się przekształcenie danych historycznych do formatu akceptowanego przez Pythona (na szczęście Python akceptuje wiele formatów) oraz dalsze analizy właśnie w tym środowisku. Dobra wiadomość jest taka, że Python jest jednym z łatwiejszych języków programowania: jest wiele prostszy od języków takich jak C, czy C++ (autor wpisu ma doświadczenie jako programista C++ oraz Pythona) i uznaje się, że jest jednym z bardziej przystępnych języków do nauki dla początkujących.
Jeśli tak się składa, że mamy już jakieś doświadczenie w programowaniu, nie powinniśmy mieć zbyt wiele problemów z wdrożeniem się w tę technologię – niezależnie czy mówimy o platformie MetaTradera, czy o Pythonie. Poza tymi głównymi rozwiązaniami istnieją jeszcze inne, mniej popularne np. TradeStation i ich własny język programowania, Java w której tworzymy algorytmy na platformę brokera Dukascopy oraz inne – oparte o język C#. Teoretycznie możemy zrobić backtesting nawet importując notowania do Excela i symulując handel za pomocą kodu VBA lub formuł excelowych. Jest to rozwiązanie spotykane stosunkowo często w przypadku strategii opartych o analizę fundamentalną.
Na co zwracać uwagę podczas backtestingu?
Dwa kluczowe obszary, na które należy zwrócić uwagę to kwestia danych oraz wybór odpowiednich parametrów.
Dane
Zanim w ogóle zabierzemy się do roboty powinniśmy upewnić się, że dane na których zamierzamy testować naszą strategię są dobrej jakości. Nie zawsze można powiedzieć to o danych domyślnie dostarczanych przez brokera. Często te starsze niż kilka tygodni lub miesięcy bywają zniekształcone lub dziurawe.
Na szczęście dane możemy kupić w internecie w pasującym nam formacie i jest to stosunkowo tanie. Przykładem firmy oferującej dane jest Tickstory – oferują oni również dość bogatą darmową wersję. Pamiętajmy, że dane dobrej jakości zajmują dość dużą przestrzeń dyskową, toteż upewnijmy się, że mamy wystarczająco wolnego miejsca na dysku twardym zanim zaczniemy pobieranie.
Ustawienia parametrów backtestingu
Poniżej garść dobrych praktyk związanych z ustawieniem odpowiednich parametrów:
- Pamiętajmy, aby testować na różnych instrumentach. Im więcej instrumentów przetestujemy tym większa próba statystyczna i większa pewność wyników naszej strategii.
- Okres testowania powinien być wystarczająco długi, aby liczba transakcji w teście pozwalała na wyciągnięcie wniosków. Przyjmuje się, że przeciętne strategie powinny generować minimalnie 300-500 transakcji, aby wyniki były wiarygodne. Oczywiście – im więcej tym lepiej.
- Spread – powinniśmy ustawić najbliżej rzeczywistego spreadu, tak aby wyniki były najbardziej wierne temu co rzeczywiście wydarzyło się na rynkach w przeszłości.
- Opóźnienia w realizacji transakcji – powinny odzwierciedlać przeciętne opóźnienia wynikające z naszego połączenia internetowego oraz infrastruktury brokera.
- Optymalizacja – nie powinniśmy optymalizować więcej niż 2 parametrów na raz, gdyż w przeciwnym razie niemal na pewno dojdzie do nadmiernego dopasowania parametrów do danych. Wyniki na danych historycznych będą wówczas wyglądać atrakcyjnie, jednak szansa, że powtórzą się na realnym koncie są znikome.

Na co zwracać uwagę w wynikach
- Liczba transakcji – im większa tym lepiej. Wtedy większa jest nasza pewność dotycząca wyników.
- Zysk lub strata – naturalnie im większy zysk jest preferowany. Pamiętajmy, żeby zestawić go z maksymalnym odnotowanym obsunięciem kapitału.
- Profit factor – stosunek sumy zysków do sumy strat. Im większy tym lepiej. Generalnie to jaki poziom jest dobry zależy od innych czynników: typu strategii, częstości zawierania transakcji i innych, ale powinniśmy celować w poziom 2-3.
- Kształt krzywej kapitału oraz obsunięcia kapitału – im bliższa rosnącej funkcji liniowej nasza krzywa kapitału tym lepiej, gdyż oznacza to stabilne zyski przerywane niewielkimi stratami. Jest to charakterystyka pożądana przez każdego inwestora. Zwróćmy jednak uwagę nie tylko na to jak bardzo „poszarpana” jest nasza krzywa kapitału, ale także czy strategia nie radzi sobie z czasem coraz gorzej.
