Portfele układane przez komputer- wywiad z Jackiem Lempartem, część 4

To już ostatnia część rozmowy z Jackiem, twórcą programu SYSTEM TRADER, choć mam jeszcze niedosyt i wiem, że wielu ciekawym tematów nadal nie poruszyliśmy, ale zostawiamy to na przyszłość.

   CZĘŚĆ 4: O naturze komputerowych strategii

Kat: Ciekawi mnie dlaczego do tych swoich strategii musiałeś stworzyć specjalnie swój własny program?! Przecież na rynku istnieje już ich kilka. Czym Twój się od nich różni? Jak został zbudowany?

Jacek:

Jest wiele powodów:

·       Niezależność. Początkowo tworzyłem oprogramowanie bez planu jego komercjalizacji. Korzystając wcześniej sporo z TradeStation wiem jak bardzo bałem się każdej nowej wersji, bo groziło to zaburzeniem tego co już miałem zbudowane. Robiąc swoje narzędzie jestem całkowicie niezależny od innych.

·       Brak ograniczeń. Robiąc coś w AmiBroker czy TradeStation często miałem problem z ograniczeniami platformy. Języki programowania są tam ubogie. Znakomicie widać to na przykładzie strategii AEM – nie jestem w stanie sobie nawet wyobrazić kodu jaki musiałbym stworzyć w np. AFL (język AmiBrokera), by osiągnąć ten sam efekt co w #ST. Jako programistę bardzo mnie irytował narzucony z góry model programowania jaki jest na gotowych platformach. Strategia AEM jest bardzo specyficzna i choć sama idea jest prosta, to nie jest ona trywialna w implementacji na poziomie kodu. Możliwość skorzystania z mocy pełnokrwistego języka programowania jak C# jest tu nieoceniona.

·       Pełna kontrola. Wszystko co znajduje się w aplikacji jest pod moją kontrolą i wiem jak działa. Niestety w AmiBroker zdarzało się, że nie byłem pewien jak coś funkcjonuje, a możliwości debugowania są tam prymitywne.

·       Specjalizacja. Gotowe platformy jak AmiBroker czy TradeStation są „do wszystkiego”. Daje to możliwość szybkiego prototypowania, ale też ma ograniczenia o których wspominałem. Tworząc swoje narzędzia od początku robię je do konkretnego celu. Dzięki temu mogę zejść na taki poziom szczegółowości, który ciężko osiągnąć w gotowych platformach.

·       Łatwość obsługi. Moje oprogramowanie może być wykorzystywane przez osoby bez technicznego zacięcia. Wszystko można wyklikać. Są to gotowe rozwiązania z których sam korzystam – robione przez inwestora dla inwestora. Końcowy użytkownik nie musi skupiać się na technicznych aspektach, czy tracić czas na kodowanie wszystkiego samemu – ma gotowe rozwiązanie.

Mówiąc przysłowiowo – ja również jem ciasteczka, które wypiekam. To powinno dawać użytkownikom takiego rozwiązania pewność co do jego jakości i przydatności. Co więcej – dokumentuję jego wykorzystanie na bieżąco w transparentny sposób.

Sam program oparty jest na języku C#. Wszystkie opisywane strategie ma już wbudowane, gotowe do użycia. Nie ma możliwości dodawania własnych kodów.

Nie mogę Cię nie zapytać o jedną ważną sprawę – co odpowiesz wszystkim tym, którzy mechaniczne strategie uważają za niewiarygodne, niestabilne czy przeoptymalizowane ?

To po kolei.

Czy strategie mechaniczne mogą być niewiarygodne? Oczywiście! Tak samo jak każdy dowolny produkt może być do kitu – ale to nie znaczy, że nie można zrobić czegoś sensownego. Zatem jeśli mam na tacy na przykład anomalię momentum, to została ona już prześwietlona przez wielu badaczy przede mną. Nie muszę odkrywać niczego nowego.

Co więcej – anomalia taka pomimo, że znana od wieków, opisywana od dekad, nadal działa. Mam zatem dowód na danych „out of sample”, na to, że rozwiązanie działa. Moja praca sprowadza się więc do tego, by na etapie jego implementacji niczego nie schrzanić.

Nie szukam przypadkowych wzorców i nie doszukuję się czegoś co nie ma sensownego uzasadnienia. Nie ma potrzeby bycia pionierem – wystarczy być rzetelnym rzemieślnikiem. Wolę podążać po utartych i sprawdzonych ścieżkach. Żal mi tych wszystkich co katują dane w poszukiwaniu „idealnego” rozwiązania, bo sam kiedyś przez to przechodziłem. Nie bez powodu mówi się, że torturując odpowiednio długo dane wyznają nam co tylko zechcemy.

