piątek, 23 grudnia 2011

Alchemia systemów

Alchemia systemów


 Tekst ukazał się wcześniej w magazynie Rynek Terminowy nr. 7/8 (139/140) lipiec/sierpien 2002

 
Projektowanie systemu transakcyjnego zazwyczaj rozpoczyna się od poszukiwania punktu zaczepienia, bazy całego algorytmu i w przeważającej części przypadków powstaje ona w wyniku dłuższych lub krótszych obserwacji. Ma to swoją logikę, ale (!) zawęża znacznie zakres poszukiwań. Pomimo że budowa systemu transakcyjnego często jest oparta na założeniach technicznych, nie znaczy to wcale, że tak musi być zawsze.
Tu tkwi podstawowa różnica pomiędzy spekulacją systemową a techniczną: często założenia obydwu strategii mogą być diametralnie różne, bo nie wszystkie zależności rynku muszą być sygnalizowane przez formacje, wzory lub wskaźniki. I chociaż w ogromnej części obydwie dyspliny nakładają się na siebie i uzupełniają wzajemnie, nie możemy bezkrytycznie przyjąć, że się w całości pokrywają. Obydwie metody mają swoje niedostatki, dlatego wybór ich powinien być kwestią indywidualną, opartą bardziej na warunkach spekulacji (wielkość kapitału, odporność psychiczna, oczekiwany zysk, zdolność akceptacji ryzyka) niż na jakichkolwiek ocenach, bo te zawsze będą subiektywne.
Jako przykład innego podejścia do problemu użyjemy w tym artykule zależności pomiędzy kontraktem 30 letnich obligacji USA T-Bonds (US) w odniesieniu do innych instrumentów. Do analizy użyjemy notowań ciągłych (Back-Adjusted Continuous), przez co zakres czasowy modelu możemy swobodnie rozszerzyć do niemalże 14 lat wstecz (początek notowań – 4 styczeń 1988 roku).
Kiedy otworzymy już wykres w TradeStation2001i zastanówmy się nad ewentualnymi powiązaniami tego kontraktu. I tak, ponieważ obligacje długoterminowe są tradycyjnie bezpiecznym instrumentem inwestycyjnym, konkurować będą z innymi, bardziej ryzykownymi, takimi jak np. akcje, przez co również mogą być rownież zależne od notowań walut. Ale tu narazie jesteśmy tylko przy jednej części ekonomii. Dodatkowo możemy spodziewać się powiązań z kontraktami “antyinflacyjnymi” jak np. złoto czy srebro. To jest punkt wyjścia naszych poszukiwań. Teraz pozostaje zbadać, czy nasze założenia są słuszne a jeśli tak, to czy jesteśmy w stanie wykorzystać je do naszych celów, jako że nie wszystkie zależności występują z wystarczającą regularnością i mogą generować zyski.
W pierwszej fazie dokładamy do wykresu kolejno: indeks S&P500 jako wykładnik notowań rynku akcji, kontrakt na japoński jen (JY) oraz kontrakty na metale szlachetne (srebro i złoto). Za każdym razem badamy korelację przez umieszczenie w planszy wskaźnika “Correlation” i porównujemy wyniki na wykresach dziennych, następnie na miesięcznych.
Prezentują się one następująco:
      zolty_znacznik.gif z S&P500 – korelacja w zakresie od –0.44 do + 0.52
      zolty_znacznik.gif z japońskim jenem – korelacja w zakresie od –0.44 do 0.44
      zolty_znacznik.gif z kontraktem złota – korelacja w zakresie od –0.28 do 0.28
      zolty_znacznik.gif z kontraktem srebra – korelacja w zakresie od –0.60 do 0.2

Porównując wyniki możemy zaobserwować że do naszych celów najlepiej będzie nadawać się kontrakt srebra, ze względu na stosunkowo głęboką zależność negatywną. Dodatkowo złoto jako wiodący metal szlachetny jest za bardzo “polityczne” – narażone na wpływ mediów, podczas kiedy srebro jest dużo bardziej stabilne.
Teraz kiedy znaleźliśmy zależność musimy zbudować algorytm który porówna odchylenie ceny jednego kontraktu względem drugiego. Jak ? Tu z pomocą przychodzą oscylatory, jako że właśnie one sygnalizują nam względne wychylenia kursu. Możemy użyć wielu z nich. Dla uproszczenia kodu Easy Language posłużymy się RSI (Relative Strenght Index). Będziemy kupować, jeżeli RSI srebra wskaże na wyprzedaż a układ średnich ruchomych o krótkim okresie (2,14) sygnalizuje krótkoterminowy trend zniżkowy i odwrotnie – będziemy sprzedawać jeśli oscylator wskaże wyprzedaż w połączeniu ze średnimi o tym samym okresie wskazującymi krótkoterminową zwyżkę. EL kod do tej strategii będzie wyglądał następująco:
  Inputs: OscLen (14), Len (14);

