Pobierz skondensowaną porcję wartościowej wiedzy o inwestowaniu!🙂

Ostatnio, w odcinku numer 18, zaprezentowałem wprowadzenie do tematu, tłumacząc między innymi takie kwestie jak różne podejścia do inwestowania, czy w ogóle potrzebę zdefiniowania własnej strategii. Wspomniałem również dlaczego nie da się prosto przenieść na rynek finansowy naszej intuicji i życiowego doświadczenia. Wreszcie przedstawiłem podejście rynkowe oparte na algorytmach, wskazując jego wady i zalety.

W tym odcinku omawiam w szczegółach proces budowy i cykl życia algorytmicznej strategii inwestycyjnej, czy też systemu transakcyjnego, jak ktoś woli. Jest to krytyczny element naszej rynkowej egzystencji, od którego zależy czy wdrażana strategia ma szansę spełniać nasze oczekiwania.

UWAGA! To jest druga część cyklu materiałów o budowaniu strategii krótkoterminowej. Część pierwsza dostępna jest pod tym linkiem a część trzecia pod tym linkiem.

UWAGA! Do podcastu załączona jest prezentacja poniżej na tej stronie. Alternatywnie można też ją odsłuchać i oglądnąć na YouTube.

W tym odcinku

  • Po co i jak ustalić cel strategii
  • Jak zrealizować obrany cel stawiany przed strategią
  • Implementacja strategii i testy wstępne na ograniczonym zbiorze danych historycznych
  • Rozbudowane testy strategii: jak je przeprowadzić, wskazówki i pułapki
  • Co to jest inkubacja i w czym może pomóc
  • Wdrożenie strategii na rynek oraz konserwacja i monitorowanie
  • Kiedy wycofać strategię z rynku

Wszystko co tu znajdziesz, traktuj jako co najwyżej inspirację. Podchodź do wszystkiego krytycznie. Weryfikuj. Trust, but verify. 😉

Budujemy strategię transakcyjną, krok po kroku

Przewodnik krok po kroku przedstawiający jak poprawnie budować i testować krótkoterminową strategie transakcyjną na podstawie pomysłu Larry Connorsa.

Czytaj dalej →

Zaproszenie do dyskusji

Serdecznie zapraszam Cię do komentowania i zadawania pytań, bezpośrednio na tej stronie poniżej, lub na mojej stronie na Facebook’u lub moim profilu Twitter’owym.

Alternatywnie możesz zadać pytanie głosowe, nagrywając się na SpeakPipe. Pamiętaj tylko, że masz 90 sekund na nagranie.

Bardzo zależy mi na Twoim głosie, za który już teraz z góry bardzo dziękuję.

✒ TRANSKRYPT PODCASTU

czyli wersja do czytania

Wstęp


Witam was serdecznie w 20. odcinku podcastu System Trader. Ten odcinek jest kontynuacją odcinka numer 18, częścią mini cyklu o budowie i etapach życia strategii inwestycyjnej.

W pierwszej części tego podcastu opowiadałem o tym, co to jest w ogóle strategia inwestycyjna. Co to jest system transakcyjny? Po co nam to jest potrzebne? Dlaczego bardzo ważne jest to, aby proces, w którym budujemy taki system transakcyjny, był jak najbardziej wiarygodny, sprawdzony i zweryfikowany?

Jeżeli będziemy budować coś w oparciu o zły plan, to tak jakbyśmy budowali w oparciu o plan, który kompletnie nie trzyma się kupy. Wtedy nie możemy oczekiwać, że ten zbudowany dom, będzie spełniał nasze oczekiwania. Podobnie ma się to tutaj gdyby przenieść to na grunt tradingowy. Jeżeli zbudujemy naszą strategię inwestycyjną, nasz system transakcyjny w oparciu o proces, który jest zły, to nie możemy oczekiwać, że ta strategia będzie mogła później spełniać nasze oczekiwania.

Wypisałem sobie proces budowy i cykl życia w siedmiu punktach. To nie znaczy, że to jest wyryte w kamieniu i tego nie można modyfikować. Jest to takie podejście, które ja zaczerpnąłem na bazie wielu lat swojego doświadczenia. Czerpałem również garściami z wielu źródeł publicznie znanych. Ludzie dużo mądrzejsi ode mnie wypracowali pewne reguły i zasady tego, jak powinno się podchodzić do budowania strategii inwestycyjnych.

W tym konkretnym podejściu, które tutaj prezentuję, dla mnie takimi dwiema osobami, które wywarły największy wpływ jest Robert Pardo. Nie muszę chyba go nikomu przedstawiać. Miałem ogromną przyjemność przeprowadzić z nim wywiad w odcinku numer 19. Tuż po zaprezentowaniu pierwszej części o budowaniu i testowaniu strategii inwestycyjnych. Jest to osoba bardzo kluczowa, ponieważ jest to facet, który ma ogromny wkład w to, jak wygląda handel algorytmiczny we współczesnym świecie. Jest twórcą podejścia tzw. walk forward analysis.

Kolejną osobą, która duży wpływ wywarła na to, jak wygląda mój osobisty również proces budowy systemów transakcyjnych, to jest Kevin Davey. Człowiek młodszego pokolenia, który również dużo czerpał na Robercie Pardo, ale który nieco uprościł oraz zmodyfikował ten proces i ma nieco inne podejście.

Ja na bazie tych dwóch podejść wypracowałem jeszcze coś swojego. Tak naprawdę powinniście to traktować jako źródło inspiracji do Waszego własnego podejścia. To, co jest bardzo kluczowe, to to, aby wszystko, co robicie na rynkach, było w pełni zgodne z waszymi przekonaniami.

Proces budowy strategii

Jak wygląda proces budowy i cykl życia strategii transakcyjnej czy też systemu inwestycyjnego?

1. Cel.
2. Pomysł.
3. Implementacja i testy na małym zbiorze danych.
4. Rozbudowane testy, na przykład work for analysis czy Monte Carlo.
5. Inkubacja i tak zwany handel papierowy.
6. Wdrożenie na rynek i konserwacja.
7. Wycofanie strategii z rynku.

Krok 1: Określenie celu

Wyobraźmy sobie, jak ciężko byłoby nam dojechać do jakiegoś miasta, jeżeli nie mamy w ogóle określonego celu, gdzie chcemy jechać. Jedziemy po prostu gdzieś. Wiemy, że jedziemy gdzieś na północ Polski jadąc z Krakowa, ale jeżeli nie określimy celu, to ciężko nam powiedzieć, gdzie w ogóle dotrzemy. Jeżeli byśmy wyznaczyli sobie jakiś cel, to musi być on realistyczny. Gdybyśmy wyjechali samochodem z Krakowa i powiedzieli, że kierujemy się na północ, po czym jako cel obralibyśmy sobie Biegun Północny, to ciężko byłoby oczekiwać, że tym samochodem tam dotrzemy. Podobnie jest w tradingu.

Musimy określić cel, jaki chcemy osiągnąć na rynku finansowym. Następnie musimy ten cel zamknąć w takich ramach, które sprawią, że ten cel jest realistyczny. Jako taką dygresję tutaj przytoczę takie powiedzenie, które podobno przepisuje się Abrahamowi Lincolnowi. Prezydent Stanów Zjednoczonych powiedział: „Gdybym miał 8 godzin na ścięcie drzewa, spędziłbym 6 na ostrzeniu siekiery.”.

To jest dość wymowne. Pomimo, że on miałby 8 godzin na ścięcie drzewa, to nie znaczy, że od razu by się rzucił na ścinanie tego drzewa. Wcześniej jednak, dużo więcej czasu spędziłby na przygotowaniu się do tegoż ścięcia drzewa. Chodzi o to, że wszystko, co robimy, musi być zaplanowane. Taki cel tradingowy, może wyglądać w ten sposób: „Chcę zbudować strategię na kontrakt terminowy S&P 500, który będzie generował roczną średnią stopę zwrotu 30% i będzie miał obsunięcie na kapitale nie większe, niż 25%. Dodatkowo, daję sobie na to wszystko dwa tygodnie czasu.”. Brzmi dość ambitnie, nie to jednak jest najistotniejsze w tej chwili. 😉

To, co jest istotne, to, że my z góry sobie określamy taki cel. Cel jest ambitny, ale do zrealizowania. Mając ten konkretny cel, możemy iść dalej.

Krok 2: pomysł na strategię

