Więcej testów szerokości rynku - czyli jak odczytywać długoterminowe trendy

    Szerokość rynku to, moim zdaniem, wskaźnik, który jest często niedoceniany przez traderów i inwestorów giełdowych. W uproszczeniu odnosi się do liczby spółek, które w ostatnim czasie notują wzrosty. Zdrowa hossa charakteryzuje się tym, że większość spółek znajduje się w trendzie wzrostowym. Z kolei sytuacja, w której indeks "ciągnięty" małą ilością spółek (a większość spada), może sygnalizować zbliżający się koniec hossy. Analogicznie, podczas bessy rosnąca liczba spółek notujących wzrosty może wskazywać na początek długoterminowych wzrostów.

    Musimy tylko zdecydować jak dokładnie mierzyć trend oraz jaki procent spółek powinien znajdować się w trendzie wzrostowym, aby hossa była uznawana za "stabilną". We wcześniejszych analizach korzystałem z prostego wskaźnika Min-Max, przyjmując założenie, że co najmniej 50% spółek musi spełniać ten warunek. Nawet tak nieskomplikowane kryteria pozwalają generować sygnały dla indeksu WIG i osiągać lepsze wyniki niż strategia buy-and-hold. Poniżej zamieszczam przykładowy wykres "kapitału", jaki uzyskałby portfel trzymający indeks WIG w okresach, gdy hossa była uznawana za niezagrożoną: szerokość rynku

    Oczywiście Min-Max to tylko jedna z metod. W tym wpisie przyjrzę się kilku innym wskaźnikom:

  1. Cena vs cena: porównanie obecnej ceny z ceną sprzed X dni (wartość X jest optymalizowana). Jeśli aktualna cena jest wyższa, uznajemy spółkę za znajdującą się w trendzie wzrostowym.
  2. Cena vs SMA: porównanie ceny bieżącej z wartością średniej kroczącej (sprawdzam różne długości średnich).
  3. Min-Max: ponownie testuję różne długości dla tego wskaźnika.
  4. Nachylenie regresji liniowej: obliczam regresję liniową dla ostatnich X punktów i sprawdzam nachylenie w porównaniu z dniem poprzednim. Jeśli nachylenie rośnie, spółka jest w trendzie wzrostowym.
  5. Cena vs regresja liniowa: porównanie ceny z regresją liniową wyznaczoną dla ostatnich X dni.
  6. Nachylenie regresji sześciennej: podobnie jak w przypadku regresji liniowej, ale uwzględniam nachylenie regresji sześciennej.
  7. Cena vs regresja sześcienna: porównanie ceny z regresją sześcienną za ostatnie X dni.
  8. Nachylenie regresji kwadratowej: analiza nachylenia regresji kwadratowej dla ostatnich X dni.
  9. Cena vs regresja kwadratowa: sprawdzam, czy cena jest powyżej regresji kwadratowej za ostatnie X dni.

Dla każdego wskaźnika zbadam optymalną długość oraz minimalny procent spółek w trendzie wzrostowym. Testowany okres to grudzień 2014 - grudzień 2024. W obliczeniach uwzględniam "karę" w wysokości 1% za każdą zmianę kierunku.

Jak czytać wyniki?

    Jeśli dla wskaźnika "Wskaźnik" przyjmiemy "Ilość sesji" jako ilość sesji oraz "Odsetek spółek" jako minimalny odsetek spółek w trendzie wzrostowym, to portfel trzymający WIG jedynie w okresach spełnienia tych warunków osiągnąłby wynik z kolumny "Zysk". Dla porównania, wzrost WIG w badanym okresie wyniósł 55%.

Wskaźnik Ilość sesji Odsetek spółek Zysk WIG %
Cena vs cena2500.6086
Cena vs SMA6600.3573
Min-Max2700.60127
Nachylenie regresji liniowej1700.55120
Cena vs regresja liniowa5400.4092
Nachylenie regresji sześciennej5500.30107
Cena vs regresja sześcienna2800.1078
Nachylenie regresji kwadratowej4300.65145
Cena vs regresja kwadratowa7000.3593

    Najlepszy wynik osiągnął wskaźnik nachylenia regresji kwadratowej o długości 430 sesji i minimum 65% spółek w trendzie wzrostowym. "Trzymanie" WIG tylko wtedy dało by zysk 145%.

Pomysł na strategię na kontrakty terminowe

    Podczas pracy nad kodem pojawiła się jeszcze jedna idea: co by się stało, gdyby wykorzystać szerokość rynku do handlu kontraktami terminowymi na WIG20 w strategii long-short? Wyniki są interesujące i zachęcają do dalszych prac w tą stronę. Przetestowałem najlepszy wskaźnik z poprzedniej tabeli. Otwierałem długą pozycję na FW20 gdy przynajmniej 65% spółek było w trendzie rosnącym, w przeciwnym przypadku otwierałem pozycję krótką. Taki system osiągnął wynik 4028 punktów, uwzględniając 4 punkty jako prowizję i poślizg.
Poniżej transakcje (S = short, L = long, E = exit):

    20141219 S @ 2321
    20161102 E @ 1761 profit 556
    20161102 L @ 1761
    20161103 E @ 1763 profit -2
    20161103 S @ 1763
    20161107 E @ 1768 profit -9
    20161107 L @ 1768
    20161109 E @ 1790 profit 18
    20161109 S @ 1790
    20161114 E @ 1760 profit 26
    20161114 L @ 1760
    20170808 E @ 2428 profit 664
    20170808 S @ 2428
    20201007 E @ 1741 profit 683
    20201007 L @ 1741
    20211117 E @ 2325 profit 580
    20211117 S @ 2325
    20230329 E @ 1729 profit 592
    20230329 L @ 1729
    20230330 E @ 1784 profit 51
    20230330 S @ 1784
    20230331 E @ 1775 profit 5
    20230331 L @ 1775
    20230403 E @ 1794 profit 15
    20230403 S @ 1794
    20230405 E @ 1774 profit 16
    20230405 L @ 1774
    20230406 E @ 1771 profit -7
    20230406 S @ 1771
    20230411 E @ 1796 profit -29
    20230411 L @ 1796
    20240131 E @ 2299 profit 499
    20240131 S @ 2299
    20240201 E @ 2322 profit -27
    20240201 L @ 2322
    20240202 E @ 2374 profit 48
    20240202 S @ 2374
    20240205 E @ 2339 profit 31
    20240205 L @ 2339
    20240220 E @ 2442 profit 99
    20240220 S @ 2442
    Current (20241219) E @ 2219 profit 219
  

Daty na początku wierszy pokazują, że jest to system bardzo długo terminowy 😃 Okres trzymania jednej transakcji to czasem kilka lat. Dlatego, do prawdziwego systemu na FW20 powinniśmy dodać jeszcze jakieś krótkoterminowe sygnały i otwierać pozycje tylko zgodnie z długim trendem.

Następny wpis
Pytania lub uwagi? Twitter / X: Łukasz Wojtów
Software do testowania rynków finansowych: Alis