If RSI(Close of Data2, OscLen ) < 50
and Average(Close, 2) < Average (Close, Len) then buy at open;

If RSI(Close of Data2, OscLen) > 50
and Average(Close, 2) > Average (Close, Len) then sell at open;

Ponieważ system w założeniu ma być systemem pozycyjnym konstruując go dodamy do niego ATR (5) stop, choć jeśli nasze obserwacje są słuszne powinien przynosić zysk również w połączeniu z innymi. Po odjęciu 60$ od każdej transakcji (10$ - opłata brokerska, 50$ - poślizg/slippage) otrzymujemy taki wynik:

      alchemia1.jpg

Z czego: 70 K pochodzi z kupna (wobec 135 K zysku całkowitego, przy wskaźniku zyskowności 2.09), natomiast 22 K pochodzi ze sprzedaży (przy 93 K zysku całkowitego, wskaźniku zyskowności 1.31). Pomimo że wyniki uzyskiwane z krótkich pozycji nie wyglądają rewelacyjnie, dla nas istotne jest to że system potrafi na nich zarabiać. T-Bonds są od 14 lat w długoterminowym trendzie wzrostowym i dlatego wiele systemów “omija” krótkie pozycje żeby uzyskać lepszy wynik. W naszym przypadku stosunek transakcji zyskownych w obydwu przypadkach wynosi ponad 60%, dlatego jeśli kontrakt zmieni kierunek w “dużym obrazie” możemy spodziewać się że nasz system będzie wciąż zyskowny. Zanim odczytamy dokładniejszą analizę strategii spójrzmy na wykres linii zysku (equity line), gdyż jej wygląd da nam pobieżne wyobrażenie o regularności cyklów, na którym opiera się system:


      alchemia2.jpg


Z wykresu widać, że przyrost zysku jest regularny, a obsunięcia są w krótkim czasie kompensowane przez serie zysków, tworzących nowe szczyty (peaks – zielone punkty wykresu). W stosunku do całości okresy neutralne (flat periods) są stosunkowo krótkie. W przedstawionym okresie czasu strategia miała dwa lata strat: 1990 (8,300$) i 1993 (6,400$), przy czym każdy następujący rok kompensował straty i podnosił linię zysku do nowych poziomów – zysk za rok 1991 wyniósł 24,337$, za rok 1994 - 8,900$. W tym punkcie możemy uznać, że system opiera się na słusznych założeniach i wykorzystuje cykle pojawiające się regularnie w dłuższym okresie czasu, dlatego też prawdopodobieństwo kontynuacji tego cyklu jest wysokie, ale nie znaczy to bynajmniej że jest pewne jak wszystkie metody spekulacji. Przepraszam z góry profesjonalistów za tą uwagę, ale często mam okazję poznawać nowych adeptów rzemiosła szukających absolutnego “pewniaka”. Często odnoszę te pragnienia do średniowiecznych poszukiwań kamienia filozoficznego którego, jak wiemy, nigdy nie odnaleziono.
Następnie musimy poznać ryzyko wynikające z użycia zmiennych w naszym kodzie. Przyjęcie standardowych długości cyklów dla RSI (14) i tej samej wartości dla długiej średniej niejako automatycznie odsuwa niebezpieczeństwo naginania wartości zmiennych (curve fitting) ale go nie likwiduje – zawsze mogliśmy po prostu szczęsliwie trafić. Testujemy zatem różne długości cyklów: w naszym przykładzie użyjemy zakresu od 8 do 20. Wykres optymalizacji przedstawia się następująco:


      alchemia3.jpg


