Ostatnie wpisy poświęciłem diagnostyce krzywej kapitału, w celu wiadomym- zapobieganiu katastrofie strategii i ruinie finansowej. Jedna rzecz wymaga jednak dopowiedzenia – zamiast poświęcania czasu, nerwów i pieniędzy na leczenie skutków nieprawidłowo czy nielogicznie skonstruowanego systemu (lub też nadmiernie dostrojonego do historii notowań), dużo większą uwagę należy poświęcić pewnej praktyce, której zadaniem jest prewencja już na etapie projektowania.

Według mojej wiedzy i doświadczeń, nie ma lepszego i praktyczniejszego sposobu na sprawdzenie prawidłowości działania strategii niż tzw. Walk Forward Test (WFT) czyli w wolnym tłumaczeniu na polski: test kroczenia do przodu. W literaturze spotyka się również nazwy pokrewne: Walk Forward Analysis lub Walk Forward Optimization. Wszystkie dotyczą jednakże tej samej metody testowania, jakże często niestety pomijanej przez inwestorów. Żaden z używanych przez mnie do tej pory systemów nie miał prawa być dopuszczonym do realnej gry bez przejścia procedury WFT. To bardzo wzmacnia zaufanie do strategii i chociaż nie zawsze zapobiega stratom w przyszłości to jednak zmniejsza szansę ich pojawienia się. Bardzo gorąco namawiam wszystkich system testerów do niepomijania tej części projektowania. A wszystkim nieprzekonanym lub nieznającym może pomogę tym wpisem.

Mechanizm WFT

Cała idea polega na przepuszczeniu właśnie stworzonego systemu przez ciąg danych cenowych nie użytych podczas procesu jego konstrukcji i optymalizacji. W efekcie zetknięcia z niewidzianymi wcześniej szeregami danych otrzymujemy natychmiastową, solidną weryfikację jego stabilności czy w ogóle działania. W wersji podstawowej Walk Forward Test, dostępne dane dzielimy na 2 okresy, które w literaturze mają swoją charakterystyczną nazwę i nie widzę sensu tworzenia na siłę polskiego odpowiednika:

1/ in-sample czyli próbka danych użytych do budowy systemu

2/ out-of-sample czyli próbka danych pozostałych, na których robimy test WFT

Zalecane proporcje wielkości obu:

in-sample = 70 do 75% z całości

out-of-sample = 25% do 30% z całości

Jeśli mamy do dyspozycji załóżmy dane z 10 lat to podział może wyglądać mniej więcej tak, że na in-sample przeznaczmy 7 lat, pozostałe 3 lata na WFT.

Zbiór danych z pierwszych 7 lat katujemy i torturujemy w klasyczny sposób aby w rezultacie otrzymać pożądany przez nas system z wszystkim wymaganymi elementami a więc gotowy na tyle by zacząć inwestowanie według jego wskazań. I w tym momencie sprawdzamy ile jest wart puszczając go na pozostałych, dziewiczych danych z 3 lat. Strategia niepoprawnie zbudowana nie powinna zdać tego egzaminu (z nielicznymi wyjątkami), od razu dostajemy odpowiedź na pytanie o jej wartość. Tak zrobiony test możemy sobie w następujący sposób wytłumaczyć: gdybym ten system zbudował 3 lata temu to mniej więcej taki właśnie wynik otrzymałbym w realnej grze, ale tutaj owe 3 lata przerabiam w kilka sekund. Owa trywialnie prosta procedura mogłaby uratować wiele rachunków inwestycyjnych, niestety wiele osób przepytywanych przeze mnie przyznawało się, że albo jej nie stosuje albo robi to niepoprawnie. 

Proponuję dla pełnego obrazu zwrócić uwagę na następujące aspekty WFT:

  • jaki stopień efektywności testu przyjąć?

Oczywiście uzyskanie lepszych wyników na próbie out-of-sample byłoby fantastyczne ale rzadko się zdarza. Pisząc wyniki mam na myśli wszystkie miary dostępne w raporcie systemowym czyli zysk, trafność, Sharp ratio, maxDD itd. Itp. Natomiast uzyskanie podczas WFT efektów gorszych jest naturalne, ale do pewnych granic, choć te są dość umowne i zależą od wrażliwości inwestora. Przyjmuje się jednak, że dopuszczalne pogorszenie wskazań podczas WFT może sięgnąć 40-50%. Co oznacza, że np. jeśli maxDD przy produkcji systemu sięgał 20% to w próbie out-of-sample akceptowalne byłoby pogorszenie obsunięcia do 30%. To samo dotyczy pozostałych miar. Przyznam, że jak na moją wrażliwość, doświadczenie i zaufanie, tak szeroki margines jest nieco zbyt odległy, ale pisząc o 40-50% pogorszeniu podpieram się szacunkami Roberta Pardo z książki ?The evaluation and optimization of trading strategies” i używanym tam przez niego wskaźnikiem tzw. Walk Forward Efficiency.

  • na czym polega nieprawidłowość testu?

