Czas na testy kolejnego systemu. Podobnie jak wcześniejsze, ten system też będzie wykorzystywał efekt momentum, ale będzie jeszcze prostszy. Tym razem nie używamy żadnych popularnych wskaźników — interesuje nas wyłącznie zmiana ceny w określonym czasie.
Okresy oraz wymagane zmiany to nasze parametry, które będziemy optymalizować. Jak zwykle, na początku zoptymalizujemy system na okresie in-sample (2008-2018), aby następnie przetestować najlepsze konfiguracje na danych out-of-sample (lata 2018-2024).
Pierwszym wyzwaniem jest ogromna liczba kombinacji — pełna permutacja wszystkich parametrów (z krokiem o 1) daje ich ponad miliard. Przy wydajności kilku testów na sekundę, sprawdzenie wszystkich zajęłoby kilkanaście lat. Z tego powodu przetestujemy tylko 1000 losowo wybranych kombinacji. Mimo, że to niewielki ułamek całej przestrzeni, to przy stabilnych parametrach (gdy wynik nie zmienia się znacząco przy niewielkich zmianach parametrów), powinniśmy otrzymać wiarygodne wartości.
Ostatni z warunków rodzi kolejny problem: jest całkiem prawdopodobne, że w danej chwili wiele spółek będzie spełniało warunek wejścia. Omijanie części sygnałów (gdy brakuje wolnej gotówki) oznacza, że końcowy kapitał będzie zależny od tego jakie spółki dały sygnał akurat wtedy kiedy mieliśmy wolny kapitał. Z kolei wolny kapitał zależy od poprzednich sygnałów. Innymi słowy, końcowy wynik mocno zależy od tego jak układały się sygnały wejścia i wyjścia, a nie tylko ich siły. Zaczynając test dzień wcześniej lub później zmieniamy "ścieżkę" transakcji i końcowy wynik.
Jednym ze sposobów aby sobie z tym poradzić jest wprowadzenie jakiejś losowości. W przypadku algorytmów sztucznej inteligencji często w takich sytuacjach jest stosowana walidacja krzyżowa (cross-validation). Możemy na przykład usunąć losową połowę spółek i dopiero wtedy przeprowadzić test (ciągle mówimy o teście in-sample). Procedurę powtarzamy dowolną ilość razy, np 50. Mediana wyników jest końcowym wynikiem dla testowanych parametrów. Dlaczego mediana a nie średnia? Nie chcemy aby wynik był zawyżony przez kilka bardzo dobrych przebiegów. W teście out-of-sample preferujemy stabilność dobrych wyników zamiast kilku bardzo dobrych ale mało prawdopodobnych. Po prostu, out-of-sample ma symulować prawdziwy trading wykonywany przez wiele lat i nie będziemy mieli możliwości "cofnąć się w czasie" bo nie trafiliśmy z parametrami.
Poniżej tabela z wynikami dla najlepszych 10 kombinacji parametrów z testu in-sample:
Tak zoptymalizowany system wyraźnie wygrywa z rynkiem. W okresie in-sample WIG wzrósł o 26%, a nasz system średnio o 150%. Dodatkowo, osiem na dziesięć kombinacji pobiło średni wzrost akcji (108%) w tym okresie. Interesujące jest też to, że najlepsze parametry w teście in-sample okazały się najlepsze również w out-of-sample.
Jest to kolejny test pokazujący, że trend oraz odpowiednia procedura wyboru systemu daje możliwości pobicia indeksu. Kod źródłowy do systemu znajduje się tutaj.
Następny wpis
Pytania lub uwagi? Twitter / X: Łukasz
Wojtów
Software do testowania rynków finansowych: Alis