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.
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.
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ź!
; 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ą.
; Bogdan pisze:Witam. Zajmuje sie budowa automatow od kilku lat. Nie sa one jeszcze dopracowane w 100% poniewaz wiedza ktora potrzebuje do ich ukonczenia jest na takim poziomie ze nie da rady sie jej po prostu wygooglowac. Czy jest mozliwe zadanie kilku pytan? Jesli tak prosze o kontakt na [ usunięty adres email ]. Pozdrawiam
; Mariusz Szepietowski pisze:Witaj, zadaj je tutaj, może odpowiedzi przydadzą się innym 🙂