Walk-forward Analysis to chronologiczna ocena procedury, która wybiera lub ustawia reguły na wcześniejszych danych i stosuje je w kolejnym okresie testowym. Role wyboru i testowania przesuwają się w czasie, przy czym bieżąca decyzja nie może znać następnego wyniku.
Walk-forward Analysis przesuwa symulację historyczną w czasie: na podstawie dotychczasowych danych wybiera lub ustawia regułę, a następnie ocenia jej zastosowanie w kolejnym odcinku. QuantConnect opisuje regularną optymalizację na oknie obejmującym najnowszą dostępną przeszłość. Nasze rozróżnienie redakcyjne: nie oceniamy wyłącznie jednego niezmiennego zestawu parametrów, lecz opisaną z góry procedurę ich aktualizowania. Częścią reguły jest również moment kolejnego wyboru, jego cel i zbiór kandydatów. Lepsze dopasowanie do niedawnych danych samo nie potwierdza lepszego przyszłego wyniku. [QuantConnect — Walk Forward Optimization]
QuantConnect zwraca uwagę, że okres wykorzystany do poszukiwania najlepszych parametrów staje się częścią danych służących do opracowania strategii. Zastosowanie w nim zwycięzcy wybranego po fakcie nie jest rzetelną weryfikacją ówczesnej decyzji. Nasz protokół zamyka więc wybór przed rozpoczęciem następnego odcinka testowego. Dane z tego odcinka nie mogą wpływać na bieżącego zwycięzcę. Gdy odcinek się zakończy, a jego informacje będą rzeczywiście dostępne, mogą zgodnie z ustaloną z góry procedurą wejść do późniejszego wyboru; nie zmienia to jednak wcześniej zapisanych decyzji testowych. [QuantConnect — Optimization Parameters]
TimeSeriesSplit tworzy uporządkowane w czasie indeksy treningowe i testowe; domyślnie stopniowo rozszerza przeszły zbiór treningowy i pozwala ograniczyć jego wielkość. Nasze rozróżnienie: okno przesuwne utrzymuje wybraną długość przeszłości, a okno rozszerzające się zachowuje stały początek. Długość okna i częstotliwość aktualizacji są częścią projektu, a nie dowolnymi zmianami wprowadzanymi po obejrzeniu wyników. Dokumentacja wymaga próbek w równych odstępach, aby metryki odcinków były porównywalne; przy danych nieregularnych trzeba kontrolować rzeczywisty zakres kalendarzowy. [scikit-learn — TimeSeriesSplit]
Parametr gap w TimeSeriesSplit pomija próbki na końcu zbioru treningowego przed testem. Nasz wymóg metodologiczny polega na wyznaczeniu potrzebnego odstępu na podstawie momentu dostępności danych wejściowych i zakończenia wyników docelowych. Jeśli wynik obserwacji treningowej korzysta z cen z okresu testowego, samo uporządkowanie wierszy nie usunie wycieku. Dlatego długości przerwy nie należy dobierać wyłącznie według atrakcyjnego wyglądu krzywej. Nawet odpowiednia przerwa nie dowodzi niezależności sąsiednich okresów ani nie usuwa wszystkich form błędu selekcji. [scikit-learn — TimeSeriesSplit]
Dokumentacja scikit-learn ostrzega, że normalizacja, uzupełnianie brakujących wartości czy wybór cech mogą przenosić informacje z testu do modelu. Parametry tych przekształceń należy wyuczyć wyłącznie na części treningowej, a następnie zastosować do części testowej. Nasza kontrola powtarza to oddzielenie przy każdym przesunięciu okna. Wcześniejszego obliczenia średniej z całego zbioru nie naprawia późniejsze podzielenie gotowej tabeli. Trzeba zachować także wersję danych i ich rzeczywistą dostępność w czasie. [scikit-learn — Common Pitfalls: Data Leakage]
QuantConnect wyróżnia model określający cenę i ilość realizacji, który może uwzględniać spread oraz Slippage. Nasz wymóg przy łączeniu odcinków testowych to spójne traktowanie kapitału, otwartych pozycji i kosztów zmiany reguły. Zysków treningowych nie dodaje się do wyniku późniejszego testu, a nakładających się okresów testowych nie wolno bez wyjaśnienia liczyć wielokrotnie. Jeśli pozycje są przenoszone, należy opisać przejście między konfiguracjami. Natomiast nasz poniższy model kończy każdy okres bez pozycji. [QuantConnect — Trade Fills: Key Concepts]
Bailey i współautorzy opisują rosnące ryzyko fałszywych odkryć przy wielokrotnych poszukiwaniach na tych samych danych. Nasz wniosek dla Walk-forward Analysis: jeżeli na podstawie wynikowego szeregu testowego zmieniamy długości okien, cel lub kandydatów i powtarzamy cały przebieg, szereg już wpływa na rozwój. Nie wystarczy nazwać go niezależnym. Raport powinien wymienić wszystkie wypróbowane protokoły i oddzielić ewentualną dodatkową weryfikację, której jeszcze nie wykorzystano. Samo przesuwanie w czasie nie jest oszacowaniem prawdopodobieństwa przeuczenia ani automatyczną gwarancją statystyczną. [Bailey et al. — The Probability of Backtest Overfitting]
NFA podkreśla, że hipotetyczne wyniki nie odzwierciedlają rzeczywistego handlu ani pełnego wpływu płynności, poślizgu cenowego i zachowania podczas rzeczywistej straty. Nasz raport Walk-forward Analysis zachowuje więc granice okien, kandydatów, wyniki punktowe wyboru, wybrane konfiguracje i wyniki kolejnych odcinków wraz z kosztami. Suma wymaga kontekstu ryzyka, liczby obserwacji i porównania przy takich samych warunkach. Mały przykład z ujemnym wynikiem nie dowodzi ogólnej nieskuteczności metody, tak jak dodatnia suma nie dowodzi przyszłej przewagi handlowej. [NFA — Use of Promotional Material Containing Hypothetical Performance Results]
Wybrać na podstawie przeszłości, ocenić dopiero następny okres
Pełniejszy obraz uzyskasz, czytając to hasło razem z Backtesting, Overfitting, Look-ahead Bias, Trading Plan, Trading Journal. Do tego hasła prowadzą również odsyłacze z Backtesting, Overfitting, Look-ahead Bias, Survivorship Bias.
01Czy wcześniejszy okres testowy może później wejść do treningu?+
Tak, jeśli już się zakończył, informacje są dostępne, a ustalony z góry protokół na to pozwala. Nie może jednak zmienić po fakcie wyboru ani wyniku zapisanego dla tego okresu.
02Czy Walk-forward Analysis usuwa przeuczenie?+
Nie automatycznie. Nadal można wielokrotnie dobierać długości okien, kandydatów lub całą procedurę na podstawie tych samych wyników. Trzeba ujawnić historię prób, kontrolować wyciek informacji i zachować rozróżnienie między opracowaniem a dalszą weryfikacją.