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*—
5 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.
Ja przeżywałem podobny problem tylko w inną stronę. Badałem system i liczyłem obsunięcia w pkt – była taka moda w sieci. Wszystko było pięknie dopóki
grałem 1 kontraktem. Później przyszło pakowanie się pod korek i obsunięcie 50 pkt wcześniej niezbyt straszne, zlikwidowało mi pozycje (margin call).
Taka mała przestroga dla idących w tę stronę ;).
@KatHay
Czy wobec istotnosci modelu zarzadzania pozycja, powinno sie traktowac go jako nieodlaczna czesc systemu? Innymi slowy, czy optymalizacja i testowanie powinno rowniez dotyczyc modelu zarzadzania pozycja? Wiele znanych osobistosci uwaza, ze bardziej wskazane jest skupienie sie na MM, niz na samych generowanych sygnalach. Albo podam pytanie jeszcze inaczej: czy w procesie dewelopmentu systemu, zaczynajac od koncepcji slownomuzycznej, a nastepnie poprzez przeniesienie jej na kod konkretnej platformy — czy juz wowczas nalezy myslec o MM?
Duzo sie pisze oroznych strategiach generujacych sygnaly zajecia pozycji, ale jakby mniej mowi sie jednak o strategiach MM.
Tak a propos: super topic z tym wpisem sie rozpoczyna (jak dla mnie przynajmniej 🙂 ). Pozdrawiam
Dzięki Kat za to że pamiętałeś, choć okoliczności naszych rozmów w pełni by Cię usprawiedliwiały w zapomnieniu, w końcu się działo w Zakopanym ;-).
Oczywiście z niecierpliwością czekam na „ulubiony ciąg dalszy”.
Jednak nasuwa mi się takie spostrzeżenie o punktach swobody.
Czy włączanie jeszcze do tematu optymalizacji nie robi mojej prośby niewykonalną?
Optymalizacja ma to do siebie że jest sprawą indywidualną zależną od preferencji budowniczego systemu, zapewne jak każdy zaczynałem od maksymalizacji zysku (CAR) szybko jednak przeszedłem na CAR/MDD potem był MAX DD a następnie chyba w naturalny sposób doszedłem do optymalizacji na krzywą kapitału.(bo w końcu ona jest tu pomiotem lirycznym)
Opisuję tu moją ścieżkę aby wskazać że nawet u jednego inwestora zmieniają się w czasie preferencje.
Natomiast moje rozterki z którymi się do Ciebie zwróciłem miały założenie, że decyzja jest podejmowana, w jednym czasie a więc z pominięciem zmienności w czasie preferencji optymalizacyjnych i ma za zadanie nie koniecznie wyłonienie najlepszego ale ocenę porównawczą między co najmniej dwoma.
W praktyce oznacza to że chcemy porównać różne pomysły na systemy i zastąpić najsłabszy z dotychczasowo używanych na lepszy jeśli nim jest, bo nam np. kapitału już na następny nie starcza. Ale na pewno do tego badania powinniśmy zapewnić porównywalne warunki pomiaru.
Pozwole sobie jeszcze zacytowac Pana Roberta Pardo:
„Another tremendous advantage of the quantification or statistical evaluation of a trading strategy is that it makes it possible to accurately compare different trading strategies to one another. Because of the varying profit and risk profiles of different trading systems and the profit potential of different markets, the only thing that can be meaningfully compared from one system to another is the rate of its risk-adjusted rate of return.” 🙂
Dlatego przy testowaniu dobrze jest liczyc Drawdown od kapitalu maksymalnego i od kapitalu poczatkowego (ja to nazywam Base Drawdown)