Jak już mamy cel, to musimy znaleźć jakiś pomysł, jak ten cel osiągnąć. Jak nasza strategia będzie wyglądała? Musimy wymyślić pomysł na naszą strategię. Jeżeli chodzi o źródła pomysłów, to może być ich mnóstwo. Może być to własna obserwacja rynku, książki, magazyny, Internet. Tych źródeł wiedzy jest cała masa. Problem jest nie taki skąd, a raczej jak przetworzyć nadmiar tych różnych źródeł, z których możemy czerpać inspirację, co do realizowania naszego pomysłu na strategię. Źródłem mogą być też inni traderzy czy też inne strategie.

Bardzo dobrą metodą budowania nowych strategii, jest modyfikacja istniejących. Osobiście wiele takich pomysłów właśnie w ten sposób realizuję. Biorę strategię, która jest na ropę, a następnie tę strategię przerabiam i wykorzystuję na rynku kontraktów terminowych na Russell’a 2000. Jak najbardziej jest to dopuszczalne podejście. Szczególnie też dla osób, które być może są początkujące i nie mają zbyt wielu pomysłów. W ten sposób mogą się fajnie uczyć, jak budować własną strategię.

Bardzo dobrą metodą budowania nowych strategii, jest modyfikacja istniejących

Ostrożnie z programowaniem genetycznym

Innym źródłem pomysłów, może być generator, oparty chociażby o tak zwane algorytmy programowania genetycznego. Poruszyłem trochę ten temat w pierwszym odcinku tego mini cyklu. Są to takie algorytmy, które na wejściu otrzymują dane rynkowe, notowania, a na wyjściu mamy serię często wielu tysięcy gotowych strategii do wykorzystania. Bardzo pięknie to brzmi, natomiast to nie znaczy, że wszystko jest tak proste.

Gdyby to było tak proste, to każdy by sobie zakupił taki program, a później wykorzystał strategie, które otrzymał na wyjściu i handlował. Nie oznacza to, że korzystanie z takiego oprogramowania jest kompletnie pozbawione sensu.

Natomiast, to nie znaczy, że to wszystko jest tak proste. Szczególnie, jeżeli jest się początkującą osobą. Być może komuś się zaświeci lampka, może tutaj jest jakiś skrót i zamiast samemu coś wymyślać, kupię sobie oprogramowanie, które wygeneruje dla mnie strategię. Bardzo bym ostrzegał przed takim podejściem.

Katalog pomysłów

Zachęcam do tego, żeby tworzyć na bieżąco własny katalog pomysłów, w postaci różnych filtrów, wejść, wyjść, metod zarządzania pozycją czy też całych systemów. Jak już mamy jakiś katalog różnych kawałków systemu, tak naprawdę jest to rekonfigurowanie tych cegiełek i de facto budujemy nowe twory. Jak mamy 100 cegieł, to nie znaczy, że za każdym razem mamy wybudować taki sam mur. Za każdym razem możemy wybudować coś innego. Własny katalog pomysłów, warto później wykorzystywać do budowania nowych strategii, jako źródło pomysłów.

Taka ogólna zasada, jaka powinna nam przyświecać przy budowaniu strategii, to to, aby dążyć do prostych rozwiązań. Jest taka słynna zasada tak zwanej brzytwy Ockhama. Chodzi o to, że bardzo dobre rozwiązania są proste i działają. Wbrew pozorom, dużo prościej zrobić coś skomplikowanego, co działa albo wydaje nam się, że działa. Dużo trudniej jest zbudować coś prostego, co działa. Jak mamy coś prostego i działa, to mamy dużo większą szansę, że to naprawdę będzie na realnym rynku działało. W przeciwieństwie do zrobienia jakiegoś skomplikowanego potwora, którego być może sami później nie rozumiemy i który będzie fajnie działał na danych historycznych. Może się okazać, że to będzie kłopot, by to zadziałało na realnym rynku.

Jeżeli chodzi jeszcze o te pomysły na strategię, to trzeba wiedzieć, że mogą one ewoluować. To nie jest tak, że skupimy się na jednym pomyśle na strategię i jak nie wyjdzie, to trzeba zrezygnować. W pewnym sensie możemy, swoim działaniem, nieco symulować działanie takiego algorytmu genetycznego. Będziemy próbować różnych sposobów realizowania naszego celu. Ten pomysł będzie cały czas ulegał różnym zmianom, ponieważ to, co na początku wydawało nam się, że będzie działało, jednak nie spełni naszych oczekiwań. Dlatego ten nasz pomysł na zrealizowanie strategii, będzie musiał również ulegać pewnym modyfikacjom. Na tym etapie, taka elastyczność, jak najbardziej jest dopuszczalna.

Linda Bradford Raschke - wywiad

Bardzo pouczający wywiad z kobietą, która z wielkimi sukcesami handluje na rynkach już 40 lat!

Czytaj dalej →

Przykładowo, możemy stwierdzić, że jak dodamy sobie profit target, to, że kasujemy zyski, przyniesie w tym konkretnym przypadku nam jakieś korzyści. Być może warto zastosować jakiegoś stop loss’a, a być może warto zrobić w ogóle Stop and Reverse, czyli de facto będziemy cały czas w rynku. Jak zamykamy pozycję długą, to od razu otwieramy pozycję krótką. Chodzi o to, że ten pomysł na tym etapie może jak najbardziej ewoluować.

Jak już przystąpiliśmy do implementacji naszego pomysłu, próbując osiągnąć nasz cel, to bardzo istotne jest, aby nie wykorzystywać wszystkich danych historycznych, jakie mamy w posiadaniu. Jeżeli budujemy system transakcyjny oparty o notowania dzienne na kontrakty na WIG20 i załóżmy, że bierzemy na tapetę 20-letni okres notowań, to nie powinniśmy budować od razu naszego systemu na całym zbiorze danych. Tylko musimy wziąć sobie mały wycinek, 10-30%, nie więcej niż połowę i na tym zbiorze, powinniśmy budować naszą strategię. Na tym małym wycinku danych, na tych 2-7 latach możemy naprawdę się powyżywać. Możemy modyfikować kod, ponownie testować, modyfikować różne wejścia, wyjścia, filtry, zarządzania pozycją. Tu jest to OK, o ile ten zbiór danych będzie cały czas stały.

Realne założenia

Tu jest też ważne, żeby od początku mieć realne założenia, przy jakich budujemy naszą strategię. Musimy uważać na takie błędy, które na poziomie kodu i backtestingu nie wyjdą, natomiast wyjdą w rzeczywistości. Załóżmy, że zawieramy transakcję po cenach zamknięcia i okazuje się, że wyniki, jakie nam generuje strategia, są bardzo fajne. Natomiast w praktyce może się okazać, że ciężko nam będzie realizować transakcje dokładnie po cenie zamknięcia danego rynku. Albo musimy uważać na zlecenia z limitem. Jeżeli sygnał pada po konkretnej cenie, to my będziemy uważali, że dokładnie po tej cenie nasza transakcja zostanie zawarta. Zlecenia z limitem tutaj nie będą zbyt realistycznym założeniem i musimy zawsze założyć jakiś poślizg cenowy.

Warto od początku mieć realne założenia, przy jakich budujemy naszą strategię

Musimy uważać też na takie kwestie, jak na przykład prowizje. Jeżeli byśmy ich nie uwzględnili, bo wydaje nam się, że są niewielkie, a po dodaniu, okazuje się, że system, który zarabiał bez płacenia prowizji możliwe, że nagle przynosi straty. Musimy stworzyć takie warunki podczas budowania i początkowego testowania naszej strategii, które będą przypominały realne warunki. To znaczy, że będziemy mieć realne koszty związane z poślizgami i prowizjami.

Powinniśmy też uważać na inside-bar backtesting. Jeżeli mamy strategię opartą o świece dzienne, to może się okazać, że po przeciwległych stronach świecy, padają przeciwstawne sygnały kupna-sprzedaży. Pytanie, który sygnał padł pierwszy? Czy cena najpierw szła w górę i padł sygnał z tej górnej części, czy ceny na początku dnia szły w dół i sygnał został z tej drugiej strony? Jeżeli mamy tylko dane dzienne, to nie będziemy w stanie tego powiedzieć. Musimy zejść na niższy poziom, tak zwany time frame i być może dopiero na świecach godzinnych, czy wręcz minutowych, będziemy w stanie stwierdzić, jak wyglądał przebieg sesji w ciągu dnia. Dzięki temu będziemy podczas backtestu mieli bardziej zgodne z rzeczywistością wskazania, co do generowanych sygnałów. To wszystko może sprawiać, że te założenia są dość restrykcyjne. Dużo trudniej będzie nam znaleźć coś ciekawego, co działa.

