Dzi艣 przyszed艂 w ko艅cu czas na zamkni臋cie mini cyklu o budowaniu w艂asnej strategii. Prezentuj臋 praktyczny przyk艂ad budowania i testowania kr贸tkoterminowej strategii algorytmicznej. Tych, kt贸rzy nie 艣ledzili mojej strony na bie偶膮co, a s膮 zainteresowani, odsy艂am do cz臋艣ci pierwszej i drugiej niniejszej trylogii. Znajomo艣膰 tamtego materia艂u powinna znacz膮co pom贸c w zrozumieniu tego wpisu.

To co, jak na mnie, jest nietypowe w tym wpisie, to fakt, 偶e zamiast formy podcastowej wybra艂em wpis blogowy. 馃檪 Trudno by艂oby zamie艣ci膰 tak膮 tre艣膰 w postaci audio.

Pewnie powinienem by艂 zacz膮膰 w stylu: poznaj strategi臋 zarabiaj膮c膮 40% w rok! 馃檪 Tak, to poprawi艂oby klikalno艣膰 artyku艂u. Ale by艂oby te偶 nieuczciwe, bez podania ryzyka z tym zwi膮zanego.

Artyku艂 pokazuje ca艂膮 艣cie偶k臋 „od pomys艂u, do przemys艂u” budowy i wdro偶enie w艂asnej kr贸tkoterminowej strategii transakcyjnej. 1 1. Zwracam uwag臋 na to, poniewa偶 w planach mam r贸wnie偶 prezentacj臋 strategii 艣rednio/d艂ugoterminowej opartej na paradygmacie tzw. pod膮偶ania za trendem (ang. trend following). Tam akcenty w procesie budowy i testowania strategii s膮 roz艂o偶one inaczej. × Same konkrety, twarde liczby, rachunek prawdopodobie艅stwa i statystyka. Aby jednak nie przerazi膰 wi臋kszo艣ci, dla cel贸w edukacyjnych wybrany przyk艂ad jest prosty. Co nie znaczy, 偶e u艂omny — wr臋cz przeciwnie — pokazuje, 偶e rozwi膮zanie proste, nie prostackie, mo偶e by膰 pi臋kne i efektywne.

UWAGA! Handel kr贸tkoterminowy na rynkach kapita艂owych zdecydowanie nie jest dla ka偶dego, a w szczeg贸lno艣ci nie dla kogo艣, kto szuka szybkich i 艂atwo zarobionych pieni臋dzy. Sam po wielu latach obecno艣ci na rynkach, wraz z mo偶liwo艣ci膮 inwestowania du偶o wi臋kszego kapita艂u alokuj臋 go do strategii d艂ugoterminowych, kt贸re nie s膮 tak absorbuj膮ce czasowo. Strategie kr贸tkoterminowe docelowo b臋d膮 u mnie marginesem mojej aktywno艣ci na rynkach kapita艂owych.

UWAGA! Zamieszczona tre艣膰 jest czysto edukacyjna. Nie jestem doradc膮 inwestycyjnym, ani profesjonalnym zarz膮dzaj膮cym funduszami inwestycyjnymi. Zach臋cam, aby wszystko weryfikowa膰 samodzielnie. Moje opinie s膮 moimi opiniami — nie trzeba si臋 z nimi zgadza膰.

S艂owo wst臋pne

Pomimo stara艅 po zebraniu materia艂u w ca艂o艣膰, wyszed艂, jak na standardy blogowe, d艂ugi artyku艂. By膰 mo偶e wielu si臋 zawiedzie, zw艂aszcza w 艣wiecie, gdzie w mediach spo艂eczno艣ciowych dominuj膮 tre艣ci o warto艣ci rozrywkowej, mylone cz臋sto z tre艣ci膮 merytoryczn膮. Nie chodzi o to, 偶e pisz臋 tu o mechanice kwantowej, okraszaj膮c wpis r贸wnaniem Schrodingera, ale mimo wszystko przebrni臋cie przez ten artyku艂 b臋dzie wymaga艂o od Ciebie czasu i pewnego wysi艂ku. Ma艂a czarna mo偶e by膰 niewystarczaj膮ca do niniejszej lektury. 馃檪

Dziel臋 si臋 w tym wpisie nie tylko swoj膮 wiedz膮 i do艣wiadczeniem (wci膮偶 skromnym), ale i, a mo偶e nawet przede wszystkim, tym, co do powiedzenia maj膮 osoby uznane w bran偶y. Do艣wiadczenia poparte wieloma dekadami sp臋dzonymi na rynkach finansowych to warto艣膰 sama w sobie. Nagrywanie wywiad贸w w ramach podcastu umo偶liwi艂o nie tylko bli偶sze poznanie wielu ciekawych os贸b. To co jest wyj膮tkowo cenne, to fakt nawi膮zania wsp贸艂pracy z kilkoma osobami, od kt贸rych mog臋 uczy膰 si臋 by膰 coraz lepszym traderem. Dzi艣 cz臋艣ci膮 tych wiadomo艣ci dziel臋 si臋 z Tob膮.

Wiedza tu zawarta nie jest ani rewolucyjna, ani sekretna. Niemniej jednak w jednym miejscu skupia obszerny zakres praktycznego rzemios艂a. W j臋zyku polskim i zupe艂nie za darmo.

B膮d藕 krytyczny, staraj si臋 wszystko weryfikowa膰. Inspiruj si臋, ale nie traktuj niczego za pewnik. Szukaj swojej drogi. W ko艅cu chodzi o Twoje pieni膮dze. Nie powierzajmy ich 艣lepemu trafowi.

Streszczenie

Dla zabieganych, czy mniej zainteresowanych, kr贸tkie streszczenie poni偶ej.

TL;DR Strategia zapisana algorytmem ma wiele zalet. Jej stosowanie u艂atwia osi膮gn膮膰 wa偶n膮 w tradingu obiektywno艣膰 i powtarzalno艣膰 podejmowanych decyzji. U艂atwia (ale nie eliminuje) odci臋cie emocji od czynnika decyzyjnego. Mamy te偶 mo偶liwo艣膰 automatyzacji handlu. Co nie mniej istotne, skwantyfikowanie strategii pozwala na jej statystyczn膮 analiz臋. Ta z kolei pozwala w szczeg贸lno艣ci odpowiedzie膰 na pytanie, czy tkwi w strategii przewaga rynkowa.
Zbudowanie strategii wymaga jednak zweryfikowanego i sprawdzonego procesu, kt贸ry poprowadzi nas przez wszystkie etapy jej 偶ycia: od planowania, implementacji, przez testowanie, wdro偶enie i wycofanie z rynku. Jest to krytyczny element warsztatu ka偶dego profesjonalnego tradera.
W artykule opisuj臋, w jaki spos贸b zbudowa膰 strategi臋, kt贸ra ma szans臋 na realnym rynku. Pokazuj臋 szereg potencjalnych pu艂apek, kt贸re bardzo 艂atwo pope艂ni膰, a kt贸re mog膮 wytworzy膰 w nas b艂臋dne prze艣wiadczenie o posiadanej przewadze rynkowej. Wszystko jest poparte praktycznym przyk艂adem — dzia艂aj膮c膮 strategi膮 dla kontraktu terminowego na indeks NASDAQ-100.

Za艂o偶enia

呕eby艣my si臋 dobrze zrozumieli: poni偶szy przyk艂ad jest tylko przyk艂adem. W wielu miejscach mo偶e co艣 by膰 niedopowiedziane, albo uproszczone, co w zale偶no艣ci od Twojego stopnia znajomo艣ci tematu mo偶e by膰 pewnym problemem. Niestety, ten wpis i tak jest ju偶 d艂ugi, dla wielu pewnie zbyt d艂ugi. Zale偶y mi jednak, aby艣 zrozumia艂 og贸lne przes艂anie. Nie martw si臋 za bardzo teraz detalami, nie ulegaj zbytniej perfekcji.

Zatem, nie martw si臋 tym, 偶e sposob贸w wyg艂adzania wska藕nika RSI jest klika, a Ty nie wiesz, kt贸ry powiniene艣 wybra膰. Nie jest istotne, czy 艣rednia krocz膮ca jest prosta, czy wyk艂adnicza. Skup si臋 na zrozumieniu ca艂o艣ciowego obrazu, jakim jest proces budowy i weryfikacji strategii.

Zauwa偶, 偶e prezentowana strategia jest prosta. I taka ma by膰. Dodawanie kolejnego poziomu skomplikowania zwykle nie ma sensu, tym bardziej, je艣li symulowane wyniki ulegaj膮 niewielkiej poprawie. B臋dzie o tym mowa jeszcze.

Proces weryfikacji strategii jest o wiele bardziej rozbudowany od samej strategii. Troch臋 dzielimy w艂os na czworo, ale to dla cel贸w edukacyjnych.

Nie musisz by膰 zawodowym programist膮, by zaj膮膰 si臋 tradingiem. Ale podstawy programowania to kluczowa umiej臋tno艣膰 w tej profesji. Opanowanie podstaw, kt贸re umo偶liwi膮 Ci napisanie prostego skryptu z podstawow膮 funkcjonalno艣ci膮 i logik膮 nie powinno Ci nastr臋czy膰 wiele trudno艣ci. O tym tu nie b臋d臋 pisa艂 鈥 je艣li temat jest Ci obcy, warto zainwestowa膰 tam sw贸j wysi艂ek.

呕eby przygotowa膰 ten artyku艂, korzysta艂em z okre艣lonego oprogramowania. Proponuj臋 Ci jednak, 偶eby skupi膰 si臋 przede wszystkim na zrozumieniu koncepcji, kt贸r膮 opisuj臋, a mniej na technikaliach.

Podstawowy aparat matematyczno-statystyczny te偶 jest bardzo pomocny w tradingu, by nie powiedzie膰 niezb臋dny. I zn贸w: nie chodzi o wielkie teorie. One cz臋sto 艂adnie wygl膮daj膮 na uniwersytetach, a 艣rednio maj膮 si臋 w praktyce. Powiniene艣 jednak zna膰 takie podstawowe poj臋cia jak 艣rednia, mediana, czy standardowe odchylenie.

Dla otrze藕wienia i zach臋ty do weryfikowania wszystkiego samodzielnie, polecam niniejszy artyku艂 o tym jak mo偶emy oszukiwa膰 si臋 sami, buduj膮c pi臋kne modele statystyczne, oraz poni偶sze s艂owa wybitnego fizyka, Richarda Feynmanna:

(…) if the process of computing the consequences is indefinite, then with a little skill any experimental result can be made to look like the expected consequences.

Strategia to nie wszystko

Na pocz膮tek musimy zda膰 sobie spraw臋 z tego, 偶e tak jak nie ma jednej idealnej metody na inwestowanie naszych pieni臋dzy na rynku, tak samo nie istnieje jedyna metoda budowy strategii rynkowej. 艢wietnie mo偶na to zauwa偶y膰 chocia偶by s艂uchaj膮c wnikliwie go艣ci mojego podcastu.

Prezentowana strategia jest czysto statystyczna i mechaniczna. Jej dzia艂anie opiera si臋 tylko na reagowaniu na ruchy ceny, a jej logika jest banalna. Nie ma dla niej 偶adnego znaczenia, co jest powodem tych ruch贸w (komunikat ekonomiczny, polityka, etc.). Wpisuje si臋 to w opini臋 rynkow膮, kt贸ra m贸wi, 偶e cena jest ostateczn膮 dan膮. Osobi艣cie lubi臋 takie podej艣cie: nie przewidujemy rynku (w oparciu o wydarzenia), tylko reagujemy na poruszaj膮ce si臋 ceny. Wi臋cej na ten temat mo偶esz znale藕膰 m.in. w moim wywiadzie z Tomem Basso — legendarnym traderze, kt贸ry zarz膮dza艂 portfelem o wielko艣ci przekraczaj膮cej p贸艂 miliarda dolar贸w.

Bez wzgl臋du na preferowan膮 metodologi臋 budowy strategii inwestycyjnej, powinni艣my pami臋ta膰 o kilku uniwersalnych zasadach zwi膮zanych z samym inwestowaniem:

  • Nie ma zysk贸w bez ryzyka — je艣li nie satysfakcjonuje nas to, co oferuj膮 np. papiery d艂u偶ne emitowane przez rz膮dy USA czy Niemiec, musimy zaakceptowa膰 wy偶sze ryzyko inwestycyjne (czytaj: ryzyko utraty inwestowanych 艣rodk贸w)
  • Powinni艣my stawia膰 sobie realistyczne oczekiwania wobec naszych inwestycji — wy偶sze oczekiwania poci膮gaj膮 zwykle wy偶sze ryzyko
  • Ka偶da strategia wymaga czasu, by m贸c spe艂ni膰 swoje zadanie — nie oczekujmy natychmiastowych rezultat贸w
  • Powinni艣my jasno okre艣li膰 klas臋 instrument贸w, kt贸r膮 chcemy porusza膰 si臋 po rynku. Przyk艂adowo handel kontraktami na S&P500 (wbudowana d藕wignia finansowa) to nie to samo, co handel ETF na S&P500 (np. SPY). Odwr贸cony ETF na indeks S&P500 to nie to samo, co kr贸tka pozycja na kontrakcie ES.
  • Musimy uczciwie odpowiedzie膰 sobie na pytanie, ile czasu mo偶emy po艣wi臋ci膰 rynkowi w trakcie dnia. By膰 mo偶e zamiast rzucania si臋 na hiper aktywny handel lepiej rozpocz膮膰 od „spokojnego” handlu opartego na interwa艂ach dziennych czy wr臋cz tygodniowych?
  • Strategia musi by膰 w zgodzie z naszymi preferencjami — tylko wtedy mo偶liwa jest niezb臋dna dyscyplina w pod膮偶aniu za ni膮
  • Nie oczekujmy, 偶e rynki finansowe oka偶膮 si臋 drog膮 na skr贸ty do zarobienia pieni臋dzy. Dla wi臋kszo艣ci inwestycje na rynkach finansowych ko艅cz膮 si臋 stratami. Zarabianie pieni臋dzy na rynkach finansowych wymaga umiej臋tno艣ci i wytrwa艂o艣ci. To jest biznes, do tego wybitnie konkurencyjny, gdzie przychodzi nam walczy膰 z najlepszymi profesjonalistami.

Wymieni艂em te zasady, aby ustrzec ka偶dego, kto przewinie nieco dalej ten artyku艂 i skupi si臋 wy艂膮cznie na zyskach generowanych przez przyk艂adow膮 strategi臋. Zadaniem tego wpisu nie jest danie Ci ryby, tylko w臋dki. Ale to wymaga pracy po Twojej stronie. Bardzo du偶o pracy.

M贸j wywiad z Krzysztofem 艁ucjanem

Krzysztof, wsp贸艂tw贸rca m.in portalu Stooq, dzieli si臋 w wywiadzie ponad 20-letnim do艣wiadczeniem rynkowym.

Czytaj dalej 鈫

Kolejna sprawa, to kwestia ryzyka. Strategia, nawet taka jak poni偶ej, to zaledwie ma艂y wycinek tego, o czym musimy pami臋ta膰 — o portfelu. Zawodowcy nie stawiaj膮 wszystkiego na jedn膮 kart臋. Nie my艣l膮 w kontek艣cie pojedynczej strategii, pojedynczej pozycji na rynku, tylko globalnie — w kategoriach portfela. To temat wybiegaj膮cy poza obszar tego artyku艂u. Jest jednak kluczowy i b臋d臋 do niego wraca艂, by to nie umkn臋艂o.

