Budujemy strategię inwestycyjną

O co w tym wszystkim w ogóle chodzi?

Założenia wstępne

  • Omówię podejście dla strategii krótkoterminowych (pozycje otwierane maksymalnie na kilka tygodni, np. swing trading)
  • Nie poruszam inwestowania długoterminowego czy pasywnego
  • Nie poruszam strategii generowanych (np. programowanie genetyczne), czy opartych o inne metody sztucznej inteligencji

Czy możemy być lepsi od profesjonalistów?

  • Musimy grać w grę, gdzie mamy szansę wygrania (czyli np. nie HFT)
  • Kontrolujmy to, co możemy kontrolować, czyli naszą strategię, zarządzanie ryzykiem; Rynku nie możemy kontrolować -- bez sensu więc tracić energię na przewidywanie jego ruchów
  • Wyższe interwały są "łatwiejsze" (np. daily vs 5 min)
  • Aby był sens angażowania własnego czasu musimy mieć premię ponad to, co oferuje oddanie kapitału w zarządzanie komuś innemu
  • Na szczęście są przesłanki do tego, by wygrać z profesjonalnymi graczami

Wyniki CTA w USA

(źródło: IASG)

  • Systematic Trader Index, 1977-2018: 22.02%
  • Discretionary Trader Index, 1989-2018: 17.80%
  • Ostatnia dekada znacznie trudniejsza, uśrednione wyniki poniżej 5%
  • W roku 2017 pierwsza dziesiątka najlepszych funduszy osiągnęła stopę zwrotu pomiędzy 21% a 48%
  • Osiągnięcie takich wyników jest jednak bardzo trudne do powtórzenia w kolejnych latach
  • Wniosek: regularne zarabianie ponad 15% rocznie plasuje nas pośród najlepszych profesjonalistów, absolutna I liga światowa

W czym możemy być lepsi od profesjonalistów?

  • Możemy pozwolić sobie na większe fluktuacje wartości portfela
  • Przewaga mniejszego kapitału (np. handel kontraktami na sok pomarańczowy, szybsza zmiana pozycji w portfelu, etc.)
  • Brak opłat (np. w USA model 2/20)
  • Brak obowiązków regulacyjnych

Różne podejścia do inwestowania

  • Intuicyjne
  • Algorytmiczne
  • Hybrydowe (połączenie obu metod)

 

W każdym przypadku należy wypracować przewagę rynkową, by móc zarabiać. Podejście intuicyjne jest tylko iluzorycznie prostsze od pozostałych. Intuicja, w naszym życiowym rozumieniu, na rynku finansowym nie prowadzi zwykle do dobrych decyzji.

Po co potrzebna jest strategia?

  • Większość inwestorów traci
  • Trading to bardzo trudna i wymagająca profesja -- strategia pomaga działać według planu
  • Iluzja wykorzystania życiowego doświadczenia w podejmowaniu decyzji inwestycyjnych ad hoc
  • Intuicja jest dobra w sytuacjach, gdzie wielokrotnie podejmowaliśmy podobną prostą decyzję
  • Intuicja na rynku finansowym to synonim ogromnego doświadczenia
  • Na rynku musimy myśleć w kategoriach prawdopodobieństw i zarządzać ryzykiem

Intuicja (1)

Kij baseballowy i piłka kosztują razem $1.10.

 

Sam kij kosztuje jednego dolara więcej niż piłka.

 

Ile kosztuje piłka?

Intuicja (2)

  • Jeśli ktoś miałby odpowiedzieć na to pytanie, nie mając świadomości tkwiącego w nim haczyka, odpowie z dużym prawdopodobieństwem bez głębszego namysłu, że piłka kosztuje 10 centów
  • Dlaczego? Bo z natury, na drodze ewolucji, nasz mózg jest leniwy -- nie uruchamia za każdym razem maszynerii analitycznej (SYSTEM 2), tylko stara się wykorzystać heurystykę (SYSTEM 1)
  • Odpowiedź udzielamy nieświadomie, o ile nie zmusimy się do analizy, uruchamiając SYSTEM 2.
  • Tymczasem prawdziwa odpowiedź na tę zagadkę to oczywiście 5 centów.

     

