Jak testować system transakcyjny?


System transakcyjny na kontrakty na WIG20 generuje już pierwsze sygnały i zawiera rzeczywiste transakcje. Zanim jednak będzie można na ich podstawie wyciągać jakieś wnioski, opiszę sposoby testowania systemu transakcyjnego.

Testowanie systemu

Pierwszy etap, czyli testowanie na danych historycznych opisałem na bezemerytury.pl/inwestowanie-w-kontrakty-na-wig20-ile-mozna-zarobic.

Natomiast możliwe zagrożenia opisałem na bezemerytury.pl/zagrozenia-dla-skutecznosci-systemu-transakcyjnego.

W stosunku do opublikowanych testów, zmieniłem jeszcze pewne założenia w systemie, przez co szacowana liczba transakcji spadła aż trzykrotnie. Natomiast szacowane zyski pogorszyły się tylko o 20% (a i to tylko w przypadku najlepszych wersji z opóźnieniem 0 i 15 minut, w wersjach z większym opóźnieniem zyski poprawiły się). Nawet w pierwszym wariancie niewielkie pogorszenie wyników to mała cena, za tak duże zmniejszenie stresu towarzyszącego składaniu zlecenia („zdążę, czy nie zdążę, uda się tym razem zamknąć z zyskiem, czy nie…”). Teraz zlecenie jest średnio co 7h sesyjnych, w praktyce więc raz dziennie.

Ale…

Powyższe to nadal opis wyników testów na danych historycznych. Jest to pierwszy etap testowania systemu. Mój przechodzi go śpiewająco. Jednak przed nim co raz trudniejsza droga.

Drugim etapem testowania jest optymalizacja wskaźników. Czyli np. jeśli naszym wskaźnikiem tego, czy warto kupić czy sprzedać jest przebicie przez cenę linii średniej za ostatnie X dni, to optymalizacja polega na znalezieniu takiej liczby X, dla której wyniki będą najlepsze.

Kluczowe testy walk-forward

Kolejny etap to test walk-forward. Chodzi o to, by jeszcze przed inwestowaniem prawdziwych pieniędzy sprawdzić, jak zachowa się system w przyszłości, na danych, jakich system nie poznał, dla których nie został zoptymalizowany. Nie będę się tu rozpisywał na ten temat, zainteresowanych odsyłam do kilku bardzo dobrych wykładów na ten temat:

Ustawiłem okres dla danych optymalizowanych wynoszący 2 miesiące (co przy danych intraday daje ok 1300 świeczek) a okres sprawdzania – jeden tydzień. Krótko mówiąc, test ten symuluje sytuację, jakbym zoptymalizował parametry bazując na pierwszych dwóch miesiącach, następnie przez tydzień grał wg tych parametrów, następnie ponownie zoptymalizował je za ostatnie dwa miesiące (więc już z tym granym tygodniem), znowu grał tydzień, znowu zoptymalizował itd.

Testy walk-forward mój system przechodzi całkiem nieźle, choć oczywiście wyniki są gorsze, niż dla testów teoretycznych, na danych służących do jego budowy i optymalizacji. Poniższy raport to podsumowanie takich „realnych” 16 tygodni grania (gdy pomiędzy nimi następują opisane optymalizacje), dla inwestycji 11500zł i gry trzema kontraktami (w żmudne 4h testy dla pierwotnie przykładowych 5000zł i jednego kontraktu nie chciałem juz się bawić). Po lewej wariant najlepszy, po prawej najgorszy (chodzi o warianty parametrów, nie opóźnienie w realizacji sygnałów, które pokazywałem w poprzednim artykule). Zwracam uwagę, że wyniki są za okres 4 miesięcy, aby porównać je z poprzednimi (za 6 m-cy) trzeba porównywać wartości roczne (wiersze Annual…).

wyniki walk-forward

1_ Portfolio Equity 2_ Portfolio Equity

1_ Underwater Equity 2_ Underwater Equity

Test forward w wariancie leniwym/pesymistycznym