Wyobra藕my sobie, 偶e mamy sensownie zbalansowany pod k膮tem ryzyka portfel, kt贸rego sk艂adowymi s膮 ca艂kiem przeci臋tne strategie — wci膮偶 mamy szanse na odniesienie sukcesu, bo skupiamy si臋 na prze偶yciu na rynku. Przyk艂adowo wiele transakcji zawieranych po kr贸tkiej stronie rynku generuje marne wyniki, wzgl臋dem pozycji d艂ugich. I to w portfelach zarz膮dzanych przez profesjonalist贸w. A mimo wszystko z perspektywy portfela, globalnie ma to sens i pozwala paradoksalnie minimalizowa膰 ryzyko i polepszy膰 parametry inwestycyji.

W innym scenariuszu, mo偶emy mie膰 portfel, kt贸ry ma 藕le zarz膮dzane ryzyko, 藕le dobrany zestaw rynk贸w (np. du偶a korelacja, ma艂a dywersyfikacja). Pomimo, 偶e b臋dziemy mie膰 najlepsze strategie w takim portfelu, mo偶emy wysadzi膰 go w powietrze w艂a艣nie z powodu braku kontroli ryzyka. To w艂a艣nie ten element przes膮dza w d艂ugim terminie o naszym sukcesie, tudzie偶 jego braku.

Chcia艂em podkre艣li膰 jeszcze jedn膮 rzecz w kontek艣cie budowanej przez nas strategii. Decyduj膮c si臋 na jej stosowanie, powinni艣my wyzby膰 si臋 pokusy jej modyfikowania czy obchodzenia w trakcie jej dzia艂ania na rynku, zwykle w obliczu stratnych transakcji. S膮 wyj膮tki 2 2. Polecam m贸j wywiad z Lind膮 Raschke, w kt贸rym przyzna艂a, 偶e nie jest w stanie pod膮偶a膰 w 100% za mechaniczn膮 strategi膮 transakcyjn膮. Jej przewaga wynika jednak z ogromnego do艣wiadczenia i rozumienia mechaniki rynkowej. Obrazowo mo偶na powiedzie膰, 偶e strategi臋 ma w g艂owie, co potwierdzi艂 jej dobry znajomy 鈥 Perry Kaufman 鈥 m贸wi膮c, 偶e Linda dzia艂a na rynku niczym algorytm. × , ale zak艂adaj膮c, 偶e artyku艂 jest skierowany do pocz膮tkuj膮cego tradera, powinni艣my wystrzega膰 si臋 improwizacji na rynku. 馃槈

Nie znaczy to, 偶e mamy zamkn膮膰 oczy i zapomnie膰 o dzia艂aj膮cej na rynku strategii. Awaryjny plan jej wycofania z rynku musimy mie膰 opracowany jeszcze przed jej wdro偶eniem. B臋dzie o tym jeszcze mowa.

Proces budowy strategii

Poni偶ej zamie艣ci艂em raz jeszcze prezentacj臋, kt贸ra zawiera m.in. etapy budowy strategii om贸wione w cz臋艣ci 1 i cz臋艣ci 2 niniejszego cyklu. Je艣li nie znasz tamtego materia艂u, polecam chocia偶by szybkie zapoznanie si臋 z poni偶sz膮 prezentacj膮, co powinno u艂atwi膰 zrozumienie czytanego w艂a艣nie artyku艂u.

Aby przechodzi膰 pomi臋dzy slajdami, u偶yj strza艂ki w dolnym prawym rogu lub przesu艅 palcem, je艣li czytasz artyku艂 na ekranie dotykowym.

Cel

Wspomina艂em w poprzednich cz臋艣ciach tego cyklu, 偶e musimy postawi膰 przed sob膮 konkretny cel do osi膮gni臋cia. Kto艣 mo偶e pomy艣le膰, 偶e to bez sensu — przecie偶 chcemy zarobi膰 na rynku — potrzebujemy do tego strategi臋. Tak, ale to nie wszystko. Musimy oceni膰 na ile ten cel jest realny. Ja postawi艂em sobie tu, dla cel贸w edukacyjnych, nast臋puj膮cy cel:

  • Ma by膰 to strategia dzia艂aj膮ca w oparciu o indeks gie艂dowy (np. S&P500, NASDAQ, DJIA). Piotr (je艣li czyta to wie, 偶e o nim 馃檪 ), na mojej stronie na Facebook’u sugerowa艂 indeks NASDAQ, a konkretnie kontrakt terminowy (symbol NQ). Do us艂ug Piotrze. 馃檪
  • Strategia mo偶e operowa膰 zar贸wno pozycjami d艂ugimi (gra na wzrosty) jak i kr贸tkimi (gra na spadki)
  • U艣redniona oczekiwana stopa zwrotu to oko艂o 3000 – 5000 USD rocznie za kontrakt (depozyt na jeden kontrakt wynosi obecnie ponad 8000 USD, ale gdy kontrakt mia艂 w przesz艂o艣ci warto艣膰 poni偶ej 1000 punkt贸w, to te wymogi by艂y odpowiednio kilka razy mniejsze, jak i potencjalne stopy zwrotu)
  • Zale偶y mi, aby strategia by艂a ma艂o skorelowana ze strategiami wybiciowymi typu trend following
  • Dajemy sobie maksymalnie 20-30 godzin na zbudowanie takiej strategii. Je艣li si臋 nie uda, szukamy innego pomys艂u.

Przyznam, 偶e osobi艣cie dla mnie indeks NASDAQ jest trudny w uj臋ciu kr贸tkoterminowym, je艣li chodzi o budowane strategie. 艁atwiej przychodzi mi znale藕膰 co艣 sensownie dzia艂aj膮cego na innych indeksach. No wi臋c mamy jakie艣 wyzwanie. 馃槈

Pomys艂

Pomys艂 na strategi臋 przyszed艂 niejako sam. 馃檪 W listopadzie 2018 roku przygotowywa艂em si臋 do podcastu z Larry Connorsem. Zaintrygowa艂a mnie jedna ze strategii, kt贸r膮 przedstawi艂 w swojej najnowszej ksi膮偶ce. Co prawda jego pomys艂 odnosi艂 si臋 oryginalnie do ETF na S&P500 (konkretnie SPY), ale postanowi艂em przetestowa膰 to dla rynku terminowego na indeks NASDAQ-100 (symbol NQ).

Aby zawrze膰 transakcj臋, spe艂nione musz膮 zosta膰 nast臋puj膮ce warunki:

  • Cena jest powy偶ej 艣redniej krocz膮cej liczonej za okres 200 dni
  • Wska藕nik RSI za okres czterech dni schodzi poni偶ej 30 鈥 kupujemy wtedy na zamkni臋ciu rynku pierwsz膮 pozycj臋
  • Drug膮 pozycj臋 kupujemy, gdy RSI spada poni偶ej 25
  • Wychodzimy z rynku, gdy RSI wraca na poziom powy偶ej 55

Kluczem do zrozumienia tej strategii jest zrozumienie istoty wska藕nika RSI 3 3. Wska藕nik RSI (ang. Relative Strength Index) to popularna metoda mierzenia tzw. wykupienia/wyprzedania rynku. Wska藕nik liczony jest w ten spos贸b, 偶e dla badanego okresu (np. 5 dni), dzielimy 艣redni zysk przez 艣redni膮 strat臋. Zyski i straty dla poszczeg贸lnych dni liczone s膮 zwykle pomi臋dzy cenami zamkni臋cia (np. je艣li wczoraj cena zamkni臋cia wynosi艂a 100, a dzi艣 101, to mamy 1% zysk, 0% straty). W przypadku RSI wynik jest znormalizowany (oraz wyg艂adzony), tak by wyniki zawiera艂y si臋 w przedziale 0-100. Wskazanie RSI na poziomie 0 oznacza, 偶e mieli艣my spadek w ca艂ym okresie (np. wszystkie sesje by艂y spadkowe -- wyprzedanie rynku), lub rynek sta艂 w miejscu. Analogicznie, gdy mamy wskazanie 100, znaczy to, 偶e ca艂y okres by艂 wzrostowy (wykupienie rynku). × oraz d艂ugoterminowej, 200-dniowej 艣redniej krocz膮cej. To nie jest Voodoo, tylko prosta forma wyra偶enia stanu rynku w formie skwantyfikowanej. Z Voodoo mamy kontakt wtedy, gdy bezmy艣lnie stosujemy miliard przer贸偶nych wska藕nik贸w analizy technicznej bez jakiegokolwiek zrozumienia. Tylko dlatego, bo kto艣 udost臋pni艂 je nam w naszym oprogramowaniu. „Dumnie” wygl膮daj膮 prezentowane wykresy z naniesionymi „m膮drze” brzmi膮cymi wska藕nikami, na kt贸rych ci臋偶ko dostrzec to co najwa偶niejsze 鈥 cen臋. W tym co robimy musi by膰 zawarta prosta matematyka i logika. Wizualizacja jest tylko wypadkow膮 tego偶.

Przyk艂adowo mogliby艣my usun膮膰 z naszej strategii powszechnie znany wska藕nik RSI i wyrazi膰 t臋 koncepcj臋 po swojemu. By艂oby nieco wi臋cej kodowania. Wynik dzia艂ania strategii nie powinien jednak finalnie specjalnie odbiega膰 od oryginalnego konceptu.

Mamy tu bardzo fajn膮 strategi臋, poniewa偶 wprost odnosi si臋 ona do wykorzystania stadnych zachowa艅 na rynku. Nie jest to jaka艣 abstrakcyjna formu艂ka, do kt贸rej na si艂臋 trzeba dopisa膰 historyjk臋 wyja艣niaj膮c膮 jej dzia艂anie.

Mamy oto rynek byka (ceny powy偶ej d艂ugoterminowej 艣redniej krocz膮cej), na kt贸rym w pewnym momencie nast臋puje zwrot na po艂udnie. Czy to w oczekiwaniu na wa偶ny komunikat ekonomiczny, a mo偶e ze wzgl臋du na jakie艣 wydarzenie, mamy sytuacj臋 gdzie zanika popyt. Wska藕nik RSI spada poni偶ej 30. Wtedy kupowana jest pierwsza jednostka naszej pozycji. Je艣li rynek sch艂odzi si臋 jeszcze bardziej (RSI poni偶ej 25-20), kupujemy drug膮 jednostk臋. Zamkni臋cie pozycji nast臋puje po ociepleniu rynku, gdy RSI wraca do pu艂apu powy偶ej 55.

Strategi臋 mo偶na zakwalifikowa膰 do grupy tzw. strategii anty-trendowych (ang. counter trend). Prezentowana strategia zawiera co prawda transakcje w zgodzie z d艂ugoterminowym trendem wzrostowym, ale wchodzi w rynek pod pr膮d, gdy ten si臋 cofa tworz膮c kr贸tkoterminowy trend spadkowy. Preferuj臋 ten rodzaj antytrendowego podej艣cia, wzgl臋dem 艂apania no偶a wbrew d艂ugoterminowemu trendowi. Strategie takie s膮 z natury kr贸tkoterminowe, maj膮 wysok膮 trafno艣膰, ale transakcje zyskowne s膮 zwykle znacznie mniejsze, ni偶 transakcje stratne. Mo偶na na nie spogl膮da膰 jak na podej艣cie hit & run.

Klasa strategii anty-trendowych mo偶e by膰 ciekawym uzupe艂nieniem dla strategii pod膮偶aj膮cych za trendem. Je艣li tak zestawione strategie maj膮 negatywn膮 korelacj臋, a przy tym s膮 zyskowne, to mamy bardzo po偶膮dane w艂a艣ciwo艣ci dla konstrukcji ka偶dego portfela. Przyk艂adowo, zmor膮 strategii trendowych jest nag艂e, chwilowe cofni臋cie rynku powoduj膮ce zamkni臋cie pozycji (ang. whipsaw). Wej艣cie do gry w takim momencie strategii jak ta prezentowana, pozwala zaj膮膰 pozycj臋 po ni偶szej cenie, zanim strategia trendowa ponownie wejdzie w rynek.

Warto zwr贸ci膰 uwag臋 na kilka aspekt贸w:

  • Strategia dzia艂a tylko po d艂ugiej stronie rynku (gra tylko na wzrosty), ale nie walczy z g艂贸wnym (d艂ugoterminowym) trendem — ma to sens w przypadku indeksu, kt贸ry z definicji jest long-biased. Je艣li rynek jest spadkowy, nie kopiemy si臋 z… nied藕wiedziem. 馃槈
  • Strategia kr贸tkoterminowo jest kontraria艅ska (kupowanie na spadaj膮cym rynku), ale jak wspomnia艂em powy偶ej, d艂ugoterminowo pozycja jest zajmowana w zgodzie z panuj膮cym trendem. Kupowanie na rynku, gdzie kr贸tkoterminowo panuje pop艂och, dzia艂anie wbrew wi臋kszo艣ci, nie jest komfortowe. Ale w艂a艣nie w tym zachowaniu ma tkwi膰 przewaga rynkowa.
  • Pozycja budowana jest w dw贸ch krokach — mo偶e zdarzy膰 si臋, 偶e druga jednostka nie zostanie otwarta, gdy偶 wcze艣niej spe艂niony zostanie warunek zamkni臋cia pozycji (rynek wr贸ci na poziom RSI powy偶ej 55)
  • Nie mamy wbudowanego sztywnego zlecenia obronnego (ang. stop loss), w kt贸rym poziom znany jest a priori (np. wyra偶ony procentowo czy kwotowo). Wyj艣cie z rynku nast臋puje dopiero, gdy wskazanie RSI przekroczy pu艂ap 55.
  • Powy偶sze w praktyce oznacza, 偶e po kupnie pierwszej jednostki rynek mo偶e zaliczy膰 jeszcze spory spadek, zanim RSI wr贸ci w regiony powy偶ej 55 (czyli, znaj膮c metod臋 liczenia RSI, wtedy, gdy rynek zacznie odreagowywa膰 spadek i pojawi膮 si臋 sesje wzrostowe).
  • W oryginale ksi膮偶kowym transakcje zawierane s膮 po cenach zamkni臋cia na danych dziennych, co wymaga ode mnie ma艂ego komentarza, o czym poni偶ej

Ot贸偶 otwieranie/zamykanie pozycji po cenie zamkni臋cia (sesji) wymaga艂oby dodatkowych zabieg贸w, aby wyniki w testach nie by艂y zafa艂szowane. 4 4. Problem mo偶na rozwi膮za膰 sk艂adaj膮 zlecenie np. na minut臋 przed zamkni臋ciem rynku. × Z tego powodu postanowi艂em zawiera膰 transakcje po cenie otwarcia.

Sprawa kolejna, to kwestia braku twardego stop loss’a. Wszem i wobec si臋 m贸wi o zleceniach obronnych, ale niestety bardziej w formie wy艣wiechtanego sloganu, takiej prawdy objawionej, bez weryfikacji. Co do zasady: strategia musi mie膰 w sobie metod臋 zamkni臋cia pozycji, wyj艣cia z rynku. Co nie znaczy, 偶e postawienie sztywnego zlecenia obronnego oddalonego np. 1% od rynku jest dobrym rozwi膮zaniem. Zwykle nie jest. Oparcie go na zmienno艣ci rynku (np. wykorzystuj膮c ATR) ma wi臋kszy sens, ale te偶 stosowa膰 je nale偶y z ostro偶no艣ci膮. Im w臋偶szy stop loss, tym b臋dzie nam wyrz膮dza艂 zwykle wi臋cej krzywdy na rachunku ni藕li go chroni艂 (lubi臋 te staropolskie s艂owa 馃榾 ). Pomijam sytuacje, gdzie rynek otwiera si臋 z ogromn膮 luk膮, a klasyczne zlecenia obronne staj膮 si臋 bezwarto艣ciowe. Ale to temat na inn膮 histori臋.