Co do niestabilności. Strategie mechaniczne nie służą temu by idealnie zawierać transakcje na rynku, aby mieć maszynkę do robienia pieniędzy. Więcej – najbardziej przydatne anomalie rynkowe to takie, które mają wysoko zawieszoną poprzeczkę behawioralną. Premia za momentum występuje dlatego, że choć każdy je widzi, to nie każdy ma w sobie dyscyplinę i siłę, by po nią sięgnąć. No pain, no gain. Stosując dowolną strategię, bez względu czy jest mechaniczna czy nie, będą okresy w których będziemy wyglądać jak idioci. Zamiast szukać idealnego rozwiązania lepiej zdywersyfikować portfel i stosować kilka prostych strategii równocześnie.

Odnośnie optymalizacji – nie jestem jego fanem i mam proste rozwiązanie tego problemu, o którym wspominał u mnie w podcaście Rob Carver, profesjonalny quant z Londynu: zrezygnować z optymalizacji 🙂

Przykładowo strategia AEM nie była przeze mnie optymalizowana. Wiem w jakim zakresie działa momentum (są setki opracowań naukowych o tym) i jedyne co zmieniam to rzeczy typu wielkość portfela i ilość akceptowanego ryzyka. Nie szukam idealnych parametrów liczenia momentum bo niczego tu nie znajdę. Ta sama strategia może działać z tymi samymi ustawieniami na spółkach z NASDAQ-100, S&P/ASX-100, czy WIG. To stanowi o jej sile.

Niektórzy mnie za to krytykują, bo chcieliby „najlepsze” parametry na tacy. To droga na szafot – w szczególności w niedoświadczonych rękach. Sam znakomicie wielokrotnie opisywałeś pułapki z tym związane na łamach niniejszego bloga.

Strategia mechaniczna to sposób na metodyczne i powtarzalne podejście do inwestowania. Te same dane, te same decyzje. Poza tym o wiele łatwiej zweryfikować taką strategię niż rozwiązania dyskrecjonalne. Jeśli coś nigdy nie działało w przeszłości to jakim cudem ma zacząć nagle działać tylko dlatego, że się nam wydaje, że to fajny pomysł na zainwestowanie własnych pieniędzy?

W ogóle uważam, że przyczyną porażek większości inwestorów jest brak JAKIEJKOLWIEK strategii. Sorry – pytania w social mediach w stylu „co sądzicie o spółce X?”, „czy to już koniec spadków?” albo „jak wybór prezydenta USA wpłynie na rynki” to nie jest sposób na rozsądne inwestowanie! Fajnie sobie pogaworzyć dla rozrywki, ale to nie jest strategia!

Szczerze mówiąc to podziwiam też tych wszystkich inwestorów, co od rana do wieczora przerzucają się w social mediach komentarzami odnośnie „typów” inwestycyjnych, czy szerzej – zachowania rynku. Przytoczona przeze mnie strategia AEM może zająć nam kilkanaście minut w miesiącu. Zyskujemy nie tylko masę czasu, ale i spokoju ducha! Polecam by każdy inwestor przeliczył swoje zyski na stawkę godzinową. Czy zadawala ich jej wysokość? 🙂

Zdarzyło mi się, że publikując skład swojego portfela IKZE otrzymywałem komentarze w stylu „chłopie, ale nakupowałeś sobie śmieci”. 😀 I dowiaduję się na przykład, że ktoś ma „problem” ze spółką X, bo ma złe doświadczenia z przeszłości z nią związane. Później dziwią się, jak to jest możliwe, że „śmieć” rośnie.

Bardzo podobało mi się to co powiedział Tom Basso w rozmowie ze mną w ramach podcastu. Wychodzi on z założenia, że cena jest ostateczną daną, wypadkową działań wszystkich uczestników rynku, bez względu na stosowane przez nich metody i analizy. A zatem sensowne jest reagowanie na same jej zmiany i zrezygnowanie z próby jej przewidywania. Strategie mechaniczne są tu ogromną pomocą.

Na koniec tej naszej bardzo pouczającej rozmowy zapytam Cię jeszcze o jedną sprawę – co dalej? Jakie masz plany na najbliższą przyszłość? Tworzyć kolejne strategie czy zająć się ze spokojem inwestowaniem w te, które masz?

Osobiście nie zamierzam robić rewolucji na własnym rachunku, choć zmiany będę tam wprowadzał co pewien czas wraz ze zmianą sytuacji, moich potrzeb, oczekiwań i możliwości. Jestem jednak dość konserwatywny we wprowadzaniu nowości jeśli idzie o inwestowanie swoich pieniędzy.

Przykładowo pojawiają się nowe instrumenty na GPW w ramach kont IKE/IKZE w postaci ETFów – chcę z tego skorzystać i przy okazji pokazać innym jak to robię. Nie chcę dawać wprost gotowych rozwiązań do ślepego naśladowania, ale też chcę pokazać na realnych przykładach jak można inwestować.

W aplikacji #ST będą pojawiać się nowe strategie oraz funkcjonalności. Wszystko po to by każdy miał możliwość jak najlepszego dopasowania portfela do swoich potrzeb. Reaguję też na sugestie Użytkowników – w końcu to już nie jest rozwiązanie tylko dla mnie. 🙂