Z zestawienia widać że system osiąga najlepsze wyniki przy użyciu dłuższych cykli, ale – jest zyskowny w całym zakresie. Spadek zyskowności przy użyciu krótkich cykli nie jest dla nas zagrożeniem; zbyt niskie wartości RSI i średniej wywołują zbyt wysoką “czułość” wskaźników, co powoduje powstawanie dużej liczby fałszywych sygnałów. Ważnym również dla nas jest fakt, że przyjęte standardowe wartości średnich nie generują największego zysku, najlepszy wynik osiągany jest dla RSI(16) i MA(12). Natomiast lekkie odchylenia od przyjętych arbitralnie wartości nie zmieniają wyniku w sposób znaczny (od 75K$ do 102K$) dlatego też mamy podstawy przyjąć, że skalkulowany przez nas zysk jest wysoce prawdopodobny do osiągnięcia.
Kiedy ryzyko zmiennych jest zminimalizowane przyjrzyjmy się charakterystyce systemu opisanej przez analizę programu “Trade Station”:


      alchemia4.jpg

Ponieważ program ma szerokie możliwości w zakresie analizy systemów transakcyjnych i opis ich byłby materiałem na dużo szersze opracowanie, skoncentrujmy się na kilku wybranych wielkościach. Jednymi z najważniejszych są tutaj wartości skorygowane zysku netto, brutto i strat brutto (Adjusted - Net Profit, Gross Profit, Gross Loss). Bazując na charakterystyce strategii program powiększa straty i pomniejsza zyski, pokazując prawdopodobne najgorsze wyniki jakich możemy się spodziewać. W naszym przypadku jest to wciąż zysk porównywalny do wielu publikowanych systemów dla Bonds (57,162$), dlatego wynik wygląda zachęcająco. Wielkość K Ratio opisująca stosunek osiąganego zysku w odniesieniu do przyjętego ryzyka na przestrzeni całego okresu testu wygląda również atrakcyjnie (3.83). Indeks RINA wynosi 53.34 (umowny poziom skuteczności rozpoczyna się od 30). Analiza skuteczności otwarcia pozycji i ich zamknięcia (Average Efficiency Entry, Exit) wynosi odpowiednio 54.13% i 60.26%. Jak na jeden z najbardziej popularnych kontraktów na świecie, całkiem niezły wynik, zwłaszcza że zmienność czołowych kontraktów amerykańskich jest dużo wyższa w porównaniu z tymi poziomami, z jakimi mamy do czynienia w Polsce.
Na zakończenie tej skróconej analizy pozostaje jeszcze jedna kwestia, według mnie jedna z najważniejszych, a mianowicie analiza obsunięć. Maksymalne otwarte obsunięcie (Maximum Intraday Drawdown) wynosiło aż 22,687$ ale proszę pamiętać że to tylko jedna z wielkości statystycznych. Tak jak w przypadku analizy zyskowności użyliśmy wykresu linii wzrostu, tak równie obrazowym dla rozkładu obsunięć jest oddolny rozkład obsunięć (Underwater Equity Curve). Dla naszego systemu wygląda on tak:


      alchemia5.jpg


Jak widać z wykresu największe otwarte obsunięcie miało miejsce we wrześniu 1990 roku, a więc prawie 12 lat temu. Natomiast średnie obsunięcie (Average Dradown) wynosi jedynie (1,513$). Największa pojedyncza strata wyniosła jedynie (5,031$), średnia strata za cały okres (1,720$). Najdłuższa sekwencja stratnych transakcji wynosiła 6 strat na ogólną sumę (11,987$) ale zdarzyła się to tylko raz, i to ponad dziesięć lat temu. Natomiast największa część obsunięć przypada na sekwencje pojedyncze (aż 30) i dwukrotne (11). Analiza wykresu rozkładu obsunięć daje nam jeszcze jedną ważną informację: w miarę upływu czasu obsunięcia stają się coraz płytsze i coraz bardziej regularne w stosunku do nowych szczytów zysku kumulowanego. Zwłaszcza od 1997 roku system działa nadzwyczaj regularnie. Ponieważ ostatnie 5 lat to okres dość burzliwych zmian na rynku, mamy całkowicie podstawę zakładać, że system będzie pracował w przyszłości. Prawdopodobieństwo jest wystarczająco wysokie.
Powyższa analiza jest jedynie przykładem (i to skróconym) budowania skutecznych systemów transakcyjnych. Algorytm jest stosunkowo prosty do opisania w języku Easy Language, a zależność powszechnie znana. W rzeczywistości wiele koncepcji jest o wiele bardziej rozbudowanych, natomiast sama analiza również bardziej złożona. Mimo wszystko jak widać, wciąż istnieją proste metody spekulacji, które nie mają się czego wstydzić w konfrontacji z innymi, o ile budowa ich oparta jest na zrozumieniu działania spekulacji systemowej a założenia i spostrzeżenia właściwie realizowane.

Brak komentarzy:

Prześlij komentarz