呕eby nie przed艂u偶a膰: polecam kr贸tki rozdzia艂 ksi膮偶ki Larry’ego Connorsa, Short Term Trading Strategies That Work, o wymownym tytule: Stops Hurt. Tak jest i w tym przypadku: stosowanie sztywnych stop贸w, nawet odleg艂ych, nie poprawi艂y strategii, ale wr臋cz pogarsza艂y jej wyniki i to nie tylko w wymiarze zysku, ale i maksymalnych obsuni臋膰 kapita艂u — w najlepszym razie ich nie zmniejszy艂y. Boj臋 si臋 wywo艂ania niepotrzebnej burzy tymi s艂owami… Ograniczmy wi臋c m贸j wyw贸d tylko do tej strategii. Sam korzystam ze sztywnych zlece艅 obronnych w wielu innych strategiach.

Dla instrumentu SPY wyniki prezentowane w oryginale przez Connorsa by艂y bardzo zach臋caj膮ce — trafno艣膰 na poziomie nawet powy偶ej 90%! To cecha antytrendowego podej艣cia. Oczekiwa艂em, 偶e r贸wnie偶 na kontrakcie NQ powinno uda膰 si臋 co艣 ugra膰. Zak艂ada艂em, 偶e wyniki mog膮 si臋 nieco pogorszy膰, ze wzgl臋du na fakt wi臋kszej obecno艣ci profesjonalnych graczy na rynku terminowym.

Poniewa偶, jak ju偶 wspomniano powy偶ej, pozycja budowana jest w dw贸ch krokach (tzw. skalowanie pozycji), nale偶y zwr贸ci膰 uwag臋 na kilka aspekt贸w 5 5. M贸wimy o strategiach kr贸tkoterminowych, gdy偶 wr臋cz przeciwnie ma si臋 to przy klasycznych strategiach typu trend following. Ale nawet przy podej艣ciu kr贸tkoterminowym s膮 traderzy, jak np. Andrea Unger, kt贸rzy w testach traktuj膮 zarz膮dzanie pozycj膮 jako element przewagi strategii i wprost j膮 z ni膮 integruj膮 od samego pocz膮tku (czyli jak u nas w tym artykule). × :

  • Testowana strategia z wbudowanym skalowaniem pozycji mo偶e by膰 rozdzielona na dwie oddzielne strategie, kt贸re de facto maj膮 t臋 sam膮 logik臋, ale dzia艂aj膮 na odmiennych parametrach (jedna kupuje np. przy RSI = 30, a druga przy RSI = 25)
  • Testowanie strategii w oryginale (czyli ze skalowaniem pozycji) spowoduje, 偶e w te艣cie otrzymamy wiele transakcji skorelowanych — niejako wynik dzia艂ania strategii na dw贸ch zestawach parametr贸w (przy zachowaniu identycznej logiki)
  • Skalowanie pozycji to element zarz膮dzania pozycj膮 — je艣li szukamy czystej przewagi, lepiej robi膰 to zwykle przy wykorzystaniu jednego kontraktu (bez skalowania czy jakiejkolwiek formy zarz膮dzania kapita艂em)

Implementacja i testy na ma艂ym zbiorze danych

Osobi艣cie do handlu automatycznego korzystam obecnie z platformy (i brokera zarazem) o nazwie TradeStation 6 6. Nie znaczy to, 偶e musisz automatyzowa膰 swoje strategie, tym bardziej, je艣li funkcjonuj膮 na interwale dzeinnym, jak w opisywanym przypadku. Jest to cz臋sto tylko dodatek, a nie cel sam w sobie, je艣li chodzi o trading. Naszym celem numer jeden jest znalezienie przewagi rynkowej. Nie uprawiamy tu HFT. × . W Polsce zdominowanej brokerami z instrumentami OTC jest to raczej egzotyk, ale dla naszych edukacyjnych potrzeb do tego artyku艂u, jest to bez znaczenia. Wa偶ne jest zrozumienie koncepcji procesu budowania strategii, a wykorzystywane narz臋dzie jest… tylko narz臋dziem. Dla porz膮dku jednak informuj臋, 偶e omawian膮 strategi臋 implementowa膰 b臋d臋 w j臋zyku EasyLanguage, kt贸ry jest wbudowany w TradeStation. Korzystam te偶 z arkusza kalkulacyjnego Excel (wraz z makrami), Market System Analyzer (MSA) oraz StratOpt. Dodatkowo testowa艂em ten sam kod w AmiBrokerze (j臋zyk AFL).

Dob贸r danych testowych

Nale偶y zwr贸ci膰 uwag臋 na dane, kt贸re s艂u偶膮 do testowania. Zasada pierwsza jest taka, by testowa膰 strategi臋 na danych, na kt贸rych strategia b臋dzie docelowo mia艂a dzia艂a膰. Przyk艂adowo wi臋c, nie mo偶emy tu wykorzysta膰 danych indeksu NASDAQ-100, a nast臋pnie handlowa膰 kontraktami terminowymi na ten indeks. Z pewno艣ci膮 te dwa zestawy danych s膮 mocno skorelowane. R贸偶nice jednak b臋d膮 wyst臋powa膰, co zw艂aszcza w przypadku kr贸tkoterminowej strategii mo偶e by膰 kluczowe podczas jej budowy, optymalizacji i testowania.

Sprawa kolejna to jako艣膰 danych. W przypadku kontrakt贸w terminowych powinny to by膰 tak zwane dane korygowane wstecznie. Innymi s艂owy poszczeg贸lne serie przy rolowaniu kontrakt贸w powinny by膰 skorygowane wstecz, aby usun膮膰 np. nieistniej膮ce luki cenowe, kt贸re w rzeczywisto艣ci nie wyst臋puj膮, a kt贸re zaburzy膰 mog膮 testy 7 7. Kontrakty terminowe, w odr贸偶nieniu od np. akcji, maj膮 konkretn膮 dat臋 dostawy, po kt贸rej notowania wygasaj膮. Wynika to wprost z charakteru tego instrumentu, kt贸re historycznie powsta艂 w艂a艣nie na potrzeby zabezpieczenia ryzyka. Na przyk艂ad rolnik mo偶e, chc膮c zabezpieczy膰 ryzyko sprzeda偶y kukurydzy w przysz艂o艣ci, sprzeda膰 dzi艣 kontrakt za konkretn膮 cen臋. Z punktu widzenia tradera rodzi to jednak potrzeb臋 po艂膮czenia ze sob膮 serii kontrakt贸w, tak by tworzy艂y one nieprzerwan膮 histori臋. Nie wnikaj膮c w szczeg贸艂y, bo mo偶na by o tym napisa膰 odr臋bny artyku艂, pomi臋dzy seriami kontrakt贸w wyst臋puj膮 luki (dla dociekliwych polecam sprawdzi膰 zjawiska takie jak contango i backwardation). Szczeg贸lnie du偶e luki mog膮 wyst臋powa膰 przy niekt贸rych kontraktach towarowych, np. na gaz. Wynika to m.in. z wysokich koszt贸w jego przechowywania 鈥 kupno dzi艣 gazu, z dostaw膮 za np. p贸艂 roku musi w cenie to odzwierciedla膰. Z tego powodu dane musz膮 by膰 korygowane wstecznie, tak by zniwelowa膰 luki cenowe, kt贸re realnie nie wyst臋puj膮, poniewa偶 s膮 pomi臋dzy r贸偶nymi seriami kontrakt贸w. Ma to znaczenie dla tradera, kt贸rego pozycja otwarta jest na przestrzeni wi臋cej ni偶 jednej serii, gdzie wyst臋puje potrzeba tzw. rolowania pozycji 鈥 przeniesienia na kolejn膮 seri臋. W skrajnych sytuacjach niekorygowane dane mog膮 totalnie zaburzy膰 na wykresach d艂ugoterminowe, wieloletnie trendy. × . Tu korzystam z danych oferowanych przez TradeStation, kt贸re s膮 korygowane — wszystko jest wi臋c OK. W przypadku rynk贸w terminowych zwykle mamy jasn膮 informacj臋 z jakim typem danych mamy do czynienia. Uwa偶a膰 nale偶y natomiast szczeg贸lnie na dane udost臋pniane dla instrument贸w CFD. Mo偶e si臋 okaza膰, 偶e nasze s膮偶niste testy mo偶na sobie wsadzi膰 w… buty, je艣li nikt ich nie korygowa艂. 馃槈 OK, w przypadku indeksu, a偶 tak ogromnych r贸偶nic raczej nie b臋dzie, ale i tak by艂bym ostro偶ny. Rynek sam w sobie jest wystarczaj膮co nieprzewidywalny — starajmy si臋 wi臋c na etapie budowy i testowania strategii zrobi膰 wszystko jak nale偶y, a nad czym mamy kontrol臋.

Sprawa zwi膮zana z danymi jest jeszcze bardziej skomplikowana dla rynku akcji. Tu tylko zamarkuj臋 temat. Kwestie split贸w i dywidend to jedno. Bardziej uwa偶aj na tzw. b艂膮d prze偶ywalno艣ci (ang. survivorship bias), je艣li b臋dziesz robi艂 np. ranking sp贸艂ek do portfela.

Cz臋sto pojawia si臋 pytanie: ile danych historyczny nale偶y mie膰, by testy by艂y wiarygodne. Nie ma jednej prostej odpowiedzi. Generalnie nale偶y kierowa膰 si臋 zdrowym rozs膮dkiem. Przyk艂adowo na potrzeby testu niniejszej strategii zdecydowa艂em, aby si臋gn膮膰 do roku 2000. Daje nam oko艂o 18 lat danych (pierwszy rok przepada na wyliczenie 200-dniowej 艣redniej krocz膮cej). Poniewa偶 projektowana strategia jest z natury kr贸tkoterminowa, taki zestaw danych powinien spokojnie wystarczy膰, aby w te艣cie by艂o wystarczaj膮co du偶o transakcji.

Warto upewni膰 si臋 te偶, 偶e dane historyczne reprezentuj膮 r贸偶ne fazy rynku w kontek艣cie zmienno艣ci i panuj膮cych trend贸w. Chodzi o to, 偶eby przypadkiem zbytnio nie dopasowa膰 naszej strategii do historycznych ruch贸w cen, kt贸re ju偶 mog膮 si臋 w podobnej postaci nie pojawi膰. Testy maj膮 doprowadzi膰 nas do stabilnej strategii, a nie optymalnej pod k膮tem generowanych (w symulacji) zysk贸w.

Testy wst臋pne

Na tym etapie mamy ju偶 zdefiniowany cel oraz pomys艂 jak go osi膮gn膮膰. Tu uwaga: niestety w praktyce na tym kroku niepowodzeniem ko艅czy si臋 wi臋kszo艣膰 naszych pomys艂贸w. Je艣li „wypali” nam jeden pomys艂 na dziesi臋膰 (tj. przejdziemy do kolejnego kroku procesu budowy), to jest to wynik 艣wietny — mo偶e by膰 znacznie, znacznie gorzej, zw艂aszcza na pocz膮tku, gdy brak nam do艣wiadczenia. Niestety to troch臋 jak szukanie ig艂y w stogu siana.

Nie wolno si臋 jednak zniech臋ca膰, je艣li powa偶nie traktujemy to, co robimy. Nie wolno te偶 ulega膰 pokusie chodzenia na skr贸ty — budowana strategia musi przej艣膰 przez g臋ste sito stawianych przed ni膮 wymaga艅, zanim zechcemy postawi膰 na ni膮 realny kapita艂.

Trudno艣膰 le偶y te偶 w tym, 偶e niestety do艣膰 艂atwo oszukiwa膰 przy budowie strategii. W ko艅cu przecie偶 nikt tego nie widzi, prawda? W prosty spos贸b mo偶emy przymkn膮膰 oko na mankamenty budowanej strategii, tudzie偶 przypudrowa膰 tu i 贸wdzie jej s艂abe strony. Gorzej: mo偶emy upi臋kszy膰 strategi臋 nie艣wiadomie, maj膮c w pami臋ci dane historyczne i stosownie to odzwierciedlaj膮c w logice strategii. Testy historyczne mog膮 wygl膮da膰 obiecuj膮co i krzepi膮co. S臋k w tym, 偶e rynek to surowy recenzent, kt贸ry bezlito艣nie punktuje nasze s艂abe strony. Co gorsza — w zamian za nasz po艣wi臋cony czas zamiast dosta膰 nagrod臋, otrzymamy baty, tak finansowe jak i psychiczne.

Uwagi i za艂o偶enia do test贸w wst臋pnych: 8 8. Bardzo wa偶ne, aby nie pr贸bowa膰 do b贸lu r贸偶nych okres贸w, a偶 wyniki b臋d膮 satysfakcjonuj膮ce. Okres 2 lat powinien wst臋pnie pokaza膰, czy zaimplementowany pomys艂 ma przewag臋 na rynku. ×

  • Wykorzystam dane za okres 2013-2014 (2 lata) z po艣r贸d ponad 19 lat (okres za lata 2000 do pocz膮tku 2019) na kt贸rych b臋dziemy robi膰 testy docelowe — jest to wyb贸r losowy, nie testowa艂em wcze艣niej tego pomys艂u na tych danych i tym okresie
  • Poniewa偶 strategia wykorzystuje 200-dniow膮 艣redni膮 krocz膮c膮, niemal ca艂y pierwszy rok „tracimy” na jej wyliczenie.
  • Korzystam z danych kontraktu terminowego E-mini NASDAQ-100 (NQ), kwotowania dzienne, sesja CME Globex 17:00-16:00
  • Koszty transakcyjne (kupno/sprzeda偶 jednego kontraktu; dla ca艂ej transakcji otwarcia i zamkni臋cia nale偶y pomno偶y膰 razy dwa):
    • Prowizja: 2.5 USD
    • Po艣lizg cenowy: 15 USD
  • Kapita艂 startowy: 100 000 USD
  • Warto艣膰 punktu: 20 USD (co przy obecnej wycenie na poziomie ok. 6500 punkt贸w daje nam warto艣膰 jednego kontraktu oko艂o 130 000 USD)
  • Typ zlece艅: market order (u nas najlepsza cena na otwarciu)
  • Wielko艣膰 pozycji: maksymalnie dwa kontrakty (je艣li zajdzie warunek skalowania pozycji)

Kwestia uwzgl臋dnienia prowizji i po艣lizg贸w cenowych jest kluczowa, szczeg贸lnie w strategiach kr贸tkoterminowych. Mo偶e bowiem si臋 okaza膰, 偶e to w艂a艣nie te koszty „zjedz膮” nasz papierowy zysk.

Zwracam te偶 uwag臋 na wielko艣膰 kapita艂u startowego. Mo偶esz si臋 z艂apa膰 za g艂ow臋 — 100 tysi臋cy dolar贸w! Pogi臋艂o go艣cia, centralnie!

Tak, to wielka kwota dla wi臋kszo艣ci z nas, tym bardziej, 偶e tu tylko dla jednej strategii i to pomimo, 偶e warto艣膰 kontraktu wynosi oko艂o 130 000 tysi臋cy dolar贸w. Depozyt zabezpieczaj膮cy, czyli minimalna kwota jaka jest wymagana na koncie, by m贸c kupi膰/sprzeda膰 jeden kontrakt, to na chwil臋 podczas pisania tego artyku艂u wynosi 8 360 USD 9 9. Dla pozycji otwieranych i zamykanych tego samego dnia wielko艣膰 depozytu mo偶e by膰 znacznie mniejsza. U nas jednak ten warunek nie jest spe艂niony. × . Nawet je艣li uwzgl臋dnimy dwukrotno艣膰 tej kwoty (16 720 USD), bo strategia mo偶e mie膰 otwart膮 pozycj臋 z dw贸ch kontrakt贸w r贸wnocze艣nie, to 100 000 USD wydaje si臋 by膰 przesad膮, bo ponad 80 000 USD by艂oby bezrobotne.