Inteligencja

  • Błędna odpowiedź na tę zagadkę bynajmniej nie wskazuje, że komuś brakuje inteligencji.
  • Większość studentów MIT, Harvard czy Princeton popełniła na tym banalnym zadaniu błąd!
  • Na rynkch finansowych nie musimy dysponować ponadprzeciętną inteligencją
  • Inteligentni ludzie tracą pieniądze równie często jak reszta populacji
  • To co odróżnia zarabiających od tracących, to posiadanie rzetelnego planu działania i dyscyplina w jego realizacji
     

Podejście algorytmiczne

  • Jest to zbiór jednoznacznych reguł
  • Przykład: kup 100 akcji spółki X po cenie otwarcia, jeśli poprzednia cena zamknięcia jest większa niż 5 dni temu
  • Algorytm odpowiada jednoznacznie na pytanie: co, kiedy, ile kupić/sprzedać

 

 

Zalety algorytmów (1)

  • Precyzja i powtarzalność -- transakcje zawierane w oparciu o jednoznaczne reguły 
  • Obiektywizm decyzji
  • Łatwość weryfikacji poprzez testy na danych historycznych (backtesting) -- uwaga na curve fitting
  • Łatwość dywersyfikacji (wiele strategii & rynków)
  • Brak potrzeby ciągłego śledzenia rynków (możliwa automatyzacja)

Algorytmy, ale jakie?

  • PROSTE!
  • Decyzje powinny być oparte o cenę, jako tzw. ostateczną zmienną zależną
  • Nie ma sensu próba predykcji -- wystarczy reagować na zmiany cen
  • Newsy, gadające głowy? Nie ma sensu, bo to próba predykcji -- wystarczy reagować na zmiany cen
  • AF? Zbytnia komplikacja. Vide: Żółwie

Wady algorytmów

  • Emocje nadal są częścią procesu inwestycyjnego
  • Wymagana chociaż podstawowa wiedza z zakresu programowania i analitycznego myślenia
  • Łatwość w "oszukiwaniu" podczas budowy strategi celem polepszenia wyników (nadmierna optymalizacja, nierealne założenia itp.)
  • Przeszłość to nie przyszłość :-)

 

Wiele strategii

  • Jedna strategia to za mało
  • Dokładając do portfela kolejne strategie, możemy zwiększać zysk, zmniejszając ryzyko
  • Portfel I
    • RTY
    • CAGR: 50%, maxDD: 30%
  • Portfel II
    • RTY + ES + SF + K + S
    • CAGR: 100%, maxDD: 20%

Wiele dróg do sukcesu (1)

  • Nie istnieje jeden najlepszy proces budowy nowej strategii -- podobnie z każdym biznesem -- nie ma jednego prawdziwego przepisu na sukces w biznesie
  • Musimy budować strategie w oparciu o sprawdzony proces
  • Proces musi być dopasowany do naszych preferencji
  • Tu pokażę proces zbliżony do metodologii Roberta Pardo i Kevina Davey + własne doświadczenie
  • W podcaście rozmawiałem z różnymi traderami, jak Unger, Stridsman, Basso, Kaufman, Raschke --> każdy ma swój indywidualny styl

Wiele dróg do sukcesu (2)

  • Korzystać z testów Walk-Forward, czy nie?
  • Optymalizować strategię (ile parametrów), czy nie?
  • Korzystać z analizy Monte Carlo, czy nie?
  • Generować strategie przy pomocy algorytmów genetycznych, czy nie?
  • Ile potrzebujemy danych historycznych (sample size) i jak z nich korzystać?
  • Strategie muszą mieć logiczne uzasadnienie, czy nie?
  • Czy liczba stopni swobody strategii ma znaczenie?
  • Czy strategia powinna generować zyski na jednym, czy wielu rynkach?