Najczęstszy błąd to robienie testów optymalizacyjnych na obu zbiorach danych po czym porównanie obu wyników w celu wyszukania wspólnych, najlepszych parametrów. To oszukiwanie samego siebie bo w realu nigdy takiej szansy nie dostaniemy. Poza tym ten sposób nie różni się w zasadzie niczym od zwykłego testu od razu na pełnym zbiorze dostępnych danych. WFT to najlepsza możliwość sprawdzenia efektywności systemu więc proponuję potraktować ja rzetelnie dla własnego dobra.

  • czy testować najpierw na starych danych a sprawdzać na ostatnich czy można tę kolejność odwrócić – najpierw na nowych a test na starych?

Oczywiście wszystko można. Proponuję jednak zachować chronologię. Po pierwsze dlatego, że to zachowuje naturalny stan rzeczy i przypomnę w tym miejscu poprzednią myśl: co by było gdybym ten system stworzył 3 lata temu. Po drugie – rynki nieustannie ewoluują, zmieniają swą mechanikę, fundamenty więc niemal naturalnym staje się fakt, że ostatnie dane mają już niestety zupełnie inną jakość, szczególnie jeśli rośnie zakres danych i porównujemy te z dzisiaj do tych sprzed 30 lat (albo np. dzisiejszy rynek FW20 z tym z jego początków w 1998 roku). O ile sam dopuściłbym fakt, że system powstały na bazie najnowszych danych nie przejdzie testu na tych starszych, to odwrotna sytuacja wg mnie dyskwalifikuje ów system i powinien on zostać wyremontowany.

CDN

–*Kathay*–

[Głosów:0    Średnia:0/5]

7 Komentarzy

  1. marek

    Fajnie napisane.To co ja widziałem to w wiekszości w realu następuje pogorszenie krzywej kapitału w stosunku do tej z testów.
    Im większy okres testu tym większe szanse na działanie w realu,ale pewności nigdy nie ma.Niestety jest też pewien haczyk – rynki ewoluują i zmieniają się – dlatego nie wychodzi to tak jak w historii.Rzeczywistość jest bardziej nieokiełznana 😉

  2. kathay

    fakt, ale jesli ktoś ci powiedział że będzie łatwo to masz teraz prawo wiesz co …:)

    zaradzimy po części na to wszystko w kolejnych wpisach

  3. Trapero

    dobrą metodą sprawdzania skuteczności systemów jest także puszczanie go na danych innych instrumentów finansowych. dobry system da zyskownośc zblozoną przynajmniej do 0..

    KatHay a czy mógłbyś przybliżyć symulacje Monte Carlo ? w literaturze finansowej o tej metodzie sprawdzania skuteczności systemów praktycznie się nie wspomina

  4. kathay

    Trapero – wg mojej wiedzy robienie systemów typu “one for all” jest trochę naciąganiem struny. Mechanika może być oczywiście ta sama ale nie poszczególne parametry.

    Monte Carlo jak najbardziej 🙂

  5. riScal

    >

    c.faith uwaza, ze single-market optimization moze w znaczacy sposob utrudnic tworzenie wiarygodnych systemow. Budowanie strategii na portfelu duzej ilosci rynkow pozwala skupic sie na relatywnie prostych systemach, ktore w bardzo przyzwoity sposob przechodza probe czasu(np. system: jedna średnia kroczaca, stop&reverse, portfel:100 rynków futures – > MAR >1). Niestety gra na portfelu to kasa rzedu 1mln$ minimum, a przy dywersyfikacji systemowej odpowiednio wiecej. Dlatego osobiscie skladam sie do Twojego zdania i tworze systemy na single market(lub rynki powiazane) 🙂 chociaz uwazam, ze jest to znacznie trudniejsze niz zabawa na szerokich portfelach …

  6. Trapero

    KatHay, tu nie chodzi mi o to że jeden system budujesz na wiele rynków ( o tych samych parametrach ) ale sprawdzasz jakby się zachował w innych warunkach. rynki ewoluują, zmieniają się. to co dziś sę sprawdza jutro może już nie. przepuszczenie takiego systemu przez dane z innych rynków da Ci większą przecież pewnośc stabiloności systemu w przyszłości. oczywiście zyskowność przybliżona do 0 może być zbyt wygórowanym warunkiem, ale takie np. wyzerowanie kapitału na innych danych powinno być już dośc poważnym sygnałem ostrzegawczym.
    a więc chodzi tylko o testowanie a nie stosowanie w grze.

  7. kathay

    @RiScal
    podpisuję się pod każdym słowem 🙂
    Poza tym wszystkim jest jeszcze psycha – moja w małym stopniu jest gotowa na dywersyfikację rynkową a bardzo mocno na systemową. I tylko w tym kierunku potrafię rozwijać swoje portfolio heat.

    @Trapero
    Naturalnie robię na swój użytek testy multi markets i nie mam zamiaru dezawuować tego rodzaju testów. Ale są 2 drogi: albo każdy rynek ma swoje własne parametry albo wyciągasz parametr średni testując całe portfolio. Ja wolę tę pierwszą i nigdy nie zdarzyło mi się żeby optymalny parametr dla FW20 był równie dobry na S&P i GBP/USD. W drugim przypadku WFT jest i tak konieczny. W pierwszym wskazany tak czy inaczej.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę podać wartość CAPTCHA: *