Wszysto jednak jest OK — ta kwota jest ustalona tylko do potrzeb test贸w. Nie licz臋 rocznej stopy zwrotu, bo ta b臋dzie r贸偶na dla r贸偶nej kwoty startowej. Mamy tu instrument lewarowany i to od nas zale偶y poziom ryzyka, jaki chcemy ustawi膰 dla tej strategii. Mniej kapita艂u startowego w symulacji, np. 20 000 USD, to spore ryzyko, 偶e strategia na dzie艅 dobry si臋 wysypie nawet je艣li teoretycznie transakcja mia艂aby zako艅czy膰 si臋 zyskiem. Chwilowy zjazd na linii kapita艂u, m贸g艂by spowodowa膰, 偶e brakowa艂oby na pokrycie depozytu zabezpieczaj膮cego i do margin call’a w efekcie.

Dlatego to co nas b臋dzie interesowa艂o w testach, to kwota zysku jak膮 strategia generuje. Oczywi艣cie spogl膮da膰 b臋dziemy r贸wnie偶 na druga stron臋 r贸wnania — na ryzyko. Czyli ile w mi臋dzyczasie strategia traci艂a, bo to nie jest tak, 偶e zarabiamy liniowo jak na lokacie w banku. Natomiast od naszego apetytu na ryzyko, plus od konstrukcji naszego portfela, w kt贸rym mo偶emy (i powinni艣my) mie膰 te偶 inne strategie, b臋dzie zale偶a艂o to ile powinni艣my mie膰 got贸wki w portfelu. Do tematu jeszcze wr贸cimy przy okazji tak zwanej symulacji Monte Carlo. Policzymy na przyk艂ad co艣 w stylu: ile potrzebuj臋 kapita艂u, by w przeci膮gu roku prawdopodobie艅stwo bankructwa tej strategii nie by艂o wi臋ksze ni偶 10%? To mo偶e si臋 wydawa膰 sporym ryzykiem, ale (1) to tylko przyk艂ad, (2) je艣li strategia jest tylko jedn膮 z np. kilkudziesi臋ciu w portfelu, mo偶e to by膰 poziom akceptowalny.

Przejd藕my do konkret贸w. Tak wygl膮da pseudokod naszej strategii 10 10. SMA (ang. Simple Moving Average) -- 艣rednia cen (np. zamkni臋cia) za wybrany okres. Np. SMA(200, Close) oznacza 艣redni膮 cen zamkni臋cia za okres 200-dni. × :

je艣li na rynku nie ma otwartych pozycji to
  je艣li rynek jest powy偶ej SMA(200) to
    je艣li RSI spadnie poni偶ej 30 to
      kup 1 kontrakt na nast臋pnym otwarciu

je艣li na rynku otwarta jest 1 pozycja to
  je艣li rynek jest powy偶ej SMA(200) to
    je艣li RSI spadnie poni偶ej 25 to
      kup 1 kontrakt na nast臋pnym otwarciu

je艣li na rynku s膮 otwarte pozycje to
  je艣li RSI wzro艣nie powy偶ej 55 to
    zamknij wszystkie pozycje na nast臋pnym otwarciu

Przyk艂adowe transakcje pokazane s膮 na poni偶szym wykresie. Wida膰 tam trzy zagrania. W pierwszym i drugim nie zosta艂 spe艂niony warunek otwarcia drugiej jednostki: kupujemy i sprzedajemy wi臋c tylko jeden kontrakt. W trzecim przyk艂adzie po kupnie pierwszego kontraktu rynek spe艂ni艂 warunek kupna drugiego kontraktu (tzw. skalowanie pozycji) — zanurkowa艂 jeszcze ni偶ej od ostatniej transakcji.

Wida膰 te偶, 偶e kupno i sprzeda偶 odbywa si臋 po cenie otwarcia.

B艂臋kitna linia u do艂u, przebiegaj膮ca na ca艂ej szeroko艣ci wykresu to d艂ugoterminowa 艣rednia krocz膮ca liczona dla 200-dni. Gdyby wykres 艣wiecowy znajdowa艂 si臋 poni偶ej tej linii, strategia nie zawiera艂aby 偶adnych transakcji.

Teraz interesuje nas na ile zakodowana strategia spe艂nia nasze oczekiwania, by ewentualnie przej艣膰 do bardziej zaawansowanych test贸w. Aby si臋 o tym przekona膰 sprawdzimy jak strategia dzia艂a dla r贸偶nych parametr贸w. W naszej strategii wybra艂em do optymalizacji 3 parametry:

  • Warto艣膰 RSI do kupna pierwszej jednostki (zakres 26-35, krok co 1)
  • Warto艣膰 RSI do kupna drugiej jednostki (zakres 15-25, krok co 1)
  • Warto艣膰 RSI wyj艣cia z rynku (zakres 50-65, krok co 1)

Je艣li zastanawiasz si臋 dlaczego takie, a nie inne zakresy optymalizacji parametru dla RSI dobra艂em, postaraj si臋 zrozumie膰 istot臋 tego prostego wska藕nika.

Larry Connors w swojej ksi膮偶ce poda艂 odpowiednio parametry RSI do otwarcia pierwszej i drugiej pozycji odpowiednio 30 i 25, oraz do zamkni臋cia pozycji 55. Chc臋 jednak sprawdzi膰, na ile strategia stabilna jest w s膮siedztwie tych parametr贸w. Dzi臋ki komputerowi szybko sprawdzimy wyniki wszystkich kombinacji (dok艂adnie 1760 kombinacji przy za艂o偶eniach powy偶ej). Parametr okresu z kt贸rego jest liczona warto艣膰 RSI, zawsze jest r贸wny 4 i nie poddaj臋 go optymalizacji. Dlaczego?

Ot贸偶 chodzi nam o szybkie kontry na rynku, liczone dla okresu 2-5 dni. Nie interesuje wi臋c nas warto艣膰 RSI liczona np. dla okresu 15 czy 20 dni. Z drugiej strony — zmiana parametru z 4, na 2, 3, 5 czy 6 nie powinna jej wywr贸ci膰, co te偶 sprawdzi艂em. Natomiast dla mnie warto艣膰 4 ma sens, bo interesuje mnie wy艂apanie kilkudniowych cofni臋膰 na rynku. Nie b臋d臋 si臋 bawi艂 w dzielenie w艂osa na czworo. 馃槈

Ile strategia mo偶e mie膰 maksymalnie parametr贸w (nie sta艂ych, tylko parametr贸w podlegaj膮cych optymalizacji)? Co do zasady — im mniej, tym lepiej. Im wi臋cej strategia ma parametr贸w, tym 艂atwiej nam uzyska膰 dobre wyniki… w testach. Na danych historycznych. Jednocze艣nie spada prawdopodobie艅stwo dzia艂ania strategii na realnym rynku. A nie o to przecie偶 nam chodzi. Generalnie powinni艣my nauczy膰 si臋 akceptowa膰 „nieoptymalne” rozwi膮zania na rzecz takich, kt贸re chocia偶 s膮 u艂omne, to maj膮 szans臋 zadzia艂ania w przysz艂o艣ci.

Ja przyk艂adowo staram si臋 mie膰 w testach minimum 50 transakcji na parametr. Przyk艂adowo, je艣li wi臋c u nas strategia ma 3 parametry podlegaj膮ce optymalizacji, to dla ca艂ego okresu (lata 2000-2018) powinni艣my mie膰 przynajmniej 150 transakcji.

Nie jest to prawda objawiona, tylko empiria.

Pierwsze wyniki

Tak wygl膮da optymalizacja parametr贸w strategii za okres dw贸ch lat — wszystkie kombinacje parametr贸w s膮 zyskowne (poni偶ej posortowane od „najgorszych”).

Jak widzimy najgorsza kombinacja parametr贸w, za okres dw贸ch lat wygenerowa艂a zysk ponad 8 000 USD. Wynik jest bardzo satysfakcjonuj膮cy. Chodzi艂o nam wszak przede wszystkim, by przynajmniej 70-80% kombinacji parametr贸w by艂a cokolwiek zyskowna 11 11. Nale偶y pami臋ta膰, 偶e strategia w r贸偶nych okresach czasu ma prawo generowa膰 r贸偶ne wyniki, bo zmieniaj膮 si臋 warunki rynkowe i warto艣膰 kontraktu. Rozpi臋to艣膰 warto艣ci jednego kontraktu NQ na przestrzeni ostatnich 19 lat waha艂a si臋 pomi臋dzy mniej ni偶 20 000 USD, a niemal 160 000 USD! × . Tymczasem u nas wszystkie kombinacje parametr贸w zarobi艂y pieni膮dze na rynku. Super! To bardzo dobry prognostyk na dalsz膮 cz臋艣膰 naszych test贸w. Pami臋tajmy jednak, 偶e wynik by艂 wygenerowany dla okresu 2 lat — zawsze jest mo偶liwo艣膰, 偶e trafili艣my na najlepszy okres dla danej strategii. Je艣li tak si臋 zdarzy, wyjdzie to niebawem przy okazji bardziej rozbudowanych test贸w.

Nie interesuje nas w tym momencie ile mogli艣my zarobi膰 na najlepszych parametrach — to i tak wynik optymalizacji, bez jakiejkolwiek gwarancji powt贸rzenia wyniku na rynku. To co wiemy na razie, to 偶e strategia spe艂nia nasze oczekiwania, 偶e logika jest poprawnie zaimplementowana i transakcje zawierane s膮 zgodnie z za艂o偶eniami. Mo偶emy przej艣膰 do bardziej rozbudowanych test贸w.

Co jednak, gdyby wyniki by艂y s艂abe na tym etapie?

PAMI臉TAJ Lepiej odrzuci膰 dobry pomys艂 na tym etapie, ni偶 straci膰 kapita艂 na z艂ym pomy艣le! Dane historyczne traktujmy z ostro偶no艣ci膮.

C贸偶, w rzeczywisto艣ci niestety tak najcz臋艣ciej w艂a艣nie si臋 zdarzy. W贸wczas mo偶emy katowa膰 nasz dwuletni okres danych, zmieniaj膮c cokolwiek si臋 nam podoba: rynek, sesj臋, czas (np. zamiast 艣wiec dziennych, 艣wiece 180-minutowe), jak i sam膮 logik臋 strategii. Mo偶e si臋 okaza膰, 偶e zanim otrzymamy obiecuj膮ce wyniki, to z naszego pierwotnego pomys艂u nic nie pozosta艂o. Jest to dopuszczalne jednak na tym etapie, poniewa偶 dzia艂amy na ma艂ym podzbiorze danych historycznych.

To czego nie wolno nam robi膰 na tym etapie, to podgl膮da膰 jak strategia zachowuje si臋 dla innych okres贸w ni偶 nasz OGRANICZONY testowy zbi贸r danych!

To w艂a艣nie tu 艂atwo o oszukiwanie samych siebie. 艁atwo przyk艂adowo sprawdzi膰 jak strategia zachowuje si臋 dla pe艂nego zakresu danych historycznych (u nas to 19 lat). I co ewentualnie mo偶na by艂oby zmieni膰, aby poprawi膰 jej wyniki. Z pewno艣ci膮 przy odpowiedniej determinacji osi膮gniemy 艂adne wyniki 12 12. Twardziele mog膮 zaprz臋gn膮膰 do pracy np. algorytmy genetyczne, 偶eby by艂o jeszcze pro艣ciej i szybciej. 呕ebym nie zosta艂 藕le zrozumiany: idea tej klasy algorytm贸w jest n臋c膮ca. Pami臋tam do dzi艣 jak na studiach informatycznych, ponad 15 lat temu, by艂em zafascynowany koncepcj膮 tchni臋cia pierwastka inteligencji w bezduszne komputery. Niemniej jednak nale偶y stosowa膰 je z ogromn膮 rozwag膮 i zrozumieniem tego, co si臋 robi. Nie mo偶na traktowa膰 algorytm贸w genetycznych jako drogi na skr贸ty. × . Tyle, 偶e szanse na ich powt贸rzenie w przysz艂o艣ci b臋d膮 bardzo nik艂e. Wyniki backtestu b臋d膮 bowiem z du偶ym prawdopodobie艅stwem obarczone grzechem zbytniego dopasowania do danych historycznych (ang. curve fitting).

Rozbudowane testy

Na tym etapie mamy kompletnie zaimplementowan膮 strategi臋. Wiemy te偶, 偶e dla losowo wybranego okresu 2 lat, strategia generuje bardzo obiecuj膮ce wyniki.

Teraz przyszed艂 czas, aby na pozosta艂ych danych historycznych (a wi臋c okres 2000-2018) przeprowadzi膰 rozbudowane testy i przej艣膰 ewentualnie do kolejnego etapu (inkubacji).

To czego nam absolutnie nie wolno robi膰 na tym etapie, to modyfikowa膰 strategii! Klamka zapad艂a. Owszem, dzi臋ki temu uzyskaliby艣my lepsze wyniki, ale nie o to chodzi by backtest wygl膮da艂 艂adnie, ale by nasza strategia mia艂a szanse generowa膰 zyski na realnym rynku. Z mojego do艣wiadczenia to tu powstaje najwi臋cej nieporozumie艅, a w efekcie nierzadko i wylewanych p贸藕niej 偶ali. Na tym etapie nie jest nasz膮 rol膮 poprawianie strategii, aby przesz艂a testy, albo 偶eby dzia艂a艂a jeszcze lepiej!

M贸wi膮c inaczej: je艣li na tym etapie nasza strategia polegnie, to c贸偶 — szkoda — porzucamy ten pomys艂. Nie gmeramy przy strategii celem poprawy wynik贸w, nie wracamy te偶 do poprzedniego etapu, kt贸ry niedawno opisywa艂em, czyli test贸w wst臋pnych. Nie pr贸bujemy te偶 na si艂臋 dobra膰 optymalnych parametr贸w! To bardzo konserwatywne podej艣cie, ale powt贸rz臋 raz jeszcze: lepiej straci膰 okazj臋 zarobienia pieni臋dzy, ni偶 straci膰 pieni膮dze.

Jest wiele innych pomys艂贸w (wi臋cej ni偶 mo偶emy tak na prawd臋 nawet sprawdzi膰 w naszym 偶yciu), innych rynk贸w — nie warto na si艂臋 dopasowa膰 pomys艂u do danych historycznych! Efektem takiego dzia艂ania jest zwykle p贸藕niej, obok straconych pieni臋dzy, frustracja i wieszanie przys艂owiowych ps贸w na algorytmach.

Konserwatywne podej艣cie do testowania nie daje nam i tak gwarancji sukcesu. Zwi臋kszamy tylko jego prawdopodobie艅stwo. Trading jest cholernie ci臋偶kim zaj臋ciem.

Co b臋dziemy robi膰 w ramach rozbudowanych test贸w? Co偶, mo偶liwo艣ci jest wiele, nie ma jednego idealnego. W ramach tego wpisu zrobimy:

  • Test Big Leap
  • Klastrowe testy kroczenia do przodu (ang. cluster walk-forward tests)
  • Symulacj臋 Monte Carlo
  • Sprawdzimy jak strategia zachowuje si臋 na innych rynkach

O testach walk-forward m贸wi艂em nieco ju偶 w poprzedniej cz臋艣ci tego cyklu. Tu jeszcze raz temat delikatnie na艣wietl臋, ale po wi臋cej polecam zerkn膮膰 cho膰by do prezentacji z pocz膮tku tego artyku艂u.

Wcze艣niej jednak zobaczmy szybko jak strategia dzia艂a dla pe艂nego okresu (lata 2000-2018), przy „domy艣lnych” parametrach RSI (30, 25, 55).