Natomiast to nie o to chodzi, żebyśmy znaleźli od razu super strategię i byli wniebowzięci, bo na ekranie będą generowane fajne wyniki. Tylko chodzi o to, żeby to, co budujemy miało szansę zarabiania w przyszłości. Dlatego lepiej jest też odrzucić nawet dobry pomysł na początkowym etapie budowania strategii, niż stracić kapitał na złym pomyśle, tylko dlatego, że nie nałożyliśmy realnych założeń. Jeżeli chodzi o tą implementację, to tutaj można bardzo dużo i często oszukiwać. Po to, żeby te wyniki generowane były lepsze. Powinniśmy na to bardzo uważać i być bardzo konserwatywni. Zwłaszcza tutaj, jeżeli chodzi o dobór danych.

Lepiej jest też odrzucić nawet dobry pomysł na początkowym etapie budowania strategii, niż stracić kapitał na złym pomyśle

Jak wybierzemy sobie ten 5 letni okres, to będziemy tylko w tym zakresie budować naszą strategię. Zanim nie przejdziemy do kolejnych etapów budowy, nie powinniśmy podglądać, co by się działo, gdybyśmy strategię puścili na innym okresie i ewentualnie później wracali do tego pierwszego zbioru danych i modyfikowali tak, żeby później wyniki były lepsze. W ten sposób będziemy robić tzw. curve-fitting, czyli dopasowywanie modelu do danych historycznych. Będzie fajnie to wyglądało w backteście, w symulacji. Natomiast w przyszłości na realnym rynku będzie duże prawdopodobieństwo, że nasza strategia będzie powodować straty.

Krok 3: implementacja

Na etapie implementacji budowanego systemu powinniśmy wymagać kilku rzeczy. Pierwsze, załóżmy, że zbudowana strategia dla 5 letniego okresu, generuje całkiem przyzwoite zyski. Optymalizując dwa parametry, jakie mamy w tym systemie, to ogólnie większość parametrów powinna generować nam zyski. Co więcej, fajnie by było, żeby rozkład tych zyskownych parametrów był równomierny. Jeżeli mamy parametry między 5 a 15, z krokiem co jeden, to żeby nie było tak, że co któryś parametr będzie działał, a po środku nie będą działały. To nie będzie fajne. Dobrze, że jeżeli nawet jest taki obszar, gdzie powiedzmy 80% parametrów pracuje dobrze, to, żeby one były skupione w jednym miejscu. Nie rozproszone.

Należy również dążyć do tego, aby minimalizować liczbę parametrów i liczbę iteracji, czyli tych kroków, parametrów.

Dlaczego?

Dlatego, że dzięki temu trudniej będzie nam dopasować model do danych historycznych tak na siłę. Jak będzie mniejsza przestrzeń parametrów, to trudniej będzie nam wykazać, że dana strategia naprawdę działa. To nie będzie tak, że wybierzemy sobie z miliona parametrów dwa, które super działały na danym zbiorze danych, mimo że na reszcie ta strategia generowała straty. Dlatego też jak mamy mniejszy zbiór parametrów i mimo tego ograniczenia, strategia nadal działa OK, to jest to dobry sygnał. Należy też uważać na jakość danych, na jakich testujemy.

Szczególnie, jeżeli chodzi o kontrakty długoterminowe, to należy uważać na to, żeby to były kontrakty kontynuacyjne, które są odpowiednio zmodyfikowane. To znaczy takie, gdzie nie będzie sytuacji, że zawieramy transakcje, które w rzeczywistym świecie byłyby niemożliwe. Trzeba zwracać uwagę na dane historyczne kontraktów terminowych, dane, które są skorygowane. Jeżeli ktoś działa na kontraktach CFD na różnych platformach forexowych, to obawiałbym się o jakość danych.

Osobiście korzystam z TradeStation i tam ten problem jest bardzo porządnie rozwiązany. Tam mam pewność, że te dane są korygowane o wygasające kontrakty i wyniki z backtestu są bliskie rzeczywistości.

Przy implementowaniu należy uważać na efekt pewności wstecznej

Jeżeli chodzi o implementowanie, to trzeba też uważać na tak zwany efekt pewności wstecznej. Jeśli będziemy pisać strategię i wiemy, że zbiór danych, na którym budujemy naszą strategię jest byczym rynkiem, to my możemy później tę informację wykorzystać. To znaczy, że nasza strategia będzie wykorzystywała właśnie to bycze nastawienie do rynku. To będzie bardzo niedobre. Jeżeli my korzystamy z takich danych, to później, gdy rynek z byczego przekręci się na niedźwiedzi, może się okazać, że nasza strategia będzie generowała straty. Dlatego też trzeba uważać na takie kwestie i na bardzo specyficzne zachowania strategii.

Załóżmy, że mamy 100 transakcji i przez 99 transakcji, to tak mieliliśmy się koło zera, zarobiliśmy, straciliśmy, a wreszcie jedna transakcja zarobiła nam ogrom pieniędzy. Wygenerowała większość zysku. Jeśli my na tej podstawie przyjmiemy, że nasza strategia jest bardzo fajna, to jest to niefajne założenie. Polegamy de facto na tym, że nasza strategia będzie zarabiać w przyszłości w oparciu o jedną transakcję. Nie powinniśmy tego robić.

Krok 4: testowanie

Mamy strategię, która jest wstępnie napisana, zakodowana. Wiemy też, że na tym zbiorze danych, którym go budowaliśmy, ta strategia zachowuje się dobrze. Na tyle dobrze, że decydujemy się na rozszerzone testowanie, czy możemy z tej strategii korzystać na realnym rynku. Jest to temat bardzo szeroki i jest bardzo wiele podejść do tego, jak budować i testować tę strategię. To, co jest kluczowe, to w momencie jak już testujemy strategię i testujemy ją na zbiorze przynajmniej większości danych historycznych, zostawić sobie około półroczny okres danych historycznych, gdzie po całym procesie będziemy tak naprawdę korzystać z tych danych do symulowania przyszłości.

Czy z inwestowania na rynkach kapitałowych można się utrzymać?

Czy inwestując pieniądze na rynkach finansowych można zarobić godziwe pieniądze?

Czytaj dalej →

To, co jest istotne, to, żeby na etapie testowania nie modyfikować strategii. Jeżeli my już teraz pracując na całym zbiorze danych historycznych będziemy na tym zbiorze dokonywać zmian na strategii po to, żeby ona spełniała nasze oczekiwania, to taka strategia będzie ofiarą przeoptymalizowania. Dlatego, jeżeli strategia, która wyszła z kroku 3, gdzie implementowaliśmy i robiliśmy wstępne testy, nie przeszła bez modyfikowania testów w kroku 4, to powinniśmy taką strategię odrzucić. To może brzmi brutalnie, zwłaszcza jak się napracowaliśmy przy poprzednich krokach, ale jeżeli nie chcemy się oszukiwać, to powinniśmy tak postąpić.

Jak my możemy testować strategię, którą sobie zbudowaliśmy? Wymienie wiele metod — nie znaczy, że każdą polecam!

Test na wszystkich danych

Możemy zrobić tak, że bierzemy wszystkie te dane historyczne, które mamy. Następnie doprowadzimy do tego, że dobierzemy sobie jakieś parametry, dla których ta strategia na tych danych generowała najlepsze dla nas zyski. Później możemy powiedzieć, że fajnie wygląda, puściłem sobie 15 lat dla kontraktu na WIG20 strategię, te parametry były ciekawe, więc je biorę, od jutra handluję.

To nie jest jednak dobre podejście, nawet jeżeli myśmy specjalnie nie kombinowali we wcześniejszym etapie. To znaczy, że po zaimplementowaniu, tutaj jeszcze przed optymalizacją pozmienialiśmy coś tak, żeby te wyniki były fajne. Modyfikowaliśmy strategię w kroku czwartym. Nie jest to fajne, dlatego że de facto będziemy testować tę strategię w rzeczywistym świecie, na rzeczywistej kasie. Dlatego też jest inne podejście, gdzie z całego zbioru danych, wykroimy sobie np. 70% na optymalizację strategii, nie modyfikację. To jest istotne. My już strategię zaimplementowaliśmy.