Proces budowy i cykl życia

  1. Cel

  2. Pomysł

  3. Implementacja i testy na małym zbiorze danych

  4. Rozbudowane testy (np. Walk-Forward, Monte Carlo)

  5. Inkubacja/handel papierowy

  6. Wdrożenie na rynek i konserwacja

  7. Wycofanie z rynku

 

Krok 1: określenie celu

  • Ciężko dojechać do celu, bez jego wyznaczenia

  • Musi być realistyczny

  • Gdybym miał osiem godzin na ścięcie drzewa, spędziłbym sześć na ostrzeniu siekiery :-)

  • Przykład: chcę zbudować strategię na kontrakt terminowy ES, CAGR=50%, maxDD<25%. Daję sobie na to 2 tygodnie czasu.

 

Krok 2: pomysł na strategię (1)

  • Musimy znaleźć sposób, który posłuży do budowy strategii

  • Wiele źródeł pomysłów:

    • własne obserwacje rynku
    • książki/magazyny/internet
    • inni traderzy
    • inne strategie
    • generatory (np. algorytmy genetyczne)

 

Krok 2: pomysł na strategię (2)

  • Twórzmy na bieżąco katalog pomysłów w postaci różnych filtrów, wejść/wyjść, metod zarządzania pozycją czy całych systemów

  • To pozwoli nam później w prostszej budowie i modyfikacji systemów w przyszłości

  • Ogólna zasada: dążmy do prostych rozwiązań (vide Brzytwa Ockhama)

Krok 2: pomysł na strategię (3)

  • Pomysł może ewoluować w czasie implementacji, przy próbie różnych metod wejścia/wyjścia z pozycji

  • Próba różnych metod wejścia w rynek, np.

    • oparte na wybiciach (breakout)

    • oparte na powrocie do średniej (mean reversion)

    • formacje

  • Próba różnych metod wyjścia z rynku, np.

    • kasowanie zysków (Profit Target)

    • kasowanie strat (Stop Loss)

    • formacje

    • stopy czasowe

    • Stop & Reverse (cały czas w rynku --> zamknięcie pozycji oznacza otwarcie przeciwnej)

 