Niekt贸rym bije ju偶 mo偶e mocniej serce na widok rosn膮cego historycznie portfela. Bez wnikania jeszcze w szczeg贸艂owe statystyki, widzimy, 偶e linia kapita艂u pi臋knie pnie si臋 w g贸r臋. Zielone obszary linii kapita艂u oznaczaj膮 momenty pobijania kolejnych szczyt贸w warto艣ci portfela. Oko艂o 230 transakcji zarobi艂o nam ponad 140 000 USD (to ju偶 po kosztach transakcyjnych i po艣lizgach cenowych), to jest przeci臋tnie jakie艣 600 dolar贸w na transakcj臋. Fajnie. Ale nie ulegajmy nadmiernemu podnieceniu, a najlepiej nie podniecajmy si臋 wcale. Serio. Nasz膮 rol膮 jest pow艣ci膮gn膮膰 emocje i wej艣膰 w rol臋 surowego policjanta, kt贸ry b臋dzie szuka艂 dziury w ca艂ym. W ko艅cu je艣li mamy zaprz臋gn膮膰 nasz kapita艂 do tej strategii, musimy by膰 pewni, 偶e zrobili艣my wszystko co mogli艣my, aby porz膮dnie j膮 zweryfikowa膰.

Kolejna sprawa: widzimy powy偶ej lini臋 kapita艂u za wiele lat i ko艅cowy wynik. To co na wykresie wygl膮da jak ma艂y z膮bek skierowanyw d贸艂, po kt贸rym warto艣膰 portfela zn贸w pnie si臋 w g贸r臋, mo偶e u艣pi膰 nasz膮 czujno艣膰. Warto przygl膮dn膮膰 si臋 zawieranym transakcjom, jedna po drugiej. B臋d臋 o tym jeszcze p贸藕niej pisa艂, ale zastan贸wmy si臋 jak b臋dziemy si臋 czu膰, gdy na pewien czas, nawet tak zdaje si臋 zarabiaj膮ca strategia robi nam dziur臋 w portfelu na 20 tysi臋cy USD. W praktyce takie okresy mog膮 oznacza膰 nieprzespane noce i mno偶膮ce si臋 w膮tpliwo艣ci, czy aby przypadkiem nasza strategia nie zaprzesta艂a dzia艂a膰. Dlatego musimy odrobi膰 zadanie domowe i umie膰 stwierdzi膰, czy to co widzimy na rzeczywistym rynku nadal nie odbiega od normy, wzgl臋dem tego, co by艂o w symulacji.

Naszym celem na obecnym etapie nie jest dobranie najlepszych parametr贸w i podkr臋cenie zysku. To zwykle najlepiej uzyska膰 przez zarz膮dzanie pozycj膮 (zwi臋kszaj膮c lub zmniejszaj膮c ryzyko). Prymitywna optymalizacja, to zazwyczaj tylko iluzja, kt贸ra nas mo偶e og艂upi膰, stwarzaj膮c fa艂szywe poczucie bezpiecze艅stwa. Mniej dyplomatycznie, excusez moi pour mon fran莽ais, otrzymamy beaucoup de merde. 馃槈 Wsp贸艂cze艣nie dost臋pne oprogramowanie i mocne komputery s膮 niczym brzytwa u ma艂py, je艣li wykorzystamy to w nieumiej臋tny spos贸b.

W realnym 艣wiecie, wynik jak powy偶sza linia kapita艂u mo偶e by膰 dzie艂em przypadku. Nawet najlepszy pomys艂 zaczerpni臋ty z zewn臋trznego 藕r贸d艂a, m贸g艂 wcze艣niej by膰 „katowany” do b贸lu, a偶 wygeneruje 艂adne wyniki. Przecie偶 nikt publicznie nie b臋dzie rozwodzi艂 si臋 nad strategi膮, kt贸ra nie dzia艂a. Nasz膮 rol膮 jest teraz sprawdzi膰, czy strategia si臋 obroni w testach.

Test „Big Leap

Jest to wst臋p do bardziej rozbudowanych, czasoch艂onnych i ci臋偶kich obliczeniowo test贸w. Je艣li strategia „obleje” test Big Leap, mamy marne szanse, aby przesz艂a ona pe艂ne testy walk-forward (o kt贸rych wi臋cej za chwil臋). Lepiej po prostu przej艣膰 do pracy nad now膮 strategi膮.

Big Leap to prosty trik, kt贸rego nauczy艂em si臋 od Roberta Pardo, a zarazem przygrywka do test贸w walk-forward. Twierdzi on, 偶e dzi臋ki wprowadzeniu tego testu, ograniczyli u siebie w zespole bardzo znacz膮co liczb臋 strategii, kt贸re poddaj膮 pe艂nym testom walk-forward. A to oszcz臋dno艣膰 czasu i mocy obliczeniowych komputer贸w. Tym bardziej, je艣li zarz膮dza si臋 wielomilionowym kapita艂em, dziesi膮tkami lub setkami strategii, na wielu rynkach ca艂ego 艣wiata.

Alternatyw膮 do test贸w walk-forward i cookresowej optymalizacji, mo偶e by膰 podej艣cie stosowane np. przez go艣cia mojego podcastu 鈥 Perry Kaufmana 13 13. Robert Pardo w 2008 roku wyda艂 艣wietn膮 ksi膮偶k臋 o testowaniu i optymalizowaniu strategii transakcyjnych pt. The Evaluation and Optimization of Trading Strategies. Om贸wi艂 w niej m.in. podej艣cie test贸w walk-forward, kt贸rego jest tw贸rc膮. A Perry Kaufman napisa艂 do tej ksi膮偶ki wst臋p, chocia偶 sam nie korzysta z tej metodologii. 艢wiat jest ma艂y. × . Jego strategie dzia艂aj膮 r贸wnocze艣nie na kilku zestawach parametr贸w. Inaczej m贸wi膮c jest to dywersyfikacja na poziomie parametr贸w. Warto rozwa偶y膰 takie podej艣cie, gdy stosuje to facet, kt贸ry na rynkach sp臋dzi艂 ponad 50 lat i nadal na nich funkcjonuje.

A na czym polega ten trik? Na bardzo prostym za艂o偶eniu:

  • Historyczne dane testowe dzielone s膮 na dwie r贸wne cz臋艣ci (np. 10 lat dzielimy na dwa 5-letnie okresy)
  • Na pierwszej cz臋艣ci danych (tak zwanych in-sample, IS) optymalizujemy parametry, tzn. wybieramy najlepszy zestaw wed艂ug wybranego kryterium (np. stopa zwrotu).
  • Tak dobrane parametry puszczamy nast臋pnie dla drugiej, nieoptymalizowanej cz臋艣ci danych (s膮 to tak zwane dane out-of-sample, OOS).
  • Je艣li wynik jest satysfakcjonuj膮cy, to robimy to samo, ale dla drugiej cz臋艣ci danych, czyli optymalizujemy j膮, a nast臋pnie dobrane tam parametry uruchamiamy dla pierwszej cz臋艣ci danych.

Je艣li wynik takiego prostego testu jest satysfakcjonuj膮cy to przechodzimy do rozbudowanych i du偶o bardziej czasoch艂onnych test贸w walk-forward.

Poni偶ej wynik testu Big Leap dla naszej strategii.


S膮 one jak najbardziej akceptowalne i dobrze rokuj膮ce dla pe艂nych test贸w walk-forward. Generalnie drugi testowy okres (lata 2009-2019), bez wzgl臋du na to, czy mamy wyniki IS czy OOS, generuje lepsze wyniki ni偶 pierwszy okres (lata 2000-2009). Jest to zrozumia艂e je艣li spogl膮dniemy na to jak ros艂a warto艣膰 indeksu NASDAQ w czasie.

M贸j wywiad z Robertem Pardo

W samym tylko roku 2008, przy zapa艣ci 艣wiatowej gospodarki, osi膮gn膮艂 wynik ponad 140%!

Czytaj dalej 鈫

Testy walk-forward

Wykorzystamy tu koncepcj臋 tzw. test贸w walk-forward, kt贸rej autorem i popularyzatorem jest ikona bran偶y finansowej, wspomniany ju偶 Robert Pardo — go艣膰 odcinka numer 19 w moim podca艣cie. Jest to metodologia sprawdzona w boju przez wiele funduszy inwestycyjnych. Sam Pardo w 2008 roku, przy 艣wiatowej zapa艣ci rynk贸w finansowych, wygenerowa艂 ponad 140% zysku dla swojego funduszu, a przez magazyn Futures wybrany traderem tego偶 roku.

Temat testowania metod膮 walk-forward sam w sobie jest do艣膰 rozleg艂y i m贸g艂by spokojnie wype艂ni膰 kilka wpis贸w jak niniejszy. Ale na nasze potrzeby zaczniemy od czego艣 w miar臋 prostego.

O co chodzi w testach walk-forward? Ma on za zadanie rozwi膮za膰 problem doboru optymalnych parametr贸w, oraz i ich cookresowej reoptymalizacji (aktualizacji). Pierwsza cze艣膰 r贸wnania wydaje si臋 prosta: ze wszystkich kombinacji parametr贸w naszej strategii wybiera si臋 optymalny zestaw. Proste. Ale pojawia si臋 kilka problem贸w.

Po pierwsze, je艣li ju偶 wybierzemy optymalne parametry, to jak sprawdzi膰, czy one dzia艂aj膮 na danych nieoptymalizowanych? Najpro艣ciej poprzez zostawienie sobie np. 20-30% danych historycznych, na kt贸rych to sprawdzimy. Niekt贸rzy tak robi膮. Ale mo偶na i艣膰 dalej.

Grafika poni偶ej prezentuje proces testowania metod膮 walk-forward. Bloki oznaczone IS (in-sample), to okresy w kt贸rych system jest optymalizowany. Bloki OOS (out-of-sample), to okresy w kt贸rych strategia dzia艂a na parametrach dobranych podczas optymalizacji okresu IS.

Za艂贸偶my, 偶e mamy 10 lat danych testowych jak na grafice powy偶ej, okres 2001-2010. Nast臋pnie wykonajmy co艣 takiego:

  • Trzy pierwsze lata (2001-2003) optymalizujemy, np. szukamy dla jakich parametr贸w strategia generuje najlepszych stosunek zysku do obsuni臋cia kapita艂u
  • Tak dobrane parametry aplikujemy na danych za rok 2004
  • Nast臋pnie, trzyletni okres z punktu pierwszego przesuwamy o rok dalej (a wi臋c obejmuje teraz okres 2002-2004) i ponawiamy optymalizacj臋, na tym nowym zbiorze danych
  • Ponownie tak dobrane optymalne parametry aplikujemy na kolejnym roku (2005)
  • Ca艂a zabawa kontynuowana jest, a偶 skonsumujemy ca艂y zakres historycznych danych

Co zyskujemy takim podej艣ciem? Po pierwsze, zamiast konsumowa膰 od razu 70% danych na optymalizacj臋, konsumujemy w naszym przyk艂adzie tylko 30%. Lata 2004-2010 b臋d膮 danymi out-of-sample, a wi臋c nie s膮 wynikiem optymalizacji.

Po drugie, mamy wi臋ksz膮 pewno艣膰 co do jako艣ci procesu optymalizuj膮cego, poniewa偶 widzimy nie jeden okres out-of-sample, ale a偶 siedem takich okres贸w.

Po trzecie, parametry aktualizowane s膮 do najnowszych 3 lat wstecz 14 14. Mo偶na te偶 stosowa膰 tzw. podej艣cie anchored, czyli zakotwiczone. Polega ono na tym, 偶e o ile okno OOS zawsze ma sta艂a wielko艣膰, to okno IS zakotwiczone jest w艂a艣nie od pocz膮tku testowanego okresu. W ten spos贸b zakres danych, na kt贸rych optymalizowane s膮 parametry jest coraz d艂u偶szy. Osobi艣cie mnie to podej艣cie nie przekonywa艂o i nie widzia艂em w tym warto艣ci dodanej. Robert Pardo r贸wnie偶 podziela tak膮 opini臋. × , a wi臋c jest szansa, 偶e w ten spos贸b strategia mo偶e by膰 „艣wie偶a” i adaptowa膰 si臋 do zmian rynkowych.

Aby jednak mie膰 wi臋ksz膮 pewno艣膰 co do jako艣ci test贸w, zamiast jednego testu walk-forward, zrobimy ich ca艂膮 seri臋 w r贸偶nych konfiguracjach. Czyli to co widzimy na grafice powy偶ej przeprowadzimy kilkadziesi膮t razy, zmieniaj膮c rozmiar i liczb臋 okien IS/OOS.

Przyk艂adowo, IS zamiast mie膰 d艂ugo艣膰 3 lat, b臋dzie mia艂o d艂ugo艣膰 2 lat, a OOS zamiast 1 roku, b臋dzie mia艂o d艂ugo艣膰 6 miesi臋cy. I takich kombinacji tworzymy w艂a艣nie kilkadziesi膮t, by nie by艂o zagro偶enia, 偶e mamy tylko jeden specyficzny uk艂ad IS/OOS, kt贸ry „dzia艂a„.

Szukanie klastr贸w w testach walk-forward

Klastrowe testy walk-forward to po prostu zbi贸r wielu test贸w walk-forward. W naszym przyk艂adzie jest to zestaw 30 test贸w walk-forward.

Co oznaczaj膮 poszczeg贸lne kom贸rki z grafiki powy偶ej? S膮 to zestawy test贸w walk-forward o r贸偶nej konfiguracji w odniesieniu do d艂ugo艣ci okienek IS/OOS. Przyk艂adowo, zak艂adaj膮c dla u艂atwienia, 偶e mamy 10 lat danych testowych, to blok na przeci臋ciu OOS% = 15 i Runs = 25 oznacza:

  • dzielimy okres 10 lat na 25 r贸wnych cz臋艣ci (146 dni ka偶da, przy za艂o偶eniu 365 dni w roku)
  • ka偶dy taki okres 146 dni dzielimy na dane IS i OOS w proporcji 85% (124 dni) i 15% (22 dni)
  • co 22 dni strategia jest optymalizowana na danych z poprzednich 124 dni, a tak dobrane parametry wykorzystane s膮 na rynku przez okres 22 dni w艂a艣nie
  • maj膮c 10 lat danych, przy powy偶szych za艂o偶eniach, test walk-forward re-optymalizuje strategi臋 25 razy
  • w ten spos贸b, pomijaj膮c pierwsze okienko IS o d艂ugo艣ci 124 dni, pozosta艂y 10 letni okres jest w pe艂ni zbiorem wynik贸w OOS

I tu w艂a艣nie wida膰 przewag臋 test贸w walk-forward. Spalamy mniej danych na optymalizacj臋 i mamy wi臋cej wynik贸w OOS, czyli na okresach nieoptymalizowanych.

Na potrzeby naszej strategii, aby test walk-forward „zda艂” test (by艂 zaznaczony na zielono), musi spe艂ni膰 kilka warunk贸w dla wynik贸w na danych out-of-sample (OOS), czyli nieoptymalizowanych:

  • Zysk OOS (艂膮cznie ze wszystkich okienek OOS) musi by膰 wi臋kszy od zera
  • Zysk OOS (艂膮cznie ze wszystkich okienek OOS) nie mo偶e by膰 mniejszy ni偶 50% zysku na danych IS
  • Przynajmniej 50% okienek OOS musi generowa膰 jakikolwiek zysk
  • 呕adne pojedyncze okienko OOS nie mo偶e generowa膰 wi臋cej ni偶 50% ca艂o艣ciowego zysku z ca艂ego testu