Test na części danych

W kroku 4 nie zmieniamy strategii, my ją tylko testujemy. Dobieramy parametry na 70% zbiorze danych, a następnie sobie puszczamy na 30% najnowszych danych i sprawdzamy, co się dzieje. Jest to rozwiązanie przez niektórych stosowane. Problemem jest to, że „spalamy” dużo danych i tak naprawdę testujemy tylko na 30% okresie. To wciąż może spowodować, nawet jeżeli ten test będzie pozytywny, że będziemy ofiarą czystego, ślepego trafu. Akurat dane czy model, które były dopasowane do 70% zbioru danych, zadziałał nam na danych testowych już tych nieoptymalizowanych. To nie będzie wynikiem działania strategii, tylko będzie czystym przypadkiem. Jest takie podejście, które się nazywa walk forward testing, czyli testowanie kroczące do przodu.

Test walk-forward

Człowiek, który jest największym popularyzatorem i który wręcz sobie przypisuje te metody jako wynalazca, jest Robert Pardo. Facet, z którym miałem przyjemność rozmawiać w moim podcaście właśnie w odcinku 19. systemtrader.pl/019, tam możecie sobie odsłuchać tego odcinka. On, co prawda na początku już lat 90 napisał pierwszą edycję swojej książki na temat właśnie stosowania tej koncepcji, ale w 2008 roku była ona wznowiona. Absolutnie polecam każdemu, kto zajmuje się budowaniem strategii transakcyjnych. Tam on opisuje proces budowania strategii i metodę testowania walk-forward.

Jeżeli mamy 100% danych historycznych, 15 lat, to zamiast optymalizować system na 10 latach, a później zobaczyć jak na kolejnych 5 się zachowuje, to my sobie robimy serię „okienek” przesuwanych w czasie. Bierzemy np. okres pierwszych trzech lat danych historycznych, które „spalamy”. Optymalizujemy tam, przy czym nie puszczamy na całej reszcie pozostałych danych historycznych, ale np. tylko na jednym roku do przodu. Mamy takie pierwsze okno, które łącznie obejmuje cztery lata. Następnie przesuwamy się o rok kolejny do przodu. Testujemy na kolejnych trzech latach, łącznie z tym rokiem, który już był weryfikowany w rzeczywistości, jako tzw. dane out-of-sample i znów testujemy na kolejnym roku. W ten sposób, każdego roku, reoptymalizujemy naszą strategię.

Są dwie duże zalety takiego podejścia. Pierwsza, to jest to, że nasza strategia będzie co okresowo reoptymalizowana. Jak wiemy, rynki się zmieniają. Jest rynek byka, rynek niedźwiedzia i inne parametry są korzystne na rynku byka, a inne na niedźwiedzia. Oczywiście zawsze ktoś powie, że i tak zawsze będziemy spóźnieni. Zgadza się, będziemy spóźnieni. Jednak nawet jeżeli będziemy spóźnieni, to jeśli rynek ulega jakimś pewnym zmianom, to my przynajmniej będziemy z opóźnieniem, ale jednak reoptymalizować naszą strategię, tak aby ona była „świeża”. To jest pierwsza zaleta.

Druga zaleta jest taka, że my nie spalamy na dzień dobry większości naszych danych historycznych do testowania, do optymalizowania. Tylko robimy to w wielu krokach. Dzięki temu, mamy więcej wyników out-of-sample, czyli tych danych, gdzie system generuje wyniki już na bazie systemu, który był nieoptymalizowany. Natomiast dodatkowo, jeżeli seria takich powtórzeń będzie przynosiła zyski w każdym tym okienku out-of-sample, to możemy pokładać większą nadzieję na to, że ta strategia będzie zarabiać w przyszłości. Oczywiście jest wiele możliwości oszukiwania. Jeżeli będziemy mieć żelazną dyscyplinę w stosowaniu takiego podejścia, to mamy większą szansę na to, żeby strategia zachowywała się OK w przyszłości na realnym rynku.

Tom Basso, rynkowa legenda podążania za trendem

Tom Basso to kolejny bohater słynnej serii książek J. Schwager’a, Czarodzieje Rynku, który zgodził się udzielić ekskluzywnego wywiadu dla Was w ramach mojego podcastu. 🙂

Czytaj dalej →

Co do zasady, przyjmuje się, że jeżeli robimy walk-forward testing to dane te in-sample, czyli zbiór danych, na którym optymalizujemy nasz model, powinien być gdzieś w przedziale 60-80%, a pozostałe 20-40% out-of-sample. To jest ten zbiór danych, który jak na pierwszym zbiorze optymalizujemy system i wybieramy najlepsze parametry zgodnie z jakimiś naszymi kryteriami np. najlepszy zysk, to wówczas później puszczamy go na zbiorze out-of-sample. Ktoś może powiedzieć, że optymalizowanie względem funkcji celu, którym jest zysk, to nie jest najlepszy pomysł. Faktycznie, Robert Pardo pisze w swojej książce, że to nie jest najlepszy pomysł. Mam jednak takie doświadczenie, że jeżeli strategia generuje dobre wyniki na dużym zbiorze parametrów, to wtedy posługiwanie się funkcją celu, którym jest zysk, nie jest jednak tak złym pomysłem. Zwykle też w relacji do obsunięcia, współczynnik wypada tam całkiem dobrze. To jest kwestia dyskusyjna. Każdy może sobie uważać wedle swoich wytycznych inaczej.

Warto ograniczyć liczbę parametrów w procesie optymalizacji

Kolejna rzecz, warto ograniczać liczbę parametrów w procesie optymalizacji. Jeżeli mamy np. trzy parametry w strategii, które optymalizujemy, to powinniśmy mieć minimum 150 transakcji. Chodzi o to, żeby nie okazało się, że nasza strategia ma np. 5 parametrów, które optymalizujemy. Mamy ogromną liczbę kombinacji, wybieramy najlepsze parametry i się cieszymy, że to działa. A to jeszcze wszystko przy 10 transakcjach, które nam ten system wygenerował. To jest prawie 100% pewność, że nasza strategia nie będzie działała w rzeczywistym świecie.

Mamy 5 tysięcy różnych kombinacji parametrów. Załóżmy, że tylko 500 jest zyskowne. A my dodatkowo wybieramy sobie z tych 500 takie parametry, które dają najlepszy wynik i nasza strategia generuje jeszcze 10 transakcji. Ja na pewno bym tutaj nie położył nawet złamanego grosza na taką strategię. Natomiast, jeżeli mamy taką sytuację, gdzie mamy dwa parametry i mamy np. 200 transakcji, to jest tutaj przesłanka ku temu, żeby móc w takim modelu faktycznie pokładać pewne nadzieje, co do tego, że będzie generował zyski w przyszłości. Jeżeli chodzi o testowanie walk forward analysis, tutaj chciałem jeszcze jedną rzecz dodać. Jak mamy okienko in-sample, out-of-sample, czyli okienko danych, na których optymalizujemy system i okienko danych, na których testujemy ten system, to rozmiary tych okienek mogą być różne. Możemy przyjąć, że pierwsze trzy lata to są in-sample, czwarty rok to jest out-of-sample. W ten sposób co roku się przesuwamy. Jednak możemy też próbować, co by było, gdyby in-sample wynosił pół roku albo rok, a out-of-sample trzy miesiące. A co gdyby in-sample wynosił 5 lat, a out-of-sample 2 lata?

Testy klastrowe

Warto jest przeprowadzić co najmniej trzy takie zestawy walk-forward dla różnych rozmiarów. Takie krótkoterminowego, średnioterminowego i długoterminowego, i zobaczyć jak strategia zachowuje się w tych trzech różnych wariantach testów walk-forward. Dobrze by było, żeby strategia zachowywała się dobrze w każdym z nich. Oczywiście, wyniki mogą być nieco inne, ale żeby każdy z nich był zaliczony. W TradeStation, być może w innym oprogramowaniu również, jest coś takiego jak cluster walk-forward analysis. Tam robi się serię, w zależności od ustawień kilkunastu, czy wręcz kilkudziesięciu walk-forward testów z różnymi rozmiarami okienek in-sample, out-of-sample. Dzięki temu możemy widzieć, jak się strategia zachowuje.