Bardzo Ci dziękuję za poświęcony czas. Mam nadzieję, że w nieodległej przyszłości ponownie pociągnę Cię za język i pogadamy o nowych odkryciach. Powodzenia w ich osiąganiu!

Również bardzo dziękuję za zaproszenie do dyskusji. Do usłyszenia. Wszystkiego dobrego! 🙂

***

—kat—

6 Komentarzy

  1. vaeta

    > Nie ma potrzeby bycia pionierem – wystarczy być rzetelnym rzemieślnikiem.

    O, fajnie ujęte imho najłatwiejsze (najlepsze) podejście.

  2. pit

    "nie jestem w stanie sobie nawet wyobrazić kodu jaki musiałbym stworzyć w np. AFL (język AmiBrokera), by osiągnąć ten sam efekt co w #ST"

    To miej więcej podstawowy kod.
    Nie wiem co tu można sobie wyobrażać. Konstrukcja cepa 🙂
    Natomiast jest podstawowy mankament w AB.
    Cieżko to skomercjalizowac i sprzedac jako "swój" produkt.

    SetBacktestMode( backtestRotational );
    SetOption("WorstRankHeld",1);
    SetOption("MaxOpenPositions", 1);
    SetTradeDelays(0,0,0,0);

    BuyPrice = C;
    SellPrice = C;

    mn = Month();
    monthendflag = mn != Ref(mn,-1);

    ROC_BIL = ROC(Foreign("BIL","C"), 12 );

    if ( Name() == "TLT" )
    Score = ROC_BIL;
    else
    Score = ROC(C, 12);

    PositionScore = IIf(monthendflag, 10000+Score, scorenoRotate);

    1. Jacek

      Nie wiem o jakiej strategii piszesz, ale z pewnością nie o AEM. 🙂

      1. pit

        Tak to nie jest gotowiec GEM stricte typu "copy and paste" 🙂
        Działac nie będzie w tym kontekście bo celowo zmieniłem kod by tak było.
        Kto chce to sobie może przystosować w prosty sposób.
        Przykład dla 12 miesięcznego momentum ma pokazywac tylko i jedynie poziom "skomplikowania" takiego kodu w AB.
        Nie ma tu też mowy o backtestowaniu by nie komplikować.
        Wymaga to z 50% wiecej linijek kodu , czyli niewiele.

        Można to zrobic nawet w excelu.

  3. Jacek

    Pit, ale tu nie jest mowa o strategii GEM, a o strategii AEM. To zupełnie inne światy, zwłaszcza jeśli idzie o implementację.

    Do GEM nie potrzebuję nawet AmiBrokera, żeby policzyć sygnały. Choć zupełnie inna kwestia to dostęp do solidnych danych sięgających więcej niż te 10-20 lat wstecz.

    1. pit

      OK.Rozminęlismy sie ze strategiami 🙂
      Potwierdzam , że skonstruowanie dobrej bazy to podstawa .
      Do AB robiłem i mam taka dla WIG20 typu "survivarship bias" od 1995r do testowania momentum.
      Zajęło to wiele wiecej czasu niz samo kodowanie strategii.

Dodaj komentarz

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

Proszę podać wartość CAPTCHA: *

Klauzula informacyjna

Administratorem Pani/Pana danych osobowych jest Dom Maklerski Banku Ochrony Środowiska S.A. („My” lub „DM BOŚ”) z siedzibą w Warszawie (ul. Marszałkowska 78/80, 00-517 Warszawa). Będziemy przetwarzać, Pani/Pana dane na potrzeby udzielenia odpowiedzi na Pani/Pana zapytanie, możliwości skorzystania z usługi oferowanej przez DM BOŚ, a także realizacji naszych prawnie uzasadnionych interesów, tj. rozpatrywania skarg oraz obrony przed roszczeniami. Ma Pani/Pan prawo dostępu do danych, żądania ich sprostowania, usunięcia, ograniczenia przetwarzania i przenoszenia. W dowolnym momencie może Pani/Pan także wnieść sprzeciw, z przyczyn związanych z Pani/Pana szczególną sytuacją, wobec przetwarzania Pani/Pana danych dla realizacji prawnie uzasadnionych interesów DM BOŚ. Może się Pani/Pan z nami skontaktować wysyłając e-mail na adres: makler@bossa.pl lub list na adres: ul. Marszałkowska 78/80, 00-517 Warszawa, dzwoniąc na infolinię pod numer + 48 225043104 lub odwiedzając jedną z naszych placówek (lista dostępna pod http://bossa.pl/dmbos/oddzialy/). Może Pani/Pan skontaktować z Inspektorem Ochrony Danych m.in. korzystając z e-mail: iod@bossa.pl lub listownie na nasz adres. Więcej informacji o przetwarzaniu Pani/Pana danych, czasie przechowywania, prawach i sposobach kontaktu znajduje się w naszej Polityce Prywatności.