Krok 3: implementacja (1)

  • Zapisanie pomysłu w postaci kodu języka

  • Testy wstępne:

    • wykorzystujemy tylko 10-30% danych historycznych (!!!)
    • możemy modyfikować kod i ponownie testować, modyfikując wejścia/wyjścia/filtry/zarządzanie pozycją itd.
    • Możemy zmieniać rynki i ramy czasowe (dzienne, intraday
    • Testy na tym etapie są bardzo proste (brak WF, MC, etc.)
    • Realne założenia (uważać na np. ceny zamknięcia, zlecenia z limitem, testowanie inside bar, poślizgi, etc.)
    • Lepiej odrzucić dobry pomysł na tym etapie, niż stracić kapitał na złym pomyśle

 

Krok 3: implementacja (2)

  • Uważać na "oszukiwanie" przez "nadużywanie" danych historycznych

  • Optymalizacja powinna generować zyski na większości przypadków (np. 80%)

  • Dążyć do minimalizacji liczby parametrów i liczby iteracji (kroków parametrów)

  • Większość strategii i tak nie przejdzie tych testów -- musimy być cierpliwi, pracowici i zorganizowani!

  • Uważać na jakość danych (scalanie kontraktów terminowych, CFD, ...)!

 

Krok 4: testowanie (1)

  • Mamy gotową strategię, która przeszła testy wstępne na niewielkim zbiorze danych

  • Wykorzystujemy pozostałe dane (można zostawić kilka miesięcy na symulowny handel papierowy)

  • Na tym etapie nie możemy modyfikować strategii, jeśli wynik przeprowadzonych testów okaże się niesatysfakcjonujący!!!

 

Krok 4: testowanie (2)

IS (100%)

Live

Wykorzystane 100% danych historycznych (In Sample, IS). Zdecydowanie nie polecane -- model jest budowany i optymalizowany, bez możliwości testu.

 

Problem: model niemal na pewno jest przeoptymalizowany, jeśli był poddawany procesowi optymalizacji.

Krok 4: testowanie (3)

Wykorzystane 70% danych historycznych do budowy i optymalizacji (In Sample, IS), oraz 30% do weryfikacji (Out of Sample, OOS).

 

Problem: "spalamy" dużo danych na budowe i optymalizację, mało mamy wyników z bloku danych OOS. Niektórzy tak robią (vide Andrea Unger), ale niektórzy idą krok dalej...

IS (70%)

OOS (30%)

Krok 4: testowanie (4)

Walk Forward Testing -- pozwala na dwie rzeczy:

(1) Więcej danych OOS, więcej transakcji "testowych"

(2) Cookresowa reoptymalizacja modelu

 

Problem: "oszukując" wciąż możemy przeoptymalizować model

IS

OOS

IS

OOS

IS

OOS

Krok 4: testowanie (5)

  • Wielość metod testowania :-)
  • Nie możemy budować i optymalizować strategii na całym zbiorze danych
  • Dane In Sample (IS) - optymalizacja, Out Of Sample (OOS) - test, zwykle w proporcji: IS=60-80%, OOS=20-40%
  • Funkcja celu, czyli wg. czego chcemy optymalizować strategię? Nie ma jednoznacznej odpowiedzi...
  • Test Walk-Forward pozwala na cookresową reoptymalizację parametrów, oraz na więcej transakcji ze zbioru OOS
  • Nie optymalizować proporcji IS/OOS!
  • Ograniczyć liczbę parametrów w procesie optymalizacji -- np. przyjąć regułę, że na każdy parametr musimy mieć minimum 50 transakcji z bloku OOS (a więc np. 3 parametry = min. 150 transakcji OOS)
  • Ograniczyć liczbę iteracji! -> lepiej mieć gorsze wyniki, ale bliższe prawdy...
  • IS: minimum 126 dni (pół roku); OOS: minimum 63 dni (3 miesiące)
  • Reoptymalizacja co kilka dni: gonienie za swoim ogonem... ;-)

 

 

Krok 4: testowanie (6)

  • Po satysfakcjonujących testach WF można przeprowadzić analizę Monte Carlo, mającą na celu oceny wpływu losowości na zbudowany model
  • Wynikiem analizy MC jest wiele wyników, a nie tylko jeden z backtestu
  • Wiele odmian MC, np. ciąg transakcji historycznych jest wielokrotnie mieszany, budując nowe ciągi transakcji
  • Dodatkowo można wprowadzać np. losowe zmiany w danych wejściowych strategii
  • Dzięki analizie MC można szacować np. prawdopodobieństwo osiągnięcia określonej stopy zwrotu (CAGR), maksymalnego obsunięcia kapitału (maxDD) czy bankructwa (risk of ruin)

 

 

Krok 4: testowanie (7)

  • Analiza MC nie jest lekiem na wszystkie błędy popełnione w trakcie budowy strategii
  • (1) Jeśli transakcje są między sobą zależne -> analiza MC usuwa te zależności
  • (2) Jeśli transakcje użyte w MC są wynikiem przeoptymalizowania strategii, wynik MC jest bez znaczenia: śmieci na wejściu -> śmieci na wyjściu

 

Analiza MC zakłada, że przewaga rynkowa testowanej strategii nie uległa (znaczącej) zmianie! Jeśli to założenie nie jest spełnione, sugerowanie się wynikami MC jest bez sensu!

 

 

