Pułapka optymalizacji strategii inwestycyjnej


Przez ostatnie 3 miesiące zrobiłem dokładne (Walk Forward) testy 35 wariantów mojego systemu. Poniżej ich wykresy za ostanie 3 lata.

Zobacz WF systemow bledny 600x349 - Pułapka optymalizacji strategii inwestycyjnej

Coś mnie jednak tknęło i dla kilku najlepszych powtórzyłem testy. Okazały się rożne, czasem nawet o 20%… Okazało się, że optymalizacja w Amibroker nie za każdym razem zwraca wyniki w tej samej kolejności – jeśli kilka kombinacji parametrów daje ten sam wynik – nie zawsze jako pierwszy jest wiersz z najwcześniejszą próbą – jest to losowe. Jak tu zatem oceniać wpływ zmiany w systemie, gdy nawet bez zmian wyniki są tak różne…

Nie można tu winić autora Amibrokera, bo taka losowość jest cechą baz danych, ale nie zaszkodziłoby (a w tym wypadku jest wręcz konieczne), by jako drugie kryterium sortowania wyników była kolumna Nr próby. Znajomy programista pomógł mi po raz kolejny, modyfikując skrypt, by brał wyniki właśnie z jak najwcześniejszej próbki. Teraz wreszcie każdy test, przy niezmienionym kodzie sytemu daje ten sam wynik.

Powtarzam więc te wszystkie 35 testów, co na szczęście nie zajmie już 3 miesięcy, a 3 tygodnie, dzięki Bestii, o jakiej pisałem poprzednio.


Chcesz wiedzieć więcej? Wejdź na stronę z Poradnikami.


  1. ; Rafał pisze:

    Cześć, trafiłem właśnie na Twój wpis. Możesz napisać coś więcej na temat zmian w skrypcie, które pomogły rozwiązać ten problem? Czy są to zmiany bezpośrednio w kodzie backtestera w amibrokerze czy coś innego?

    Kolejna kwestia – czy spotkałeś się w amibrokerze z innymi podobnymi błędami, czy program raczej póki co służy Ci bezproblemowo?

    Pytania skierowane od potencjalnego klienta amibrokera – zastanawiam się nad kupnem programu i zainwestowaniu w niego czasu, ale nie chcę się rozczarować głupimi błędami.

    Dzięki za odpowiedź!

  2. ; Mariusz Szepietowski pisze:

    Po prostu teraz wyniki optymalizacji idą najpierw do zewnętrznego skryptu, który z rekordów najlepszych wybiera ten o najniższym numerze próby. Więc nie ma tu losowości i można wiarygodnie testować różne strategie.

    Inny błąd, jaki zauważyłem, to przestawianie się opcji oznaczania czasu danej świeczki. Uruchomienie individual optimize czasem przestawia tę opcję, przez co wszelkie odwołania w kodzie w rodzaju godzina <= 15 tracą sens, gdy świeczka sygnalizuje, że nie jest świeczką z godziny 15, jak ustawiam, tylko z 15:00:20, gdy była pierwsza transakcja w niej. Amibroker też słabo sobie radzi z optymalizacją na wielu procesorach - nie był w stanie obciążyć mi więcej niż 6 wątków na 100% (autor problem zbył, zarzucając źle napisany kod), na szczęście można uruchomić kilka instancji programu i już jest ok (tylko oczywiście optymalizacje wymagają wtedy podziału pracy przez zewnętrzny skrypt). Poza tym program jest ok, da się z nim żyć 🙂 Zamiast kupować program, możesz mieć go gratis zakładając rachunek w jednym z polskich biur maklerskich, które go dodają.

Zostaw komentarz