Mamy zatem seri臋 30 r贸偶nych test贸w walk-forward. Zale偶y nam, by jak najwi臋cej przesz艂o test pozytywnie, a najlepiej by grupowa艂y si臋 one w klastry (st膮d nazwa). Ka偶dy taki klaster zbudowany jest z 9 kom贸rek (9 r贸偶nych zestaw贸w test贸w). Idea艂em jest jak wi臋kszo艣膰 konfiguracji walk-forward zdaje test, poniewa偶 wtedy nie ma ryzyka, 偶e nasz test jest ofiar膮 zbytniej optymalizacji… samego testu. Wiem, 偶e brzmi to zawile, ale testy walk-forward nie s膮 nic warte, je艣li usilnie wybrali艣my optymalne jego parametry.

U nas wida膰, 偶e na 30 r贸偶nych zestaw贸w test贸w walk-forward, test obla艂y tylko 3. To bardzo dobry wynik, zwa偶ywszy na wy艣rubowane warunki, kt贸re wymienione s膮 powy偶ej. W praktyce jednak, nawet te 3 kom贸rki opisane jako FAILED wygenerowa艂y zyski, co wida膰 poni偶ej.

Poni偶ej widzimy lini臋 kapita艂u dla zaznaczonego zestawu walk-forward, tj. OOS% = 10 i Runs = 5. Ta ostatnia warto艣膰 wskazuje liczb臋 okres贸w OOS. Na wykresie wida膰 wi臋c, 偶e od nieco ponad 90 transakcji, a偶 do ko艅ca testowego okresu (艂膮cznie ponad 100 transakcji), to wyniki nie b臋d膮ce wynikiem optymalizacji.

Wyniki klastrowych test贸w walk-forward wypad艂y bardzo pozytywnie. Mo偶na oczywi艣cie zag艂臋bi膰 si臋 w szczeg贸艂owe wyniki, ale co do zasady, je艣li strategia by艂aby s艂aba, to na tym etapie najpewniej by poleg艂a. Osobi艣cie od tych test贸w oczekuj臋, aby wi臋kszo艣膰 test贸w walk-forward by艂a na zielono. Dopuszczam do maksymalnie 4-5 test贸w, kt贸re nie spe艂niaj膮 tego warunku.

Na koniec uwaga: wykonanie takiego zestawu test贸w walk-forward dla du偶ego zestawu danych (np. 10-15 lat) przy niskim interwale (np. 5-minut), to sporo roboty nawet dla wydajnego procesora. Przyda si臋 te偶 automatyzacja tego procesu, bo je艣li przyjdzie nam odpala膰 ka偶dy test „z r臋ki”, to zwyczajnie rzucimy w ko艅cu tym w k膮t. Je艣li teraz pomno偶ymy to przez kilka interwa艂贸w, dla kt贸rego chcemy wykona膰 testy (o czym nieco p贸藕niej s艂贸w kilka) + kilka rynk贸w, to wytestowanie jednej strategii jest do艣膰 kosztownym zabiegiem. A na koniec dnia oka偶e si臋 zwykle, 偶e wynik testu nie jest dla nas satysfakcjonuj膮cy. Kto m贸wi艂, 偶e b臋dzie prosto? 馃槈

A teraz wyobra藕cie sobie t臋 ca艂膮 rzesz臋 delikwent贸w, kt贸rzy bez przygotowania, bez do艣wiadczenia, rzucaj膮 si臋 w czelu艣膰 rynku. I handluj膮. I wydaje si臋 im, 偶e maj膮 przewag臋 na tym偶e rynku. Niekt贸rzy nawet maj膮 poczucie kontroli rynku. To jakby wsiadanie bez przygotowania do my艣liwca F-16 z wiar膮 i przekonaniem o mo偶liwo艣ci wykonania akrobacji powietrznej. Po pierwszym udanym korkoci膮gu delikwent czuje eufori臋. Jestem Bogiem! Kwestia, zwykle kr贸tkiego czasu, gdy dochodzi do szybkiego kontaktu z pod艂o偶em. Niekontrolowanym.

Na koniec poni偶ej gar艣膰 statystyki dla naszej strategii. Dane nieoptymalizowane (OOS), dla jednego z zestaw贸w walk-forward, przy za艂o偶eniu, 偶e okienko IS = 504 dni, a OOS = 126 dni. To oznacza, 偶e strategia by艂a reoptymalizowana co 126 dni.

  • Okres: 18 lat, 1 miesi膮c, 26 dni
  • Procent czasu w rynku: 19,38%
  • Zysk: 128 830 USD
  • Profit Factor: 3.14
  • Transakcje stratne: -60 200 USD
  • Transakcje zyskowne: 189 030 USD
  • Liczba wszystkich transakcji: 232
  • Procent transakcji zyskownych: 78,45%
  • Przeci臋tna strata: -1 204 USD
  • Przeci臋tny zysk: 555 USD
  • Najwi臋ksza stratna transakcja: -5 765 USD
  • Najwi臋ksza zyskowna transakcja: 4 640 USD
  • Przeci臋tny miesi臋czny zysk: 1 691 USD
  • Koszt prowizji: 1 160 USD
  • Koszt po艣lizg贸w cenowych: 6 960 USD
  • Maksymalne obsuni臋cie kapita艂u (transakcja-do-transakcji): -12 400 USD
  • Maksymalne obsuni臋cie kapita艂u (intraday): -25 170 USD

Uwaga: liczba transakcji jest liczona tak, jak by nie by艂o skalowania, tj. ka偶da osobno. M贸wi膮c inaczej: je艣li by艂o skalowanie pozycji (u nas 2 kontrakty w rynku), powy偶sza statystyka liczy to jako dwie oddzielne transakcje.

Dla por贸wnywalnego okresu, strategia optymalizowana podej艣ciem walk-forward wygenerowa艂a ponad 13 000 USD wi臋kszy zysk przy podobnym poziomie maksymalnego obsuni臋cia na krzywej kapita艂u, w por贸wnaniu do strategii, kt贸ra nie by艂a optymalizowana i dzia艂a艂a na domy艣lnych parametrach (30, 25, 55).

Wed艂ug mnie, nie to jest jednak g艂贸wnym celem i zalet膮 stosowania podej艣cia walk-forward. Tu si臋 tak sk艂ada, 偶e taka wersja reoptymalizowana wygenerowa艂a nieco lepszy wynik — nie jest to jednak zasada.

To co jest istotne najbardziej, to fakt, 偶e walk-forward daje nam wi臋ksz膮 pewno艣膰 co do dzia艂ania strategii w przysz艂o艣ci. Mamy bowiem wiele okres贸w out-of-sample, dzia艂aj膮cych na r贸偶nych warto艣ciach parametr贸w. Przy jednym okresie out-of-sample (albo wr臋cz jego ca艂kowitym braku) trudniej zak艂ada膰 czego mo偶emy oczekiwa膰 w przysz艂o艣ci.

Nie umniejszam te偶 zalety walk-forward wynikaj膮cej z faktu dopasowywania strategii do zmian rynkowych. S臋k w tym jednak, 偶e zmiany te zawsze b臋d膮 op贸藕nione i nie nale偶y oczekiwa膰 zbyt wiele, szczeg贸lnie gdy rynek nie mo偶e si臋 zdecydowa膰 w d艂u偶szym terminie co do jego charakterystyki.

Symulacja Monte Carlo

Testy walk-forward mamy za sob膮. Mamy ogrom transakcji i wiele mo偶liwo艣ci wyboru, co do tego jaki zestaw tych test贸w wybra膰 i stosowa膰 przy ponownej optymalizacji.

Przeprowad藕my jednak jeszcze jeden test — tzw. symulacj臋 Monte Carlo. Metod臋 zaproponowa艂 pierwszy raz nasz wybitny matematyk, przedstawiciel lwowskiej szko艂y matematycznej — Stanis艂aw Ulam. Na czym to ma polega膰? Niestety nie jest to oferta wypadu na sympatyczny weekend do najbardziej znanej dzielnicy Monako.

Wyobra藕my sobie, 偶e mamy 100 transakcji z symulacji na danych historycznych, kt贸re uk艂adaj膮 si臋 w pewien ci膮g i kszta艂tuj膮 nam krzyw膮 kapita艂u. Za艂贸偶my te偶, 偶e strategia przy tej okre艣lonej sekwencji transakcji 艂adnie zarabia, obsuni臋cia na kapitale s膮 akceptowalne.

Co jednak, gdyby艣my zmienili kolejno艣膰 tych transakcji? I na przyk艂ad u艂o偶yli je w taki ci膮g, 偶e mieliby艣my seri臋 10 stratnych transakcji z rz臋du, jedna po drugiej? Czy nasz portfel by to prze偶y艂?

Monte Carlo to w艂a艣nie spos贸b na to, by zasymulowa膰 wiele wariant贸w, losowo dobieraj膮c dane z pierwotnej symulacji. Przy u偶yciu komputera symulujemy wiele przebieg贸w tej samej strategii, tylko dobieraj膮c transakcje w r贸偶nej kolejno艣ci.

Mo偶na te偶 podej艣膰 do tematu inaczej. Zamiast losowo dobiera膰 r贸偶n膮 kolejno艣膰 transakcji, zasymulujemy przebieg strategii wielokrotnie, za ka偶dym razem wprowadzaj膮c losowo ma艂e zmiany w danych wej艣ciowych, czyli notowaniach historycznych. Na potrzeby tego wpisu pozostaniemy przy pierwszym wariancie.

Z puli transakcji out-of-sample (232) z testu walk-forward, zrobimy „losowanie” i zasymulujemy roczny przebieg strategii. Czyli je艣li 艣rednio w roku mamy przeci臋tnie oko艂o 12-15 transakcji, to sprawdzimy, jak wygl膮da膰 mo偶e rok z losowo dobranych transakcji (z puli 232 transakcji). Losowanie przeprowadzimy 2500 razy, a nast臋pnie policzymy kilka statystyk z tej pr贸by.

Dlaczego tak? Mo偶liwo艣ci realizacji tego typu symulacji jest bardzo wiele. Osobi艣cie z pewn膮 doz膮 ostro偶no艣ci podchodz臋 do tego typu zabawy, m.in. ze wzgl臋du na niestacjonarno艣膰 rynk贸w finansowych. W efekcie transakcje, kt贸re mamy z historycznych notowa艅, mog膮 si臋 mie膰 nijak do rzeczywisto艣ci, je艣li rynek si臋 zmieni艂, a strategia ju偶 nie ma przewagi rynkowej. To jest wada Monte Carlo 15 15. Nie chc臋 si臋 nara偶a膰, ale dla mnie symulacja Monte Carlo jest nieco przereklamowana w kontek艣cie tradingu. By膰 mo偶e przy naprawd臋 du偶ej liczbie transakcji (tysi膮ce) i ma艂ego zakresu czasu, mo偶e to by膰 bardziej przydatna forma testu. Problemem jest na przyk艂ad to, 偶e transakcja zawarta na NASDAQ-100, gdy ten by艂 przy poziomie 1000 punkt贸w, versus, gdy jest na poziomie 7000 punkt贸w, ma si臋 jak pi臋艣膰 do nosa, gdy zestawi膰 je razem przypadkowo jedna po drugiej. Nie nale偶y te偶 ufa膰, 偶e Monte Carlo ustrze偶e nas od zbytniego dopasowania modelu do danych. Ze znanych trader贸w z tego typu analizy korzysta np. Kevin Davey, kt贸ry go艣ci艂 u mnie w podca艣cie. × .

Kolejne ograniczenie tego typu symulacji polega na tym, 偶e zak艂adamy brak zale偶no艣ci pomi臋dzy transakcjami (tzw. autokorelacja). Je艣li taka zale偶no艣膰 wyst臋puje, symulacja Monte Carlo bez jej uwzgl臋dnienia b臋dzie zaburzona. Aby wykluczy膰 wyst臋powanie autokorelacji mo偶na wykona膰 na przyk艂ad test Durbina-Watsona.

Na nasze potrzeby, interesuje mnie czego mog臋 oczekiwa膰 od strategii w najbli偶szym roku. Sprawdzimy jaki minimalny kapita艂 startowy powinienem dobra膰, aby strategia mia艂a nie wi臋cej ni偶 10% prawdopodobie艅stwa na bankructwo, tj. zej艣cie do takiego poziomu warto艣ci portfela, gdzie nie jest mo偶liwe otwarcie kolejnej pozycji. Jest to tzw. risk-of-ruin.

Za艂o偶enia symulacji:

  • Liczba losowa艅: 2500
  • Okres symulacji: 1 rok
  • Liczba transakcji w ka偶dej symulacji: 15
  • Liczba wszystkich transakcji: 232
  • Poziom risk-of-ruin: 17 000 USD

Ostatnia warto艣膰, 17 000 USD (odpowiednik mniej wi臋cej dwukrotno艣ci depozytu zabezpieczaj膮cego), oznacza, 偶e je艣li nasz kapita艂 zejdzie poni偶ej tej kwoty, to nie mo偶emy otworzy膰 nowych pozycji (max. 2 kontrakt贸w). Nie jest to rozwi膮zanie idealne, poniewa偶 warto艣膰 depozytu ulega zmianie w czasie pod wp艂ywem zmiany warto艣ci indeksu i zmienno艣ci rynkowej.

Przy takich za艂o偶eniach symulacja Monte Carlo pokaza艂a, 偶e aby nie przekroczy膰 10% prawdopodobie艅stwa bankructwa w ci膮gu roku, musimy mie膰 minimalnie na start 21 500 USD. Przy takim kapitale startowym tak wygl膮daj膮 wyniki:

  • Mediana obsuni臋膰 kapita艂u: 6%
  • Mediana zysku: 8 063 USD
  • Mediana stopy zwrotu: 38%
  • Prawdopodobie艅stwo zyskownego roku: 89%

A tak wygl膮da mediana stopy zwrotu, w zale偶no艣ci od kapita艂u startowego:

I na tym zako艅cz臋 temat zwi膮zany z Monte Carlo. Konkluduj膮c: je艣li testy walk-forward uk艂adaj膮 si臋 w klastry, generuj膮c dobre wyniki, to strategia ma spore szanse w rynku.

Testy dla wielu rynk贸w i interwa艂贸w czasowych

Dla swoich potrzeb, robi臋 testy klastrowych walk-forward dla zbioru kilku rynk贸w na r贸偶nych interwa艂ach czasowych (ang. timeframe). Nie oczekuj臋, 偶e strategia zbudowana dla indeksu NASDAQ-100 b臋dzie zarabia膰 na rynku tusz wieprzowych, ale chcia艂bym widzie膰 chocia偶 przeci臋tne zyski na podobnym rynku. Aby nie przed艂u偶a膰, wykona艂em seri臋 test贸w dla danych dziennych dla kilku kontrakt贸w terminowych na g艂贸wne indeksy gie艂dowe w USA.

Generalnie ka偶dy z rynk贸w wygenerowa艂 zyski. Liczba zyskownych transakcji i Profit Factor 16 16. Profit Factor to wska藕nik cz臋sto wykorzystywany do pomiaru jako艣ci testowanej strategii. Jest to wynik podzielenia wszystkich zyskownych transakcji, przez sum臋 wszystkich transakcji stratnych (koszty transakcyjne r贸wnie偶 powinny by膰 uwzgl臋dnione). Aby strategia by艂a zyskowna warto艣膰 Profit Factor musi oczywi艣cie by膰 powy偶ej 1. Warto艣膰 powy偶ej 1.5 wskazuje zwykle na dobry system. × dla ka偶dego rynku jest satysfakcjonuj膮cy. Wyniki kwotowe nie mog膮 by膰 wprost por贸wnane, poniewa偶 kontrakty terminowe maj膮 r贸偶n膮 wielko艣膰, niekiedy znacz膮co (vide E-mini Dow Jones vs E-mini S&P MidCap 400).