Nie powinniśmy wybierać takiego rozmiaru walk-forward testing in-sample, out-of-sample, który będzie nam akurat fajnie pasował w testach i generował wyniki, bo gdybyśmy nieco zmienili rozmiar okienek, to się okaże, że testy nie przechodzą. Czegoś takiego nie polecam. Jeżeli puścimy serię wielu walk-forward testów dla wielu różnych rozmiarów i na każdym z nich, czy na większości, generujemy zyski, to wtedy możemy pokusić się o dobranie takiego optymalnego okresu reoptymalizowania strategii. To jest temat nieco bardziej zaawansowany, bo niestety łatwo jest tutaj się przeoptymalizować. Tutaj jest pole do tego, aby ten rozmiar optymalizować do konkretnej strategii.

Napisałem na slajdzie, żeby tego nie robić. Napisałem to dlatego, żeby nie było sytuacji takiej, że mamy trzy warianty, jeden tylko działa, to działamy na tym wariancie, bo nam inne nie przechodzą. To na pewno nie jest dobre podejście. Jeżeli mamy trzy warianty, czy mamy 20 wariantów, różnych rozmiarów in-sample, out-of-sample i dla każdego z nich zarabiamy, ale okazuje się, że strategia jest raczej rzadziej niż częściej optymalizowana, wtedy generuje lepsze wyniki, to być może warto to wykorzystać i rzadziej tą strategię reoptymalizować. Być może konkretny rynek woli właśnie takie podejście.

Big Leap

Jeżeli mamy takie problematyczne kwestie jak to, że nasza strategia niby zarabia, ale jednak widzimy, że rozkład tych parametrów, w których ona zarabia, nie jest taki jednorodny, to tutaj powinna się nam zaświecić taka ostrzegawcza lampka. Wtedy zanim przejdziemy do jakiegoś wielkiego, rozbudowanego testowania walk-forward, możemy zrobić coś takiego, co się nazywa big leap. Ja mam nadzieję, że Robert Pardo mnie nie ukatrupi za to, że o tym mówię, bo on nie pisał o tym w swojej książce, ale wiem, że to stosuje we własnym podejściu. 😉 Takim wstępem do testów walk-forward można zrobić taki prosty zabieg, który potrafi „uwalić„ wiele strategii na dzień dobry i nie ma sensu dalej testowanie. Okazuje się, że jeżeli strategia nie przechodzi testu big leap, to nie ma sensu dalej iść w szczegółowe testowanie.

Big leap jest bardzo prosty, jeżeli chodzi o ideę. Bierzemy cały zbiór danych historycznych, np. 15 lat. Dzielimy je równo 50 na 50%, czyli 7,5 roku – 7,5 roku. Najpierw 7,5 roku optymalizujemy naszą strategię, dobieramy najlepsze parametry i na tak dobranych parametrach puszczamy naszą strategię na pozostałych 50%. Jeżeli taki test przechodzi pozytywnie, to odwracamy zabawę. Optymalizujemy strategię na drugich 50% danych, a następnie parametry tam dobrane, puszczamy jako out-of-sample na pierwszej połówce zbioru danych historycznych. Takie podejście jest bardzo dobre, ponieważ ono odsiewa strategie, które na pewno nie przeszłyby testów walk-forward. Natomiast mają mniejszy narzut czasowy do robienia testów. To jest taka całkiem fajna idea testowania strategii, zanim wejdziemy w głębokie testy, czy będziemy przeprowadzać wiele testów walk-forward, które mogą być po prostu też bardzo kosztowne obliczeniowo.

Big Leap jest bardzo prosty, jeśli chodzi o ideę

Symulacja Monte Carlo

Jest jeszcze coś takiego jak Monte Carlo. Jedni to stosują, drudzy nie stosują. Monte Carlo, to jest w ogóle fajny test. Pierwszy raz zetknąłem się z nim jeszcze będąc na studiach i był taki przedmiot „Metody obliczeniowe w nauce i technice” (słynny MOWNIT na AGH 😉 ). Tam między innymi była analiza Monte Carlo. Stanisław Ulam, polski matematyk, w projekcie Manhattan, przy projektowaniu bomby atomowej zaproponował taką metodę. To jest metoda, która wprowadza w proces testowania trochę losowości. Jeżeli np. mamy 100 transakcji i one się układają w ciągu w jakąś equity line i widzimy, że zarobiliśmy tam ileś, to teraz możemy porobić różne rzeczy.

Po pierwsze, możemy przetasować kolejność tych transakcji i wtedy będziemy mieć szereg różnych equity line, czyli krzywych linii kapitału. Może się okazać, że nagle będziemy mieć 10 transakcji stratnych z rzędu. Może się też okazać, że ze 100 przeprowadzonych testów, 50 testów, to powoduje, że nasza strategia traci pieniądze. Można też pójść krok dalej. Są np. formy Monte Carlo, które pozwalają nam wprowadzać losowe zmiany do danych historycznych i powodować to, że strategia będzie puszczona na danych, których w życiu nie widziała, które są zbliżone do tego, na czym były budowane. Dane są już teraz zupełnie nowe, bo podlegają pewnym procesom losowych modyfikacji. To też może powodować, że taka strategia, która przechodzi takie testy, będziemy mogli w niej pokładać większe nadzieje.

Rynki finansowe według Krzysztofa Łucjana, zawodowego tradera

Gościem wywiadu jest Krzysztof Łucjan, zawodowy trader, specjalizujący się w handlu kontraktami terminowymi, współtwórca Stooq

Czytaj dalej →

Są ludzie, którzy uważają, że testy Monte Carlo tak naprawdę mają sens w przypadku, kiedy strategia generuje bardzo dużo transakcji. Wtedy faktycznie ma to sens. Dużo mniej sensu, ma w przypadku strategii długoterminowych, które generują mniej transakcji. Każdemu polecam, żeby sobie przeprowadził takie testy Monte Carlo. Dzisiaj jest dużo oprogramowań, które to umożliwiają zrobić w prosty sposób. Dzięki temu możemy próbować szacować np. prawdopodobieństwo osiągnięcia jakiejś określonej stopy zwrotu czy obsunięcia maksymalnego kapitału, a nawet bankructwa.

To, co jest istotne, jeżeli chodzi o Monte Carlo, to transakcje w przypadku robienia takiej analizy czy symulacji Monte Carlo. To ma sens, jeżeli nasz system transakcyjny nie jest ofiarą care fittingu. Jeżeli nasz system był zbudowany łamiąc te zasady, o których mówiłem we wcześniejszych krokach i jest po prostu przeoptymalizowany i generuje zbiór transakcji, to puszczanie takich śmieci w procesie symulacji Monte Carlo, spowoduje, że będziemy mieć śmiecie na wejściu. Oczywiście nie spowoduje, że Monte Carlo zmieni nam strategię w jakiegoś złotego Graala, który zacznie zarabiać. Jak będziemy mieć śmieci na wejściu, to będziemy mieć również śmieci na wyjściu.

Testy na wielu rynkach

Mam jeszcze dwie uwagi, o których nie wspomniałem. Pierwsza rzecz. Jak już budujemy sobie strategię na kontrakty długoterminowe na S&P 500, załóżmy na świecach dziennych, to fajnie jest spróbować, czy taka strategia działa również na indeksach akcyjnych. Natomiast oczywiście ciężko byłoby oczekiwać, że ta strategia będzie zarabiała pięknie na czymś kompletnie niezwiązanym z S&P jak Live Cattle, czy na pszenicy. Muszą być to rynki, które są w miarę skorelowane. Budowanie strategii z myślą, że ona będzie działała idealnie na każdym rynku jest dość utopijne. Ja mówię tu o takich strategiach bardziej krótkoterminowych — warto o tym pamiętać.

Oczywiście podejście takie long-term trend-following, pozwala budować strategię, gdzie jedna strategia działa naprawdę na wielu rynkach, ale tam z kolei aspekt budowy portfela jest bardzo istotny.

Uwaga na… dobre wyniki