Zrobiłem jeszcze test inwestora leniwego. Ma obrazować sytuację, gdy system został zoptymalizowany pod historyczne wyniki za 2 miesiące, a następnie działał w warunkach realnego rynku (czyli system nie znał tych danych dla celów optymalizacji) przez kolejne 4 miesiące bez żadnych zmian w ustawieniach. Wyniki są bardzo dobre – gdybym 4 m-ce temu ten system uruchomił (a było to możliwe, skoro w parametrach systemu nie ma zapamiętanych danych za ten okres) dziś z zainwestowanych 11500zł byłoby na koncie 23688zł.

Symulacja

Symulacja-Portfolio-Equity Symulacja-Underwater-Equity

Przedostatni krok – testy Monte Carlo

Kolejnym testem (już ostatnim przed sprawdzeniem w realnych transakcjach) jest test Monte Carlo. W skrócie polega on na tym, że każdy parametr, jaki zadajemy modułowi testującemu, fałszujemy o np. 10%. To pierwszy wariant. Drugi to fałszowanie cen np. o 0,25% (to jest bardzo dużo, czasem przez kilka godzin nie ma takiej zmiany). Ja zastosowałem oba te sposoby jednocześnie.

Mówiąc kolokwialnie, chciałem sprawić, by mój system zgłupiał. Taki test przeprowadzamy np. 1000 razy (by wypełnić statystykę losowości dla każdego parametru) i jeśli najgorszy z wyników nas zadowala, możemy iść dalej. Dla mojego systemu najgorszy i najlepszy wynik testów Monte Carlo z fałszowaniem zarówno parametrów o 10%, jak i cen o 0,25% jest następujący.

wyniki Monte Carlo

Czyli przy jakimś zwariowanym rynku, teoretycznie mogę spodziewać się zysku za pół roku w wysokości od 20 do 363%… Tyle mówi teoria.

Pierwsze transakcje, pierwsze problemy techniczne

Po przejściu przez Monte Carlo, można już zacząć testy praktyczne, co można obserwować na bieżąco na stronie twitter.com/BezEmerytury.

Zaczęło się od zajęcia pozycji długiej (BUY), jako kontynuacja takiej pozycji z poprzedniej serii. Niestety błąd w konfiguracji powiadomień spowodował, że pierwszy sygnał po złożeniu zlecenia o godzinie 9.00 nie został opublikowany, opublikowałem go więc ręcznie kilka godzin później. Kolejne sygnały publikowały się już bez problemów, kilka sekund po realizacji zleceń.

Już miałem napisać, ze system nigdy nie wylogował się, a tu piątek sprawił mi psikusa i nastąpiło to w połowie dnia. Zatem tak całkiem bez opieki nie można go zostawić. W piątek też na skutek mojego testowania w trakcie sesji nie został opublikowany jeden sygnał, muszę powstrzymać się od „grzebania” gdy system pracuje.

Psychika inwestora

Poza kwestiami techniczno-finansowymi, ważne dla mnie były obserwacje mojej psychiki. Zupełnie inaczej odbierałem emocje towarzyszące zbliżaniu się wykresu do punktów, które mogły dać sygnał. Było, jakbym oglądał dobry film sensacyjny, takie emocje „z tylnego siedzenia bolidu”. Kilka razy kurs ocierał się o poziom kwalifikujący do złożenia zlecenia, osobiście bym pewnie kupił (zbędnie), a w punktach, gdy faktycznie zostały zawarte transakcje, raczej bym się wstrzymał (też błędnie). Co ważne, jak mi się znudziło oglądanie, zająłem się innymi sprawami, a gra toczyła się dalej z moim udziałem (no, udziałem mojego „asystenta” 🙂 – bardzo ciekawe przeżycia…

O rzeczywistych, finansowych wynikach za wcześnie pisać, poświęcę temu kolejny artykuł, lecz niecierpliwi mogą na bieżąco je poznawać na twitter.com/BezEmerytury.


Chcesz wiedzieć więcej? Wejdź na stronę z Poradnikami.


Zostaw komentarz