Podczas ostatniej konferencji WallStreet w Zakopanem, kolega Jurek prosił mnie o poruszenie na blogu tematu, traktującego o pomiarach efektywności transakcyjnych systemów mechanicznych, celem wyboru najskuteczniejszych(ego) z nich. Obiecałem- słowa dotrzymuję 🙂
W zasadzie rdzeniem wyznaczonego zadania, o ile dobrze zrozumiałem, miała być kwestia użycia takiego matematycznego czy statystycznego wskaźnika, który z jak najmniejszym obciążeniem i w sposób jak najbardziej syntetyczny mógłby porównywać jednocześnie stabilność, zyskowność i ryzyko systemów tak by z dużym prawdopodobieństwem wybrać ten najlepszy. Wprawdzie nie znam perfekcyjnego narzędzia dla tak postawionego celu ale nie będzie chybionym pomysłem wrzucenie kilku moich przemyśleń w tym temacie oraz przedstawienie tego, co w branży pojawiło się ostatnio. Mam na myśli oczywiście pomysły przyswajalne inwestorom biegłym już nieco w budowaniu strategii mechanicznych ale jeszcze nie na poziomie quants, czyli inżyniero-matematyko-fizyków z dyplomami, którzy za kolosalne pieniądze wynajdują takie cuda dla funduszy hedgingowych. Z góry uprzedzę, że kolejnych kilka wpisów poświęcę postawionemu problemowi dlatego niezainteresowani mają zasłużone wakacje od czytania 😉
Zanim jednak dotrzemy do sedna sprawy potrzebne jest zrobienie jednego założenia, bez spełnienia którego rezultat końcowy może okazać się być obarczony błędem. Chodzi mianowicie o to by w trakcie procesu oceniania PORÓWNYWAĆ PORÓWNYWALNE a więc nie jabłka do pomarańczy tylko owoce tego samego rodzaju. Dotyczy to kilku elementów prawidłowej budowy systemu, najważniejsze chciałbym wyjaśnić niżej.
Po pierwsze: sam dobór danych. Nie chcę pisać o rzeczach oczywistych typu przyrównanie wyników końcowych dla testów puszczonych na danych o tej samej długości. Chodzi raczej o coś co fachowo nazywa się stopniami swobody. Jeśli testujemy algorytm w którym jednym z parametrów jest średnia 200 okresowa to naturalnym zjawiskiem jest, że pierwszy sygnał zajęcia pozycji mógłby paść nie wcześniej niż po 200 dniach od pierwszej daty w dostępnych danych. O ile chcemy porównać go do systemu, w którym najdłuższy parametr jest 3 okresowy to powstaje nam różnica 197 dni, w czasie której może zdarzyć się dosłownie wszystko a więc dość istotnie zaburzyć oceny. Tym bardziej, że w realu, gdy przystępujemy do inwestowania, nie przeczekujemy przecież 200 dni jako, że mamy je już w ostatnich danych. W takim razie celowe jest rozpoczęcie odliczania sygnałów w jednym momencie. Jeśli nie dysponujemy danymi z 200 wcześniejszych okresów to najprostszym rozwiązaniem jest puszczenie tego drugiego testu (z trzydniowym okienkiem) dopiero od 197 dnia dostępnego szeregu cenowego.
Po drugie: odpowiedni sposób zarządzania wielkością pozycji. I mam na myśli ustrzeżenie się przed błędem, który powstaje w wyniku używania do testów tylko 1 sztuki danego instrumentu (np. 1 kontraktu terminowego) bez reinwestowania zysków. Sam z pewnymi oporami tego sposobu prezentacji używam na blogu gdyż w takiej najprostszej formie widać efektywność surowej strategii, którą można później podkręcić robiąc optisizing a więc ustalić reguły money management dla optymalnego użycia kapitału w każdej transakcji. O ile oczywiście dysponujemy gotówką wystarczającą do zagrania większą ilością kontraktów.
Otóż problem z jedno kontraktowym testem pojawia się przy liczeniu obsunięć i chyba najprościej będzie wytłumaczyć to na przykładzie.
Załóżmy, że dysponujemy kapitałem 10 000 PLN.
System 1:
Od razu po pierwszych 3 transakcjach następuje największe obsunięcie w testach (maxDD) o wielkości łącznej 5 000 PLN czyli 50% dostępnego wcześniej kapitału
System 2
Obsunięcie o tej samej wielkości czyli 5 000 PLN następuje dopiero w połowie badanego okresu gdy nasz kapitał zdążył już urosnąć do 50 000 PLN. Program pokaże nam na wykresie krzywej kapitału niewielki ząbek z 10% obsunięciem bo tyle właśnie stanowi proporcjonalnie 5 000 PLN maxDD podzielone przez 50 000 PLN maksymalnej wielkości kapitału.
Mamy więc nominalnie takie same obsunięcie w obu przypadkach choć zdecydowanie różne procentowo. Gdyby więc teraz przyszło wybrać system lepszy to bez zająknięcia amator wypuści się na System 2 co jest oczywistym błędem wnioskowania. Bo gdybyśmy zaczęli trading Systemem 2 w momencie, w którym zaczął się maxDD to nasz rzeczywisty zjazd wyniósłby również 50%! To jest właśnie pułapka złudzenia w jaką wpada inwestor nieuprzedzony o owej nieścisłości, która nie pojawia się w testach ze zmienną wielkością pozycji. Dlatego jeśli chcemy porównać systemy jednopozycyjne musimy przeliczać zyski i straty z transakcji nie do aktualnej linii kapitału ale np. do stałej kwoty początkowej !
I dodatkowa uwaga- sprzedający systemy mechaniczne lub rekomendacje tworzone na ich podstawie lubują się w pokazywaniu linii kapitału na podstawie back testu z użyciem 1 kontraktu. To często maskuje rzeczywiste ryzyko jak widać w przykładzie wyżej.
I po trzecie: większej realności oceny dodaje porównywanie testów tylko na danych out-of-sample czyli niewidzianych w procesie optymalizacji. Pisałem o tym dość szeroko przy temacie Walk-forward testów kilka miesięcy temu. Już zresztą samo porównanie wyników otrzymanych na próbie out-of-sample (o.o.s) z próbą in-sample (i.s, ta na której dokonujemy optymalizacji) powie nam sporo o wrażliwości i stabilności systemu. Oczywiście pod warunkiem, że optymalizacja nie była robiona z tzw. podglądaniem czyli ustalaniem parametrów tak długo aż wyniki o.o.s i i.s będą najzyskowniejsze. Porównywanie testów systemów na całości dostępnych danych (i.s+ o.o.s) nie jest jednakże błędem ale trzeba pamiętać, że część z tego wyniku jest tylko rezultatem naszej teoretycznej obróbki cen. Jeśli nieopatrznie dokonaliśmy zbyt mocnego dopasowania do krzywej (curve fitting) to robienie porównań niepotrzebnie tylko utrwala nam złudzenia. A to dlatego, że test całości może okazać się bardzo zyskowny ale niemal cały wkład w zyskowność wniósł tylko okres is.
Cdn
—*Kat*—