Druga uwaga. To jest taka ogólna zasada podczas testowania. Jeżeli coś wygląda zbyt dobrze, to prawdopodobnie tak jest. Jeżeli mamy wyniki w naszym backteście, które generują cudowne transakcje, już widzimy jak wkładamy tam swoje pieniądze i po 5 latach będziemy milionerami. Już widzimy jak kupujemy super luksusowe samochody, to lepiej, żebyśmy troszkę wyluzowali z naszymi emocjami. Warto dobrze przyjrzeć się temu, co robimy, bo jeśli naprawdę coś wygląda zbyt dobrze, to najpewniej gdzieś popełniliśmy błąd. To co widzimy, to jest najpewniej wynikiem jakiegoś błędu. Na przykład, nie uwzględniliśmy kosztów transakcyjnych, poślizgów cenowych. Mamy strategię, która jest w pełni wytestowana i która spełnia nasze wcześniejsze, obrane założenia. Wszystkie cele, które postawiliśmy przed strategią są osiągnięte i teoretycznie moglibyśmy tę strategię podpiąć do rynku i zacząć nią handlować.

Krok 5: Handel papierowy

Kevin Davey nazywa ten okres inkubacją. Zanim jeszcze wejdziemy z realnym kapitałem na rynek, to dajemy sobie czas. Taki handel papierowy ma kilka zalet. Po pierwsze, możemy wychwycić błędy, które być może wkradły się na wcześniejszych etapach budowy strategii. Pomimo naszych prób i wysiłków, aby strategia nie była zbyt dopasowana do danych historycznych, czyli, żeby nie było care fittingu, przy optymalizowaniu strategii, to czasami zupełnie w sposób nieświadomy mogło do tego dojść. My możemy żyć w przeświadczeniu, że nasza strategia jest bardzo fajna i generuje całkiem fajne wyniki, natomiast rzeczywistość może okazać się z goła inna.

Handel papierowy ma wiele zalet

Krok 5, to taki bezpiecznik. Pozwala nam już na krok przed wejściem na rynek jeszcze się zastanowić i sprawdzić, czy ta strategia na pewno jest tym na co wygląda. Możemy w tym okresie zupełnie niejako na luzie sprawdzić sobie, jak ta strategia działa na danych, których jeszcze nie widziała.

Tu taka szybka uwaga. Oczywiście dla takich osób bardziej zaawansowanych i biegłych w temacie. Można niejako ten okres np. półroczny „zasymulować”. Możemy sobie odłożyć pół roku czy rok najnowszych danych historycznych i absolutnie ich nie dotykać, aż do momentu kroku 5. Wtedy zamiast czekania np. pół roku, możemy to zrobić w backteście w przeciągu sekundy. Przy czym tu jest taka uwaga, to będzie działało, dla osób zaawansowanych, bardziej doświadczonych. Jednak, jeżeli naprawdę będziemy szczerzy wobec siebie przede wszystkim i nie będziemy nigdy tych danych na wcześniejszych etapach używać. Jeżeli my w trakcie budowy strategii, będziemy korzystać z tych danych, które są super-out-of-sample (SOOS), czyli takie dane „z przyszłości” i my mimo wszystko na etapie budowy podglądalibyśmy jak nasza strategia się zachowuje na tych danych super-out-of-sample, to niestety takie dane już wtedy nie mają absolutnie swojej wartości, którą powinny mieć.

Języki programowania wykorzystywane w tradingu

Programowanie wielu przeraża. Ale nie musi to być nic strasznego. Polecam krótki przewodnik po językach programowania.

Czytaj dalej →

Jeżeli boimy się, że takie coś mogłoby mieć miejsce, to najlepiej odłożyć taką strategię na pół roku czy rok „na haku” i zobaczyć na chłodno, jak ona się zachowuje na rynku, bez zaangażowania prawdziwego kapitału. Sprawdzić, czy ta strategia faktycznie realizuje nasze założenia. Jeżeli sobie założyliśmy, że ta strategia powinna osiągać określone stopy zwrotu, nie powinna przekraczać odpowiednich obsunięć na linii kapitału, to wtedy możemy sprawdzić, czy to faktycznie tak jest na realnych danych, czy też fajne wyniki mieliśmy tylko na backteście, na danych historycznych, a w rzeczywistości się okazuje, że ta strategia nie spełnia naszych założeń.

Jest tu jeszcze jeden taki aspekt psychologiczny, jeżeli chodzi o handel papierowy. Jeśli jesteśmy osobą początkującą i nie mamy zbyt wielu strategii. Jeżeli już się tak palimy do tego, żeby tak naprawdę zacząć handlować na realnym rynku, to możemy mieć taką w sobie ochotę, żeby jak najszybciej tę naszą nową strategię uruchomić i jak najszybciej zacząć zarabiać pieniądze. Jest to w pewien sposób zrozumiałe, natomiast jest to niedobre. Niedobre z wielu powodów. To jest po pierwsze to, co mówiłem już wcześniej.

Jeżeli są jakieś błędy popełnione na wcześniejszych krokach, to ta strategia niestety najprawdopodobniej zrobi nam dziurę w portfelu, a nie pozwoli zarobić. Jest też taka kwestia, że paradoksalnie, gdyby z kolei ta strategia zupełnie przypadkowo zarobiła jakieś pieniądze, to my możemy tutaj być niejako omamieni tym naszym geniuszem budowania nowych strategii. Możemy sobie pofolgować np. z ryzykiem. Może być to w przyszłości zabójcze. Dlatego też taki handel papierowy, taki okres inkubacji, pozwala na ochłonięcie przed handlem na realnym rynku. Pozwala uniknąć pewnych błędów. Zbytniego przeoptymalizowania czy efektu pewności wstecznej. Trzeba też sobie zdać sprawę, że handel papierowy nie jest lekarstwem na wszystko. Ta strategia, którą zbudowaliśmy, jeżeli przejdzie test handlu papierowego poprawnie, to nie jest 100% gwarancja, że ta strategia jest super.

Są takie rzeczy, których ten etap również nie wychwyci. Handel papierowy, nie jest w stanie wyłapać naszych założeń, co do poślizgów cenowych. Załóżmy, że działamy na jakimś mało płynnym rynku i byliśmy zbyt optymistyczni, co do ewentualnych poślizgów cenowych, zakładając, że w ogóle je uwzględniliśmy. Wtedy może nam się wydawać w testach, że to całkiem fajnie wygląda w backteście. Również w handlu papierowym będziemy widzieć, że te sygnały przez strategię padają i my teoretycznie jesteśmy na rynku. Dopóki nie zawrzemy transakcji, to możemy mieć problem z określeniem, jakie te poślizgi cenowe naprawdę są. Dlatego też trzeba mieć tutaj uwagę, że handel papierowy jest bardzo pomocny, ale też nie jest lekarstwem absolutnie na wszystko.

Zachęcam do tego, żeby ten etap wdrożyć we własnym procesie budowy i testowania strategii transakcyjnych. Teraz może ten współczynnik będzie lepszy, ale na początku, to mógłbym powiedzieć, że więcej niż połowa strategii, które wydawały mi się świetne i, że budowałem je zgodnie ze sztuką, nie przechodziły testu handlu papierowego. Nie ukrywam, że symuluje teraz, nie dla wszystkich strategii, ale dla niektórych handel papierowy. W taki sposób, że zostawiam faktycznie pół roku danych zupełnie nie dotykanych na wcześniejszych etapach. Te pół roku robi w przeciągu sekundy i w ten sposób realizuję nie jako ten okres inkubacji.

Podejście jest OK, jeżeli już mamy pewne doświadczenie i obycie. Naprawdę nie jesteśmy jakoś strasznie napaleni, że ta strategia musi być jak najszybciej na rynku i zacząć zarabiać nam pieniądze. Handel papierowy może mieć taki niewdzięczny efekt. Wyobraźmy sobie, że włożyliśmy dużo trudów w budowanie strategii i staraliśmy się robić to jak najlepiej. Ta strategia faktycznie w backteście wyszła bardzo dobrze. Następnie przechodzimy do handlu papierowego i przez pół roku nie handlujemy realnymi pieniędzmi, tylko puszczamy tę strategię na sucho. Załóżmy, że strategia zaczyna świetnie zarabiać. My widzimy, że moglibyśmy zarobić w ciągu pół roku świetne pieniądze, ale ich nie zarobiliśmy. Nasza strategia działała gdzieś tam obok rynku. Wtedy może się pojawić taki efekt myślenia, że mogliśmy od razu sobie wpiąć tę strategię i zarobić pieniądze. Nie warto w ten sposób myśleć. Na giełdzie lepiej jest stracić okazję, niż pieniądze. Straciliście okazję. Mogliście faktycznie zarobić pieniądze, ale mogliście też je stracić. Warto się nad tym zastanowić.

