Przesuwanie okna testu co miesiąc: ten sam bot, nowy wynik
W skrócie: testy bota robię na stałym oknie 12 miesięcy kończącym się na początku bieżącego miesiąca. Po zakończeniu miesiąca okno przesuwam, a wyniki starego okna traktuję jako osobne. Bot z kodem bez zmian dostał po przesunięciu o jeden miesiąc 19 zaliczonych i 1 niezaliczony cykl zamiast 21 i 0. To nie błąd, to informacja o tym, co wchodzi i wychodzi z okna.
Co się stało
Bot złotowy (bot 2010_GoldAsiaEmaChannelBreakoutEA) testowałem do 1 października 2026. Październik się skończył i zakładałem, że wynik dotyczy okna do 1 listopada. Nie dotyczył. Po przesunięciu okna (od 1 listopada 2025 do 1 listopada 2026) ten sam zestaw ustawień dał 19 cykli zaliczonych i 1 niezaliczony, a stary test 21 i 0. Nic w kodzie się nie zmieniło. Z okna wypadł listopad 2025, wszedł październik 2026.
Wniosek: wynik backtestu bez daty końca okna jest niepełną informacją. Przy każdym porównaniu zapisuję obie daty i oznaczam, że okno się przesunęło.
Dlaczego przesuwam, a nie zostawiam
Test na starym oknie mówi o przeszłości, która z każdym miesiącem jest coraz mniej podobna do tego, co bot dostanie jutro. Ostatni miesiąc jest jedynym, którego bot na pewno jeszcze nie widział przy doborze ustawień. Jeśli okno go pomija, tracę najświeższy sprawdzian. Przesunięcie ma jeszcze jeden skutek uboczny: wszystkie testy porównawcze między botami robię na tym samym oknie, więc po przesunięciu muszę powtórzyć wyniki referencyjne, inaczej porównuję jabłka z gruszkami.
Przesunięcie to jeszcze nie re-optymalizacja
Mylę te dwie rzeczy rzadko, ale warto je rozdzielić.
- Przesunięcie okna to powtórka tego samego
.setna nowym zakresie dat. Pytanie: czy ustawienie nadal działa. - Re-optymalizacja to szukanie nowych wartości parametrów na nowym oknie. Pytanie: czy coś lepszego się pojawiło.
Zaczynam zawsze od pierwszego. Jeśli wynik po przesunięciu pozostaje w tej samej okolicy (u mnie 19/1 przy 21/0), ustawienie zostaje. Dopiero wyraźne pogorszenie (kilka niezaliczonych cykli więcej, spadek poniżej progu, który uznaję za koniec prac) uruchamia szukanie nowych wartości, i to według tych samych zasad co zawsze: środek plateau, nie najlepszy wiersz.
Czego pilnować
- Data końca okna zawsze obok wyniku. Bez niej wpis w tabeli jest bezużyteczny.
- Dane brokera muszą sięgać do nowej daty końca. Jeśli historia kończy się wcześniej, test jest krótszy i porównanie nie ma sensu.
- Zmiana o jeden miesiąc nie powinna przewracać wyniku. Jeżeli przewraca, ustawienie było dopasowane do konkretnych tygodni i trzeba sprawdzić, które to były.
- Nie przesuwam okna po to, żeby ratować wynik. Szukanie okna, w którym bot wygląda najlepiej, to ta sama pułapka co wybór najlepszego wiersza z optymalizacji.
Checklista
- Po zakończeniu miesiąca ustawiam nowy koniec okna na pierwszy dzień bieżącego miesiąca, początek rok wcześniej.
- Najpierw powtarzam wynik obecnego
.set, dopiero potem myślę o optymalizacji. - W tabeli wyników: obie daty okna i wersja bota.
- Porównanie ze starym wynikiem opisuję jako zmianę okna, nie zmianę bota.
- Sprawdzam, czy dane brokera sięgają do nowej daty końca.
- Nie wybieram okna po wyniku.
[DO UZUPEŁNIENIA: ile miesięcy z rzędu przesuwałem okno któregoś bota i czy wynik pozostał stabilny]
Powiązane
- Pułapka najlepszego wiersza: plateau kontra szum
- Optymalizacja dat startu: odporność na moment startu
- Kiedy zakończyć prace nad strategią
- Słowniczek, skorowidz
Ostrzeżenie: wynik testu na przeszłości nie gwarantuje wyniku w przyszłości. Przesuwanie okna daje świeższy sprawdzian, ale nadal jest to historia.