Zwr贸ci膰 uwag臋 nale偶y na tzw. maksymalne obsuni臋cie na linii kapita艂u intra-day. Mamy strategi臋 dzia艂aj膮c膮 na dziennych 艣wiecach. Od otwarcia, do zamkni臋cia pozycji mo偶e up艂yn膮膰 kilka dni. Je艣li mierzy膰 obsuni臋cie tylko wed艂ug ko艅cowego wyniku transakcji, nie zauwa偶ymy ryzyka, kt贸re wyst臋powa艂o zanim zamkn臋li艣my okre艣lon膮 pozycj臋. Przyk艂adowo pozycja otwarta na 4 dni wygenerowa艂a zysk 2 000 USD. Ale w mi臋dzyczasie rynek m贸g艂 i艣膰 mocno przeciwko nam, np. na poziom -10 000 USD — mo偶liwe tym bardziej, 偶e nie mamy sztywnego stop lossa w naszej strategii.

Problem ten jest mo偶e mniejszy, gdy w portfelu mamy wi臋cej nieskorelowanych strategii. Ale je艣li kto艣 naiwnie liczy, 偶e je艣li maksymalne obsuni臋cie (w wersji nie intra-day) wynosi艂o 15 000 USD w symulacji to zarazem najczarniejszy scenariusz jaki nas czeka w realu, to si臋 mo偶e rozczarowa膰. I to bardzo srodze, gdy jego portfel ma warto艣膰 np. tylko 20 000 USD. I to nawet w sytuacji, gdzie strategia finalnie zarabia. W mi臋dzyczasie mo偶e zabrakn膮膰 na pokrycie depozyt贸w zabezpieczaj膮cych i gra zako艅czy si臋 margin call’em, czyli awaryjnym uzupe艂nieniem konta w kas臋 albo si艂owym zamkni臋cie pozycji przez brokera.

Nie pisz臋 o przetrzymywaniu, czy literacko pisz膮c, kiszeniu stratnych pozycji. Mowa o sytuacji, gdzie nie pada warunek zamkni臋cia pozycji, a rynek ostro idzie w drug膮 stron臋. Mamy tu na podor臋dziu, przy skalowaniu, dwie pozycje kontraktowe — w przypadku kontrakt贸w na NASDAQ-100, przy obecnej wycenie, kontrolujemy pozycj臋 o wielko艣ci ponad 260 000 USD. Warto mie膰 tego 艣wiadomo艣膰 zawczasu.

Wnioski

Je艣li dotrwa艂e艣 do tego momentu to gratuluj臋. Przeszli艣my niemal ca艂膮 drog臋 w procesie budowy strategii. A tak przynajmniej wydawa膰 si臋 mo偶e wi臋kszo艣ci z nas. W ko艅cu przecie偶 testy wypad艂y niemal 艣piewaj膮co. Czas zarabia膰 pieni膮dze…

Tak, to prawda — strategia ma potencja艂 i spore szanse na powt贸rzenie chocia偶 w cz臋艣ci wynik贸w, kt贸re widzieli艣my w testach. Tak, w cz臋艣ci, poniewa偶 to co widzimy w symulacji jest w pewnym sensie iluzj膮. Rzeczywisto艣膰 bywa zwykle bardziej szorstka. Pomimo najlepszych stara艅, to co tam widzimy zawsze b臋dzie obarczone grzechem dopasowania modelu (strategii) do danych historycznych. Co gorsza — rynki ewoluuj膮. Je艣li coraz wi臋cej i wi臋cej uczestnik贸w rynku b臋dzie wykorzystywa膰 t臋 konkretn膮 metod臋, jej rynkowa przewaga b臋dzie ulega膰 erozji w czasie.

Mam nadziej臋, 偶e uda艂o mi si臋 namacalnym przyk艂adem udowodni膰, 偶e proste rzeczy mog膮 by膰 efektywne. Zwr贸膰 uwag臋: strategia jest banalna, ale warsztat, kt贸rym ju偶 j膮 obrabiamy, wymaga nieco zachodu. Je艣li jednak zale偶y Ci na kapitale, kt贸ry anga偶ujesz, musisz zrozumie膰, 偶e gie艂da to biznes — nie ma darmowych obiad贸w.

Inkubacja

O handlu papierowym, zwanym te偶 inkubacj膮, m贸wi艂em w podca艣cie oraz wspomnia艂em w prezentacji. W skr贸cie chodzi o to, 偶e po zbudowaniu i wytestowaniu strategii, dobrze jest powstrzyma膰 si臋 z natychmiastowym wej艣ciem ni膮 na rynek. Okres ten mo偶e trwa膰 od kilku tygodni, do nawet kilku miesi臋cy. Dzi臋ki temu mamy mo偶liwo艣膰 „och艂oni臋cia” po ogl膮daniu 艂adnych wynik贸w, jakie wygenerowa艂 nam backtest. Jest to taki zaw贸r bezpiecze艅stwa, 偶e nawet je艣li co艣 schrzanili艣my na etapie budowy, to mamy szans臋 to sprawdzi膰 na realnym rynku, ale bez anga偶owania realnego kapita艂u.

Je艣li strategia w tym okresie nie b臋dzie dzia艂a膰 w zgodzie z tym co zak艂adali艣my i co wykaza艂y testy, to poza straconym czasem, uratowali艣my kapita艂. W drug膮 stron臋, mo偶e okaza膰 si臋, 偶e strategia od razu w trakcie inkubacji zacz臋艂a pi臋knie zarabia膰, a my poczujemy stracon膮 okazj臋 do zarobku. Lepiej straci膰 okazj臋, ni偶 pieni膮dze. My艣l臋, 偶e zbyt pochopne dzia艂ania rynkowe s膮 na szczycie powod贸w przez kt贸re ludzie trac膮 na rynkach finansowych pieni膮dze. Ka偶dy z nas przez to przechodzi i warto si臋 nad tym zastanowi膰.

Alternatywnie mo偶na te偶 uruchomi膰 handel na minimalnym kapitale. W przypadku instrument贸w jak CFD jest to prostsze do osi膮gni臋cia, ni偶 na lewarowanych rynkach regulowanych, gdzie cz臋sto nawet warto艣膰 jednego kontraktu (minimalnej jednostki, kt贸r膮 mo偶emy handlowa膰) opiewa na kwot臋 liczon膮 w dziesi膮tkach tysi臋cy dolar贸w.

Bardziej zaawansowani i do艣wiadczeni mog膮 pr贸bowa膰 skr贸ci膰 lub wr臋cz wyeliminowa膰 etap inkubacji poprzez zarezerwowanie 6-12 miesi臋cy danych na „symulacj臋 przysz艂o艣ci”. Jest to tak zwany okres super-out-of-sample (SOOS). Zalecam jednak mimo wszystko wstrzemi臋藕liwo艣膰, cho膰 dobrze wiem, jak nie jest to proste. 馃檪

Wdro偶enie na rynek i konserwacja

W moim przypadku strategie dzia艂aj膮 w wi臋kszo艣ci w spos贸b automatyczny na platformie TradeStation (korzystam te偶 z innych broker贸w, gdzie handel nie jest automatyzowany). Ma to t臋 zalet臋, 偶e nie musz臋 艣ledzi膰 na bie偶膮co rynku. Sprawdzam raz/dwa razy w ci膮gu dnia czy wszystko jest OK, a raz w tygodniu restartuj臋 ca艂y komputer i aktualizuj臋 system operacyjny. Gdy jestem w podr贸偶y do komputera loguj臋 si臋 zdalnie. W sytuacji awaryjnej pozycjami mog臋 zarz膮dza膰 te偶 bezpo艣rednio ze strony brokera.

To wszystko nie oznacza, 偶e od razu musisz automatyzowa膰 sw贸j trading. Od lat obserwuj臋, 偶e pocz膮tkuj膮cy traderzy za sw贸j cel podstawowy stawiaj膮 sobie budow臋 robota. To z艂e podej艣cie, poniewa偶 nasz podstawowy akcent powinien by膰 stawiany na wypracowanie przewagi rynkowej. Jest to du偶o trudniejsze do osi膮gni臋cia ni偶 automatyzacja strategii, co jest zabiegiem czysto technicznym i w wydaniu domowym nie wypracuje nam przewagi rynkowej niczym HFT.

W ramach konserwacji, to o czym musimy pami臋ta膰, to ponowna optymalizacja parametr贸w, je艣li korzystali艣my z test贸w walk-forward. Sama strategia nie ulega zmianie, natomiast zgodnie z „harmonogramem” walk-forward co ustalony okres czasu powinni艣my nasz膮 strategi臋 ponownie optymalizowa膰, uwzgl臋dniaj膮c najnowsze dane. W naszym przypadku, jak ju偶 wspomina艂em, okienko IS = 504 dni, a OOS = 126 dni. Znaczy to, 偶e co 126 dni bierzemy ostatnie 504 dni notowa艅 i optymalizujemy strategi臋. Tak dobrane parametry s艂u偶y膰 nam maj膮 do kolejnej optynalizacji za 126 dni.

Wycofanie z rynku

Tu sprawa jest prosta i om贸wi艂em ju偶 j膮 w podca艣cie. Musimy ustali膰 kiedy strategia b臋dzie wycofana z rynku w przypadku, gdy jej zachowanie zacznie odbiega膰 od tego co w testach. Niech to b臋dzie kryterium, kt贸re spe艂nia Twoje oczekiwania. Wa偶ne jest to, aby si臋 tego p贸藕niej trzyma膰. Mo偶emy wi臋c powiedzie膰 sobie: je艣li strategia b臋dzie mia艂a obsuw臋 na poziomie 15 000 USD, odcinamy j膮 z rynku. Oczywiste jest, 偶e je艣li obni偶ymy ten pr贸g, to prawdopodobie艅stwo jej wy艂膮czenia wzro艣nie. Mo偶na to by艂o zaobserwowa膰 w przypadku symulacji Monte Carlo, gdzie dla r贸偶nych warto艣ci portfela badali艣my prawdopodobie艅stwo jego bankructwa.

Nie powinni艣my oczekiwa膰, 偶e strategia wr贸ci do zarabiania, i trzyma膰 j膮 nadal w rynku, wbrew wcze艣niejszym ustaleniom. Warto natomiast mie膰 艂awk臋 rezerwow膮 z innymi strategiami, kt贸re obecnie nie s膮 w rynku.

Tu s艂owo przestrogi: odradzam dora藕nego modyfikowania strategii, celem „poprawienia” s艂abych wynik贸w. To, co zwykle uzyskamy, to tzw. efekt pewno艣ci wstecznej (ang. hindsight bias).

Kod 藕r贸d艂owy strategii

Je艣li interesuje Ci臋 kod 藕r贸d艂owy opisywanej strategii, mo偶esz go pobra膰 za darmo klikaj膮c w przycisk poni偶ej. Strategia zaimplementowana jest w dw贸ch j臋zykach: EasyLanguage (na platform臋 TradeStation/MultiCharts) oraz AFL (AmiBroker). Nie martw si臋 — strategia jest tak banalna, a j臋zyki programowania wysokiego poziomu, 偶e ka偶dy nie-programista jest w stanie j膮 ogarn膮膰 w mgnieniu oka.

Je艣li interesuje Ci臋 kod w j臋zyku MQL, niestety nie pomog臋 Ci, poniewa偶 nie korzystam z MetaQuotes.

Pobierz kod 藕r贸d艂owy

Zako艅czenie

Do tego miejsca dotarli ju偶 chyba najwi臋ksi twardziele. 馃槈 Spokojnie, niepr臋dko napisz臋 co艣 ponownie, tym bardziej, 偶e tematyka raczej niszowa.

Co dalej?

To by艂 tylko przyk艂ad budowy strategii. Zach臋cam do eksperyment贸w i otwartego umys艂u. 馃檪 Zamiast ogranicza膰 si臋 do tego co powy偶ej, mamy wiele mo偶liwo艣ci, np.:

  • Sprawdzi膰 zachowanie strategii dla innych interwa艂贸w czasowych, innych (niestandardowych) konfiguracji sesji (np. gra tylko w okre艣lonych godzinach w trakcie sesji)
  • Poeksperymentowa膰 z innymi rynkami (w tym ETF, gdzie skuteczno艣膰 strategii mo偶e by膰 wi臋ksza)
  • Modyfikacja metod wej艣cia/wyj艣cia
  • Zarz膮dzanie pozycj膮 — zamiast skalowania na dwie cz臋艣ci jak w oryginale, spr贸bowa膰 mo偶na innego podej艣cia skalowania jak model 2/3/5: pierwsza pozycja 20% kapita艂u, druga 30% kapita艂u, a trzecia 50%, odpowiednio dla RSI na poziomie 30, 25, i 20.
M贸j wywiad z Tomem Basso

Jack Schwager w znanej serii ksi膮偶ek Czarodzieje Rynku przyzna艂, 偶e to w艂a艣nie Tom Basso wywar艂 na nim najwi臋ksze wra偶enie po艣r贸d wszystkich trader贸w.

Czytaj dalej 鈫

Osobi艣cie wi臋kszo艣膰 w艂asnych kr贸tkoterminowych strategii buduje poprzez modyfikacje innych strategii. Nic w tym z艂ego. Nie warto natomiast komplikowa膰 za bardzo wszystkiego: dodawanie n-tego filtra i n-tego warunku wej艣cia/wyj艣cia z pozycji mo偶e poprawi膰 wyniki, ale i podniesie ryzyko nadmiernego dopasowania modelu do historycznych notowa艅.

Moja rada wynikaj膮ca z wci膮偶 niewielkiego do艣wiadczenia: to co widzieli艣my w testach mo偶e, ale nie musi przypomnie膰 realne zachowanie. Oczekuj, 偶e obsuni臋cia kapita艂u b臋d膮 wi臋ksze, b臋d膮 trwa艂y d艂u偶ej i pojawi膮 si臋 szybciej, ni偶 tego oczekujesz. Rzeczy takie jak Flash Crash w 2010 roku zdarzaj膮 si臋 na serio — warto zastanowi膰 si臋 jak by艣my przez to przeszli, je艣li w og贸le by艣my przeszli. Dla niekt贸rych mog艂oby to by膰 ostatnie karmienie kaczek w 偶yciu, bo okaza艂o si臋, 偶e to 艂ab臋d藕, czarny 艂ab臋d藕… 馃槈

To co tu zawar艂em w tym artykule jest zaledwie mu艣ni臋ciem tematu. Zwr贸膰 uwag臋, 偶e jest wielu trader贸w z dobrymi wynikami, kt贸rzy swoje kr贸tkoterminowe strategie buduj膮 bez wykorzystania metod jak powy偶ej. Ale mam nadziej臋, 偶e dla mniej zaawansowanych oka偶e si臋 dobrym punktem wyj艣cia do swojej drogi.

I na koniec raz jeszcze podkre艣l臋, 偶e kluczem profesjonalnego tradingu i inwestowania jest my艣lenie w kategorii portfela. Po艂膮czenie wielu pomys艂贸w, przy kontroli poziomu korelacji, jest bardzo ciekawym kierunkiem do eksploracji i poszukiwania w艂asnej przewagi rynkowej. Du偶o bardziej, ni偶 usilne poszukiwanie idealnej strategii, b膮d藕 idealnych parametr贸w.

Zaproszenie do dyskusji

Serdecznie zapraszam Ci臋 do komentowania i zadawania pyta艅, bezpo艣rednio na tej stronie poni偶ej, lub na mojej stronie na Facebook鈥檜 lub moim profilu Twitter鈥檕wym.

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臋 馃檪