Na giełdzie lepiej jest stracić okazję, niż pieniądze

Krok 6: Wdrożenie

Załóżmy, że już nie tylko przetestowaliśmy strategię, ale też przeszliśmy etap inkubacji i handlu papierowego. Wpinamy strategię do rynku. Jeżeli jest to strategia, która działa na wykresach intradayowych, tak jak są świece 15 minutowe, to prawdopodobnie będziemy zainteresowani, żeby taka strategia została zautomatyzowana. Tym bardziej, jeżeli to nie jest jedyna strategia, jaką mamy. Nie możemy siedzieć przed komputerem cały dzień, czy też całą dobę. Wtedy będzie interesujące, by taką strategię zautomatyzować. To są zabiegi czysto techniczne, o których nie będę się tutaj rozwodził. Z prostego powodu. Po pierwsze – to są bardzo zależne kwestie od platformy, na której funkcjonujemy. W zależności na jakiej platformie działamy, to może wygląda nieco inaczej. Nie przeceniałbym kwestii automatyzacji handlu. To znaczy, to jest dla mnie czyste, techniczne rzemiosło. Ono samo w sobie nam nie pozwoli generować przewagi rynkowej.

Handel na automacie, czyli jak komputery samodzielnie zawierają transakcje na rynkach finansowych w XXI wieku

Bez względu na to, czy nam się to podoba, czy nie, komputery samodzielnie zawierające transakcje na rynkach finansowych są dziś faktem. Są rynki, na których większość transakcji jest obecnie realizowana już nie przez ludzi, ale właśnie przez komputery i stojące za nimi algorytmy.

Czytaj dalej →

Jeżeli model, który zbudowaliśmy, nie ma wartości, to jego automatyzacja sama z siebie nie doda żadnej wartości. Jeżeli mamy przewagę rynkową, to jest to strategią, którą ciężko byłoby realizować manualnie człowiekowi. Możemy ją zautomatyzować. Wtedy ma to sens, bo faktycznie możemy eksploatować jakieś efektywności nie rynkowe, które człowiekowi, w taki manualny sposób byłoby ciężko realizować. Mamy tu pomocnika w postaci automatu. Na etapie wdrożenia też powinniśmy zwrócić uwagę na to, jak nasza nowo wdrażana strategia ma się do całości portfela, który mamy w rynku. Zakładam też, że mamy więcej strategii. Tak naprawdę, jak handlujemy na rynku , to ten proces dokładania i zamieniania strategii w portfelu jest ciągłym procesem.

My powinniśmy cały czas szukać nowych nieefektywności rynkowych, nowych strategii. Rynki ewoluują, więc nie możemy oczekiwać, że raz wdrożona strategia będzie działała 50 lat do emerytury. My tylko będziemy sobie pieniądze liczyć jak przyrastają. Dlatego też jest to proces, który cały czas postępuje. My musimy nie tylko wdrożyć strategię, ale musimy też monitorować strategie, które funkcjonują na rynku. Musimy sprawdzać, czy one dobrze funkcjonują i czy być może nie trzeba ich wymienić.

Strategię trzeba nie tylko wdrożyć, ale też monitorować te, które funkcjonują na rynku

Krok 7: wycofanie z rynku

Ten krok zawsze powinien być wzięty pod uwagę, jeszcze przed wdrożeniem strategii w rynek. Powinniśmy wiedzieć kiedy my tę strategię, którą wdrażamy, którą dokładamy do naszego portfela, będziemy z rynku wycofywać. Jest to istotne, bo strategię po prostu się zużywają. Zużywają się, bo nieefektywności rynkowe, które nasza strategia eksploatowała, być może w pewnym momencie jak źródełko wysychają. Przestają funkcjonować, albo już nie dają nam takiego zarobku. Być może są lepsze okazje rynkowe, gdzieś w innym miejscu. Po prostu wtedy musimy wiedzieć, kiedy czy przy jakich wydarzeniach, my mówimy, tę strategię wycofujemy z rynku. Tu jest znów bardzo wiele podejść. Każdy to może robić według własnego uznania. Warto, żeby to było zrobione wcześniej. Żebyśmy mieli wcześniej jasne założenie, kiedy wyłączamy strategię, a nie na jakichś dużych emocjach, gdy nasza strategia zaczyna nam robić niezłą dziurę w portfelu. My wtedy gorączkowo zastanawiamy się, czy już ją wyłączyć czy nie. Może jeszcze się odbiję.

Tutaj można popełnić błędy dwojakiego rodzaju. Możemy faktycznie zbyt długo siedzieć ze strategią, która już nie działa i trzymanie jej w rynku nie ma sensu. A możemy też popełnić inny błąd, wycofując z rynku strategię, która jest ok, ale ma chwilowe obsunięcie na rynku na linii kapitału. To jest naturalne. Każda strategia również musi w procesie zarabiania tracić. To jest nieodłączny element gry rynkowej. Możemy sobie przyjąć prost założenie. Jeżeli strategia na jakimś kontrakcie terminowym w Stanach Zjednoczonych miała historyczne obsunięcie typu 10 tysięcy dolarów, to my możemy sobie powiedzieć ok. To było maksymalne obsunięcie, jakie na danych historycznych dało się uzyskać. Możemy sobie powiedzieć, jeżeli w realnym handlu strategia straci 150%, to wtedy ja odłączam się od rynku.

Znam też człowieka, który jest bardzo rygorystyczny, jeśli chodzi o to, kiedy wycofywać strategię z rynku. Jest tak bardzo konserwatywna, że ma założenie, że jeżeli strategia osiąga 50% maksymalnego obsunięcia, jakie było w backteście, to już się wycofuje z rynku. Może się to wydawać dziwne, natomiast faktycznie dla tego konkretnego osobnika to działa i ma to sens. Zapewniam was, że większość osób zna tego człowieka dobrze ze świetnych książek, poświęconych m.in. strategiom transakcyjnym.

Jeżeli chodzi o wycofanie z rynku, to nie powinniśmy udawać czasami, że ta strategia przestała działać, a my to po prostu będziemy to ignorować. Liczenie na siłę, że ta strategia wróci do formy, może się okazać bardzo płonne i raczej bym tego nie polecał. Jest też takie pytanie, jak już wycofałem strategię z rynku, bo osiągnęła pułap maksymalnego obsunięcia i w jej miejsce wstawiłem inną strategię, to co z tą, którą już wycofałem? Czy ona powinna już być usunięta raz na zawsze i nigdy nie być handlowana? Tu znów są różne podejścia.

Osobiście, staram się taką strategię już usunąć i w tym kształcie jej na rynek nie wkładać. Być może z jakimiś modyfikacjami, ale to też nie tak wprost, bo bałbym się o jakieś przeoptymalizowanie. Pomysłów i możliwości jest tyle na rynku, że naprawdę mogę porzucić tą obecną strategię, która źle się sprawuje i w jej miejsce mieć kilku kandydatów. Mieć klęskę urodzaju i zastanawiać się, którą strategię dołożyć do portfela, a nie mieć sytuację, w której na siłę będziemy się przywiązywać do jakiejś strategii, bo nie mamy innych w zanadrzu. Też bym tutaj przestrzegał przed zbytnim związaniem z jakąś strategią i nie dopuszczaniem do naszych myśli scenariusza, w którym ta strategia przestaje funkcjonować.

Każda strategia musi w procesie zarabiania również tracić

Perry Kaufman, czyli jak przełożyć doświadczenia programu Apollo na trading algorytmiczny

W 1971 roku zaczął handlować kontraktami terminowymi i od początku wykorzystywał do tego algorytmy budując systemy transakcyjne. Pracował z najlepszymi CTA w branży.

Czytaj dalej →

Narzędzia do projektowania strategii

To tyle, jeżeli chodzi o budowanie, testowanie, wdrażanie strategii inwestycyjnych. Mam tu jeszcze takie slajdy finalne. Narzędzia do projektowania strategii. Jest tego mnóstwo. Ja osobiście korzystam przede wszystkim z TradeStation, ale również korzystam z własnych narzędzi. „Customizowanych” i pisanych od zera przeze mnie. Korzystałem też kiedyś, teraz już rzadziej, z Ami Brokera. Jeżeli ktoś funkcjonuje na rynku Forex, na którym ja nie funkcjonuję, to tam z kolei najczęściej używanym narzędziem jest pewnie Metatrader. Narzędzi tak naprawdę jest bardzo dużo, do projektowania strategii. To też nie jest tak, że narzędzia są jakieś magiczne i one za nas wykonają jakąś super robotę i będziemy zarabiać.