Krok 4: testowanie (8)

  • Świetnie jeśli strategia działa na więcej niż jednym rynku, do tego na różnych ramach czasowych
  • Co do zasady, dobrze, jeśli strategia generuje nawet małe zyski na rynkach silnie skorelowanych (np. strategia na ES, powinna generować jakiekolwiek zyski na rynkach pokrewnych, jak RTY, EMD, Y)
  • Nie ma sensu wymagać by jedna strategia działała jednak na każdym rynku!
  • Wyjątkiem jest tu  na przykład długoterminowe podążanie za trendem (long-term trend following), tam jednak kluczowa jest szeroka dywersyfikacja portfela

Krok 4: testowanie (9)

  • Robert Pardo proponuje, aby nowo zbudowaną strategię poddać tzw. procesowi Big Leap -- najlepiej jeszcze przed testami Walk Forward
  • Większość strategii, która przechodzi taki test, dobrze rokuje na dalszych etapach testów

 

  • Krok 1

 

 

 

  • Krok 2

IS (50%)

IS (50%)

OOS (50%)

OOS (50%)

Krok 4: testowanie (10)

 

Ogólna zasada analizy wyników backtestu:

 

Jeśli coś wygląda zbyt dobrze, to prawdopodobnie tak jest. :-)

 

Na prawdę jest wiele sposobów na to, by testy wyglądy lepiej niż rzeczywistość. :-)

Krok 5: handel papierowy (1)

  • Jeśli wyniki testów są satysfakcjonujące, moża przejść do handlu papierowego
  • Okres: od miesiąca do roku
  • Co to są satysfakcjonujące wyniki?

 

Na to pytanie nie ma jednoznacznej odpowiedzi. Może być np. założenie odpowiedniego poziomu CAGR, maxDD, MAR, RoR, stopień korelacji z innymi strategiami w porfelu, itd., itp.

Krok 5: handel papierowy (2)

  • Pozwala na ochłonięcie przed handlem na realnym rynku
  • Pozwala uniknąć pewnych błędów, np. zbytniego przeoptymalizowania czy efektu hindsight bias
  • Nie wykryjemy na tym etapie jednak wszystkiego, np. założen co do poślizgów cenowych czy realizacji zleceń (vide: transakcje po cenie zamknięcia)

Krok 6: wdrożenie

  • Strategia przeszła cały proces testów, oraz wygenerowała satysfakcjonujące wyniki na nowych danych w handlu papierowym -- wchodzimy nią na rynek z realnym kapitałem
  • Można zautomatyzować działanie strategii (pomocne zwłaszcza przy danych intraday)
  • Strategia musi być regularnie monitorowana (w niektórych przypadkach reoptymalizowana)
  • Strategia powinna być dobrze wkomponowana w portfel strategii (dywersyfikacja i zarządzanie wielkością pozycji)

Krok 7: wycofanie z rynku (1)

  • Jeszcze przed wdrożeniem strategii do handlu musimy posiadać plan postępowania, gdy strategia przestaje spełniać nasze oczekiwania (np. gdy osiągnie poziom 1.5 * maxDD)
  • Naturalne jest, że strategia wraz z biegiem czasu ulega "degradacji" i dobrze jest być przygotowanym na moment śmierci każdej strategii

Krok 7: wycofanie z rynku (2)

  • Ignorowanie złych wyników strategii nie jest dobrym pomysłem :-)
  • Można czekać, aż strategia wróci "do formy" -- różnie z tym bywa :-)
  • Uważać na modyfikacje! (hindshight bias -- poprawiamy coś, żeby wyniki historyczne wyglądały lepiej)
  • Osobiście preferuję zastąpienie strategii przez zupełnie nowe rozwiązanie

Narzędzia do projektowania strategii

  • TradeStation
  • TraderStudio
  • MultiCharts
  • Trading Blox
  • StratOpt (Walk Forward dla TradeStation)
  • NinjaTrader
  • AmiBroker
  • Market System Analyzer (MSA)
  • Języki programowania ogólnego przeznaczenia (Java, C#, Python, C++, Visual Basic, Scala, ...)

Referencje