Przypisy

  1. Zwracam uwag臋 na to, poniewa偶 w planach mam r贸wnie偶 prezentacj臋 strategii 艣rednio/d艂ugoterminowej opartej na paradygmacie tzw. pod膮偶ania za trendem (ang. trend following). Tam akcenty w procesie budowy i testowania strategii s膮 roz艂o偶one inaczej.
  2. Polecam m贸j wywiad z Lind膮 Raschke, w kt贸rym przyzna艂a, 偶e nie jest w stanie pod膮偶a膰 w 100% za mechaniczn膮 strategi膮 transakcyjn膮. Jej przewaga wynika jednak z ogromnego do艣wiadczenia i rozumienia mechaniki rynkowej. Obrazowo mo偶na powiedzie膰, 偶e strategi臋 ma w g艂owie, co potwierdzi艂 jej dobry znajomy 鈥 Perry Kaufman 鈥 m贸wi膮c, 偶e Linda dzia艂a na rynku niczym algorytm.
  3. Wska藕nik RSI (ang. Relative Strength Index) to popularna metoda mierzenia tzw. wykupienia/wyprzedania rynku. Wska藕nik liczony jest w ten spos贸b, 偶e dla badanego okresu (np. 5 dni), dzielimy 艣redni zysk przez 艣redni膮 strat臋. Zyski i straty dla poszczeg贸lnych dni liczone s膮 zwykle pomi臋dzy cenami zamkni臋cia (np. je艣li wczoraj cena zamkni臋cia wynosi艂a 100, a dzi艣 101, to mamy 1% zysk, 0% straty). W przypadku RSI wynik jest znormalizowany (oraz wyg艂adzony), tak by wyniki zawiera艂y si臋 w przedziale 0-100. Wskazanie RSI na poziomie 0 oznacza, 偶e mieli艣my spadek w ca艂ym okresie (np. wszystkie sesje by艂y spadkowe -- wyprzedanie rynku), lub rynek sta艂 w miejscu. Analogicznie, gdy mamy wskazanie 100, znaczy to, 偶e ca艂y okres by艂 wzrostowy (wykupienie rynku).
  4. Problem mo偶na rozwi膮za膰 sk艂adaj膮 zlecenie np. na minut臋 przed zamkni臋ciem rynku.
  5. M贸wimy o strategiach kr贸tkoterminowych, gdy偶 wr臋cz przeciwnie ma si臋 to przy klasycznych strategiach typu trend following. Ale nawet przy podej艣ciu kr贸tkoterminowym s膮 traderzy, jak np. Andrea Unger, kt贸rzy w testach traktuj膮 zarz膮dzanie pozycj膮 jako element przewagi strategii i wprost j膮 z ni膮 integruj膮 od samego pocz膮tku (czyli jak u nas w tym artykule).
  6. Nie znaczy to, 偶e musisz automatyzowa膰 swoje strategie, tym bardziej, je艣li funkcjonuj膮 na interwale dzeinnym, jak w opisywanym przypadku. Jest to cz臋sto tylko dodatek, a nie cel sam w sobie, je艣li chodzi o trading. Naszym celem numer jeden jest znalezienie przewagi rynkowej. Nie uprawiamy tu HFT.
  7. Kontrakty terminowe, w odr贸偶nieniu od np. akcji, maj膮 konkretn膮 dat臋 dostawy, po kt贸rej notowania wygasaj膮. Wynika to wprost z charakteru tego instrumentu, kt贸re historycznie powsta艂 w艂a艣nie na potrzeby zabezpieczenia ryzyka. Na przyk艂ad rolnik mo偶e, chc膮c zabezpieczy膰 ryzyko sprzeda偶y kukurydzy w przysz艂o艣ci, sprzeda膰 dzi艣 kontrakt za konkretn膮 cen臋. Z punktu widzenia tradera rodzi to jednak potrzeb臋 po艂膮czenia ze sob膮 serii kontrakt贸w, tak by tworzy艂y one nieprzerwan膮 histori臋. Nie wnikaj膮c w szczeg贸艂y, bo mo偶na by o tym napisa膰 odr臋bny artyku艂, pomi臋dzy seriami kontrakt贸w wyst臋puj膮 luki (dla dociekliwych polecam sprawdzi膰 zjawiska takie jak contango i backwardation). Szczeg贸lnie du偶e luki mog膮 wyst臋powa膰 przy niekt贸rych kontraktach towarowych, np. na gaz. Wynika to m.in. z wysokich koszt贸w jego przechowywania 鈥 kupno dzi艣 gazu, z dostaw膮 za np. p贸艂 roku musi w cenie to odzwierciedla膰. Z tego powodu dane musz膮 by膰 korygowane wstecznie, tak by zniwelowa膰 luki cenowe, kt贸re realnie nie wyst臋puj膮, poniewa偶 s膮 pomi臋dzy r贸偶nymi seriami kontrakt贸w. Ma to znaczenie dla tradera, kt贸rego pozycja otwarta jest na przestrzeni wi臋cej ni偶 jednej serii, gdzie wyst臋puje potrzeba tzw. rolowania pozycji 鈥 przeniesienia na kolejn膮 seri臋. W skrajnych sytuacjach niekorygowane dane mog膮 totalnie zaburzy膰 na wykresach d艂ugoterminowe, wieloletnie trendy.
  8. Bardzo wa偶ne, aby nie pr贸bowa膰 do b贸lu r贸偶nych okres贸w, a偶 wyniki b臋d膮 satysfakcjonuj膮ce. Okres 2 lat powinien wst臋pnie pokaza膰, czy zaimplementowany pomys艂 ma przewag臋 na rynku.
  9. Dla pozycji otwieranych i zamykanych tego samego dnia wielko艣膰 depozytu mo偶e by膰 znacznie mniejsza. U nas jednak ten warunek nie jest spe艂niony.
  10. SMA (ang. Simple Moving Average) -- 艣rednia cen (np. zamkni臋cia) za wybrany okres. Np. SMA(200, Close) oznacza 艣redni膮 cen zamkni臋cia za okres 200-dni.
  11. Nale偶y pami臋ta膰, 偶e strategia w r贸偶nych okresach czasu ma prawo generowa膰 r贸偶ne wyniki, bo zmieniaj膮 si臋 warunki rynkowe i warto艣膰 kontraktu. Rozpi臋to艣膰 warto艣ci jednego kontraktu NQ na przestrzeni ostatnich 19 lat waha艂a si臋 pomi臋dzy mniej ni偶 20 000 USD, a niemal 160 000 USD!
  12. Twardziele mog膮 zaprz臋gn膮膰 do pracy np. algorytmy genetyczne, 偶eby by艂o jeszcze pro艣ciej i szybciej. 呕ebym nie zosta艂 藕le zrozumiany: idea tej klasy algorytm贸w jest n臋c膮ca. Pami臋tam do dzi艣 jak na studiach informatycznych, ponad 15 lat temu, by艂em zafascynowany koncepcj膮 tchni臋cia pierwastka inteligencji w bezduszne komputery. Niemniej jednak nale偶y stosowa膰 je z ogromn膮 rozwag膮 i zrozumieniem tego, co si臋 robi. Nie mo偶na traktowa膰 algorytm贸w genetycznych jako drogi na skr贸ty.
  13. Robert Pardo w 2008 roku wyda艂 艣wietn膮 ksi膮偶k臋 o testowaniu i optymalizowaniu strategii transakcyjnych pt. The Evaluation and Optimization of Trading Strategies. Om贸wi艂 w niej m.in. podej艣cie test贸w walk-forward, kt贸rego jest tw贸rc膮. A Perry Kaufman napisa艂 do tej ksi膮偶ki wst臋p, chocia偶 sam nie korzysta z tej metodologii. 艢wiat jest ma艂y.
  14. Mo偶na te偶 stosowa膰 tzw. podej艣cie anchored, czyli zakotwiczone. Polega ono na tym, 偶e o ile okno OOS zawsze ma sta艂a wielko艣膰, to okno IS zakotwiczone jest w艂a艣nie od pocz膮tku testowanego okresu. W ten spos贸b zakres danych, na kt贸rych optymalizowane s膮 parametry jest coraz d艂u偶szy. Osobi艣cie mnie to podej艣cie nie przekonywa艂o i nie widzia艂em w tym warto艣ci dodanej. Robert Pardo r贸wnie偶 podziela tak膮 opini臋.
  15. Nie chc臋 si臋 nara偶a膰, ale dla mnie symulacja Monte Carlo jest nieco przereklamowana w kontek艣cie tradingu. By膰 mo偶e przy naprawd臋 du偶ej liczbie transakcji (tysi膮ce) i ma艂ego zakresu czasu, mo偶e to by膰 bardziej przydatna forma testu. Problemem jest na przyk艂ad to, 偶e transakcja zawarta na NASDAQ-100, gdy ten by艂 przy poziomie 1000 punkt贸w, versus, gdy jest na poziomie 7000 punkt贸w, ma si臋 jak pi臋艣膰 do nosa, gdy zestawi膰 je razem przypadkowo jedna po drugiej. Nie nale偶y te偶 ufa膰, 偶e Monte Carlo ustrze偶e nas od zbytniego dopasowania modelu do danych. Ze znanych trader贸w z tego typu analizy korzysta np. Kevin Davey, kt贸ry go艣ci艂 u mnie w podca艣cie.
  16. Profit Factor to wska藕nik cz臋sto wykorzystywany do pomiaru jako艣ci testowanej strategii. Jest to wynik podzielenia wszystkich zyskownych transakcji, przez sum臋 wszystkich transakcji stratnych (koszty transakcyjne r贸wnie偶 powinny by膰 uwzgl臋dnione). Aby strategia by艂a zyskowna warto艣膰 Profit Factor musi oczywi艣cie by膰 powy偶ej 1. Warto艣膰 powy偶ej 1.5 wskazuje zwykle na dobry system.

Polecam r贸wnie偶...

馃攰 ST 018

Budujemy strategi臋 transakcyjn膮, czyli o co w tym wszystkim chodzi?
(cz臋艣膰 1)

Je艣li nie s艂ucha艂e艣 jeszcze tego, to gor膮co polecam!

Otw贸rz

馃攰 ST 020

Budujemy strategi臋 transakcyjn膮, czyli o co w tym wszystkim chodzi?
(cz臋艣膰 2)

Je艣li nie s艂ucha艂e艣 jeszcze tego, to gor膮co polecam!

Otw贸rz

馃攰 ST 021

Larry Connors, czyli o tym jak kupowa膰 strach i sprzedawa膰 chciwo艣膰 (EN)

Wywiad jakiego udzieli艂 mi Larry Connors -- ikona bran偶y finansowej. Nie bez powodu...

Otw贸rz

dodaj w艂asny

  1. Szacun! Totalny szacun za takie wpisy i za cala strategie. Musze to przeczytac kilka razy, bo raz to za malo.

  2. Bardzo dobry artyku艂.
    I najlepsze to zdanie w zako艅czeniu, po kilkudziesi臋ciu stronach tekstu: Nie warto natomiast komplikowa膰 za bardzo wszystkiego. 馃槈
    My艣l臋, 偶e tekst powinien by膰 OBOWI膭ZKOWY dla os贸b, kt贸re napisa艂y na forum: „Mam 500$, wchodz臋 w opcje binarne, na pocz膮tek b臋d臋 gra艂 po powrocie z pracy, jak膮 strategi臋 polecacie?”
    Mo偶e zastanowi艂yby si臋, czy na pewno chc膮 straci膰 swoje pieni膮dze.
    Obrazowo pokaza艂 Pan nie tylko podstawy testowania strategii,
    ale r贸wnie偶 to ile zagro偶e艅 i pu艂apek szykuje dla nas rynek.
    Zbyt cz臋sto, czytaj膮c materia艂y uderza mnie w艂a艣nie brak wg艂臋bienia si臋 w temat. Wszystko traktowane jest powierzchownie, has艂owo. Byle kr贸tko, szybko – bo nikt nie b臋dzie czyta艂.
    I na efekty w postaci margin call, te偶 nie trzeba d艂ugo czeka膰.
    Wcale nie jest za d艂ugie.
    Wida膰 偶e lubi Pan to. A na dodatek, wie o czym m贸wi.
    Szacunek za po艣wi臋cony czas.

    • Dzi臋ki halftrader! 馃檪

      Zgadzam si臋 z Tym co napisa艂e艣. Nie bez przyczyny wi臋kszo艣膰 na rynku jest dawcami kapita艂u. Na rynkach finansowych nie ma darmowych obiad贸w w d艂ugiej perspektywie czasu. Dla wielu to tylko iluzja drogi na skr贸ty do zarobienia pieni臋dzy.

      Dobrego weekendu 偶ycz臋! 馃檪

  3. Wida膰 olbrzymi nak艂ad pracy, jestem pe艂en podziwu i dzi臋kuje za tak膮 ogromn膮 dawk臋 profesjonalnej wiedzy. Na bloga trafi艂em troszk臋 wczesniej ale jako艣 nie wczyta艂em si臋 w niego, teraz te 3 cz臋艣ci budowy strategi zatrzyma艂y mnie na d艂u偶ej. Czekam z niecierpliwo艣ci膮 na nowe wpisy i podcasty a przez ten czas nadrobie starsze 馃檪
    Pozdrawiam, dobra robota !

    • Hej!

      Maj膮c bardzo ograniczony czas, jak wi臋kszo艣膰 z nas, stawiam na najwy偶sz膮 jako艣膰 publikowanych materia艂贸w przede wszystkim. I ciesz臋 si臋, 偶e kto艣 to dostrzega, bo inaczej nie by艂oby sensu prezentowa膰 publicznie tych materia艂贸w. Dzi臋ki! 馃檪

      Wpis贸w blogowych b臋dzie niewiele p贸ki co, ale w tym roku co艣 powinno si臋 jeszcze pojawi膰. Co do zasady 鈥 je艣li b臋d膮 tre艣ci, kt贸re 艣rednio nadaj膮 si臋 na podcast, b臋d臋 w艂a艣nie publikowa艂 jako wpisy blogowe.

      Temat贸w i plan贸w jest za艣 u mnie na minimum dekad臋 do przodu. Ograniczeniem jest przede wszystkim zas贸b czasu.

      Pozdrawiam!

  4. Bardzo dobry artyku艂, wyja艣ni艂 mi kilka kwestii nad kt贸rymi si臋 zastanawia艂em, a propos optymalizacji. Jedna tylko uwaga, pierwszy warunek w pseudo kodzie trzeba poprawi膰, bo w tym momencie nigdy nie otworzymy drugiego kontraktu. Powinno by膰 raczej co艣 w stylu: je偶eli ilo艣膰 otwartych pozycji <2.

    • Odno艣nie optymalizacji to chc臋 zwr贸ci膰 raz jeszcze uwag臋 — nie wszyscy to robi膮 i r贸wnie偶 odnosz膮 sukcesy. Ale wiedz膮 dlaczego tego nie robi膮. 馃檪 Polecam tu ksi膮偶k臋 Perry Kaufmana: A Guide to Creating A Successful Algorithmic Trading Strategy. 殴le zrobiona optymalizacja jest niestety bardzo gro藕na. 馃檪

  5. Przeczyta艂em/obejrza艂em 3 cz臋艣ci, ale jak tu zacz膮膰 ? Co przeczyta膰 ? 呕eby samemu zrobi膰 wszystko od pocz膮tku ?

  6. Cze艣膰,
    Zdecydowanie najlepszy artyku艂 na jaki trafi艂em w polskiej cz臋艣ci sieci 馃檪
    Powodzenia w tym co robisz!
    Pozdrawiam,

    • Hej Systematic,

      Dzi臋ki za dobre s艂owo. Dla r贸wnowagi polecam jeszcze ten artyku艂, je艣li nie czyta艂e艣. Przeciwleg艂y biegun, 偶e tak powiem, je艣li chodzi o podej艣cie do rynku. 馃檪

      Pozdrawiam,
      Jacek

Napisz sw贸j komentarz