Najważniejszym czynnikiem w całym procesie jesteśmy my sami. Narzędzia są po prostu narzędziami. Łopata sama z siebie nie będzie kopała rowów, ale jak będzie dobry człowiek przy tej łopacie, to być może zdziała całkiem dużo. Chodzi o to, żebyśmy nie oczekiwali cudów, że nagle wystarczy kupić jakieś dobre narzędzie, żebyśmy mogli mieć przewagę rynkową.

Podsumowanie

Co do dalszych inspiracji i poszukiwań, można polecić dużo literatury na ten temat. Ja najwięcej tutaj posiłkowałem się podejściem do budowania strategii, jakie prezentuje Robert Pardo i Kevin Davey, ale nie tylko. Polecam otwarty umysł i poszukiwanie, i nie tylko zdawanie się na to, co piszą najmądrzejsi, ale też i próbowanie własnych koncepcji i sprawdzanie jak one funkcjonują. To by było tyle.

Na początku mieliśmy cel. Jest to punkt, w którym określamy cel, jaki stawiamy przed naszą strategią. To, że np. chcemy, aby nasza strategia generowała stopę zwrotu typu 25% w skali roku przy obsunięciu kapitału nie większym niż np. 15%.

Drugi punkt – pomysł. Jak już wiemy, co chcemy osiągnąć, to musimy się zastanowić jak chcemy to zrealizować. Tu musimy wypracować koncepcję, która umożliwi nam osiągnięcie założonego wcześniej celu.

Punkt trzeci – implementacja i testy na małym zbiorze danych. To jest bardzo istotne. Mamy już cel i pomysł. Teraz musimy napisać tę strategię. Najczęściej musimy ją zakodować. To, co jest istotne, to żebyśmy nie korzystali z wszystkich danych historycznych, jakie mamy na podorędziu. Możemy korzystać maksymalnie według mnie do 30%. Jeżeli mamy np. dane za okres 10 lat, to nie powinniśmy wykorzystać więcej niż trzech lat. Jeśli zaimplementujemy naszą strategię i wstępnie wytestujemy na całym zbiorze albo na większości danych historycznych, to mamy bardzo duże prawdopodobieństwo, że nasz system będzie przeoptymalizowany. On będzie wyglądał fajnie w testach, ale bardzo źle rokował, aby te wyniki powtórzył na realnym rynku.

Punkt czwarty – rozbudowane testy, czyli np. walk forward czy Monte Carlo. Tak naprawdę o samych testach walk forward, to można by nagrać serię podcastów. Tutaj już robimy testy na większości dostępnych danych. Ja sobie zawsze już wcześniej zostawiam troszkę takich danych super out of sample, czyli takich, które symulują przyszłość i jest to np. pół roku, rok. Zgodnie ze sztuką, testujemy dane, na większości zbioru historycznego, jaki mamy dostępny. Oczywiście z zastosowaniem reguł poprawnego testowania. Nawet wykorzystując taką ideę jak walk forward analysis, możemy popełnić błędy, które de facto doprowadzą do przeoptymalizowania naszego modelu. Trzeba tutaj również uważać.

Piąty punkt – test inkubacji i handel papierowy. Strategia jest gotowa, ale my jeszcze tutaj dodatkowy test robimy na danych, których ta strategia zupełnie nie widziała. Albo czekamy pół roku i sprawdzamy, jak ta strategia się zachowuje na tych danych rynkowych realnych, albo niejako symulujemy tę przyszłość. Jeżeli chodzi o to pierwsze podejście, gdzie faktycznie przez pół roku odwieszamy tę strategię na haku, to plus jest taki, że możemy niejako ochłonąć i wystudzić te emocje, jak już będziemy widzieć oczami wyobraźni jak zarabiamy pieniądze. Ten okres pozwoli nam na wypalenie się tych emocji, co jest bardzo istotne, żeby myśleć zdrowo-rozsądkowo, a nie emocjonalnie na rynku.

Punkt szósty – wdrożenie. W końcu wchodzimy naszą strategią w rynek. Jest też konserwacja, o której ja nie wspomniałem. To znaczy to, że my wdrażamy w rynek strategię, czyli ją podpinamy do rynku. To jest pierwsze. A drugie to jest też konserwacja, czyli strategia być może wymaga co okresowej reoptymalizacji parametrów. Chociażby w ramach procesu walk forward. Strategia, która być może w rynku funkcjonuje pięć lat, to nie znaczy, że ona przez pięć lat nie była dotykana. Tylko co pół roku są reoptymalizowane, dobierane nowe parametry. O reoptymalizacji mówiłem nieco przy okazji omawiania walk forward. Po wdrożeniu, większość strategii być może wymaga takiej konserwacji. Oczywiście jest potrzebne monitorowanie strategii.

Punkt siódmy – wycofanie strategii z rynku. Jeżeli w trakcie monitorowania, okaże się, że strategia przestała spełniać nasze oczekiwania, które były wcześniej wyznaczone, to powinna być taka zero jedynkowa decyzja. My wiemy, że jest twardy punkt odcięcia. Wiemy, że jeżeli strategia straci 10 tysięcy dolarów i my wcześniej na etapie jeszcze implementacji założyliśmy jaki jest to poziom, to wtedy powinniśmy się w punkcie siódmym wycofać w takim momencie, jak on nastąpi z rynku. Ewentualnie zastąpić strategię wycofaną jakąś nową. Ogólnie nie brnąć dalej w handlowanie tą strategią, jak ona już nie spełnia naszych oczekiwań.

Mam nadzieję, że wszyscy dotarli do końca. Przede mną jeszcze jest ostatni element z tego cyklu. Realny przykład, w którym zbudujemy sobie strategię od a do z. Będzie to miało miejsce już na pewno nie w tym roku, nie w 2018. Nagrywam to, jest 8 grudzień 2018. Wątpię, że byłbym w stanie stworzyć taki długi wpis blogowy jeszcze w tym miesiącu. Chociażby z tego powodu, że mamy święta, a dwa ja mam jeszcze jeden podcast do nagrania ze znamienitym gościem. Mianowicie z Larry Connorsem już w poniedziałek, do którego też muszę się przygotować.

Poza tym mam jeszcze mnóstwo innych obowiązków projektowych. W ogóle wraz z wejściem w Nowy Rok, będę musiał nieco przeorganizować pracę tutaj i zrezygnować z części obowiązków, bo czuję zwyczajnie, że trochę za dużo sobie wziąłem na głowę. Przepraszam za to narzekanie. Tak naprawdę, to ja bardzo lubię pracować. Czasami biorąc sobie zbyt dużo obowiązków na głowę doprowadzamy do momentu, w którym przestajemy być efektywni w tym, co robimy. To nie chodzi o to, żeby się przepracowywać, tylko, żeby pracować mądrze i inteligentnie. Żeby efekty naszej pracy były produktywne, czego wam życzę przede wszystkim też. Również w kontekście tego podcastu.

Abyście budowali bardzo dobre strategię, które nie są przeoptymalizowane i dadzą wam dużo satysfakcji, radości, pieniędzy również, bo o to też w końcu w tym wszystkim chodzi. Jest to biznes i nie robimy tego po to, żeby tylko dać upust naszym intelektualnym potrzebom, ale żebyśmy po prostu mogli też dostać jakąś nagrodę finansową w postaci zarobionych pieniędzy. Tego wam wszystkiego życzę.

Dziękuję bardzo za wytrwanie ze mną do końca. Na stronie systemtrader.pl/020, jak numer tego odcinka, będzie również zamieszczona prezentacja, którą będziecie mogli sobie przeklikać. Tam również będzie odnośnik do filmu na YouTubie, gdzie będziecie mogli tego podcastu nie tylko wysłuchać, ale i oglądać z podglądem na prezentację, w oparciu o którą ten podcast powstał.
Gorąco pozdrawiam i do usłyszenia.

Jacek

Subskrybuj
Powiadom o
guest

11 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments

Ruszyła sprzedaż oprogramowania #ST

Kilkadziesiąt gotowców inwestycyjnych!