Backtesting w praktyce — proces walidacji krok po kroku

Ostatnio zweryfikowano: · Treść aktualna długoterminowo
Ostrzeżenie · YMYL Ten artykuł ma charakter wyłącznie edukacyjny i nie stanowi rekomendacji inwestycyjnej. Handel na rynku Forex wiąże się z wysokim ryzykiem utraty kapitału — według ESMA 74–89% rachunków detalicznych traci pieniądze.

Backtest robi prawie każdy, kto poważnie podchodzi do strategii — ale uczciwy proces walidacji jest rzadkością i to on odróżnia konto, które przeżyje pierwszy rok, od konta wymiecionego w trzecim miesiącu. W tym tekście pokazuję, jak ustawić cały tor: od spisania reguł, przez wybór historii i podział danych, walk-forward, demo, aż do pierwszego mikro-lota live. To nie instrukcja jednego testu, lecz dyscyplina prowadzenia strategii od pomysłu do rachunku.

Po co zamieniać backtest w wieloetapowy proces

Pojedynczy backtest pokazuje liczbę, której nie znasz. Strategia zarobiła trzydzieści procent — złapała przewagę, czy trzysta razy ją optymalizowałeś, aż jedna kombinacja parametrów dopasowała się do szumu? Sam wynik nie odpowiada. Daje to proces, który odbiera traderowi możliwość uczenia się danych, na których strategia będzie oceniana. Każdy następny etap jest sitem o coraz mniejszych oczkach. Rzemiosło pojedynczego testu opisałem w artykule o poprawnym backteście strategii; tutaj koncentruję się na całej dyscyplinie, która zaczyna się długo przed pierwszym kliknięciem „Start" i kończy długo po nim.

Reguły na papierze, bez interpretacji

Strategia, której nie da się przepisać na język programowania lub dokładną kartkę reguł, nie jest gotowa do testowania. Pierwszy krok to spisanie warunków wejścia, wyjścia, stop lossa, take profita i wielkości pozycji tak, by drugi człowiek czytający ten sam dokument zawarł identyczne transakcje. „Wchodzę, gdy widzę trend" to nie reguła, lecz wrażenie. Sprawdzalna wersja brzmi: „kupuję na zamknięciu świecy dziennej, gdy EMA z pięćdziesięciu sesji jest powyżej EMA z dwustu, RSI(14) poniżej siedemdziesięciu, a cena dotyka średniej z dwudziestu sesji od góry; stop loss 1,5 ATR(14) poniżej wejścia, cel 2,5 ATR powyżej; ryzyko jeden procent rachunku". Sama dyscyplina spisywania odsiewa większość pomysłów przed testem.

Okno danych musi przykryć więcej niż jeden reżim

Drugim filtrem jest historia. Reguła, której się trzymam: dla strategii dziennych minimum dziesięć lat, dla daytradingu na M30 i M15 pięć, dla scalpingu minimum dwa lata z prawdziwych tików, nie z syntetycznej historii brokera. W ostatniej dekadzie zmieściły się długie trendy na DXY (2014–2017), szoki zmienności (marzec 2020), cykl podwyżek stóp (2022–2023) i powrót do konsolidacji (2024). Strategia działająca tylko w jednym z tych światów nie jest strategią, lecz złudzeniem dopasowanym do epoki. Mniej niż sto transakcji na pięciu latach to próba za mała — sto to dolny próg istotności, profesjonaliści celują w trzysta.

Podział na in-sample i out-of-sample

Trzeci etap to świadome odebranie sobie części danych. Dzielisz historię na dwa bloki: siedemdziesiąt procent in-sample, na którym wolno optymalizować, oraz dwadzieścia pięć do trzydziestu procent out-of-sample, którego nie wolno dotknąć aż do końca optymalizacji. Out-of-sample to sito uczciwości — pokazuje, czy parametry znalezione na danych treningowych mają jakąkolwiek wartość poza nimi. Jeżeli na IS masz osiemdziesiąt procent skuteczności i profit factor 2,4, a na OOS pięćdziesiąt procent i profit factor 1,1 — właśnie złapałeś samego siebie na curve-fittingu. Strategia z dwunastoma procentami rocznie na IS i jedenastoma na OOS jest realnie lepsza niż ta z trzydziestoma na IS i ośmioma na OOS. Szukasz spójności, nie maksimum.

Walk-forward jako sito o najmniejszych oczkach

Pojedyncze rozcięcie IS i OOS daje tylko jedną liczbę. Walk-forward powtarza go pięć–siedem razy z różnymi punktami startu: pierwszy in-sample to 2018–2021, out-of-sample 2022; drugi przesuwa się do 2019–2022 i OOS 2023; i tak dalej. Dla każdego okna optymalizujesz na nowo, zamrażasz zwycięskie parametry, testujesz na out-of-sample, zapisujesz wynik, przesuwasz okno. Po pięciu–siedmiu cyklach średnia OOS jest najuczciwszym przybliżeniem tego, co da rachunek live. WFE w przedziale 0,5–0,75 sygnalizuje strategię nadającą się do wdrożenia; poniżej 0,3 to dowód curve-fittingu i sygnał, żeby uprościć logikę. Mechanikę toczącego się okna oraz różnicę między kroczącym a zakotwiczonym opisałem w artykule o analizie walk-forward; szerszy kontekst — w sekcji backtesting i forward testing na MyBank.pl.

„Test poza próbą jest jedyną prawdziwą miarą jakości strategii. Jeżeli system nie utrzymuje przewagi na danych, których nie widział podczas optymalizacji, znaczy to, że został dopasowany do historii, a nie do rynku." — Robert Pardo, The Evaluation and Optimization of Trading Strategies, Wiley, 2008

Demo i mikro-lot live — etapy, w których strategia spotyka rzeczywistość

Strategia, która przeszła walk-forward, jest gotowa na demo, nie na pieniądze. Trzy do sześciu miesięcy forward testingu z parametrami zamrożonymi po ostatniej iteracji jest pierwszym testem w czasie rzeczywistym: na żywych spreadach, z prawdziwą sekwencją publikacji makro, z luką niedzieli wieczorem i godzinami płynności innymi niż w archiwum. Demo wyciąga rzeczy, których backtest nigdy nie pokazuje. Strategia uznana na historii za płynną może okazać się trudna do realizacji, bo sygnały występują w godzinach, w których śpisz albo jesteś w pracy. To nie są problemy danych — to problemy ciebie i twojego rynku w tym kwartale.

Po forward testingu nie wpuszczasz strategii od razu z pełną pozycją. Wpuszczasz ją z mikro-lotem — jedną dziesiątą docelowej wielkości — przez trzy do sześciu miesięcy obserwacji na żywych pieniądzach. Cel jest informacyjny: chcesz zobaczyć, jak różni się rzeczywista realizacja od demo, ile wynosi prawdziwy poślizg, jak broker zachowuje się przy publikacji NFP i jak ty reagujesz na realne, choć niewielkie straty. Tabela prowadzona przez wszystkie etapy ma cztery kolumny: in-sample, out-of-sample, demo, mikro-lot live. Im bliżej siebie liczby w czterech kolumnach, tym mniejsze ryzyko, że żyjesz w iluzji. Większy rozjazd to sygnał, żeby cofnąć się o etap, a nie skalować pozycję.

Hipotetyczny przykład — pełna ścieżka strategii breakoutowej

Strategia breakoutowa na EUR/USD, M30, z wejściem na wybiciu maksimum z dwudziestu świec i wyjściem na minimum z dziesięciu. Historia 2014–2023, in-sample 2014–2020, out-of-sample 2021–2023. Optymalizacja na IS: dwadzieścia trzy świece dla maksimum, jedenaście dla minimum, stop loss 1,4 ATR, skuteczność 58 procent, profit factor 1,72, zwrot dwadzieścia dwa procent rocznie. Te same parametry na OOS: skuteczność 54 procent, profit factor 1,51, zwrot osiemnaście procent rocznie. Pięć iteracji walk-forwardu daje WFE 0,71. Cztery miesiące dema potwierdzają poślizg pół pipsa większy od założonego. Mikro-lot live od stycznia daje skuteczność 51 procent po trzech miesiącach — niżej niż backtest, ale zysk netto pozostaje dodatni. W trzecim kwartale decyzja: skalujesz lub czekasz, jeżeli zmienność odbiega od historycznej. Liczby są ilustracyjne.

Co zrobić jutro

  1. Spisz reguły strategii w pliku tekstowym z taką precyzją, by drugi człowiek czytający ten sam dokument zawarł identyczne transakcje — bez interpretacji, z dokładnymi wartościami parametrów, formułą stop lossa i take profita oraz wielkością pozycji wyrażoną jako procent rachunku.
  2. Pobierz dane historyczne dla pary, którą faktycznie handlujesz: minimum dziesięć lat dla świec dziennych, pięć dla M30 i M15 oraz dwa z prawdziwych tików dla scalpingu; sprawdź, czy próba zawiera różne reżimy — trend, konsolidację, szoki zmienności i cykle stóp procentowych.
  3. Podziel dane na siedemdziesiąt procent in-sample i dwadzieścia pięć do trzydziestu procent out-of-sample, nie ruszaj bloku OOS aż do końca optymalizacji, a następnie uruchom pięć–siedem iteracji walk-forwardu; jeżeli średnie WFE wychodzi poniżej 0,5 lub parametry skaczą o więcej niż pięćdziesiąt procent, uprość logikę zamiast szukać kolejnego testu.
  4. Dla strategii, która przeszła walk-forward, uruchom trzy do sześciu miesięcy forward testingu na koncie demo z parametrami zamrożonymi po ostatniej iteracji, a potem kolejne trzy do sześciu miesięcy z mikro-lotem live; porównaj cztery zestawy wyników i dopiero gdy są spójne, skaluj pozycję, uzupełniając obraz symulacją Monte Carlo.
  5. Czytaj wyniki przez pryzmat spójności, nie maksymalnego zwrotu: strategia z dwunastoma procentami rocznie na każdym etapie jest realnie lepsza niż ta z trzydziestoma na in-sample i ośmioma na out-of-sample; tło o tym, jak wypreparować przewagę, którą cały proces sprawdza, opisuję w artykule o odkrywaniu przewagi rynkowej.
Jarosław Wasiński
O autorze

Jarosław Wasiński

Redaktor naczelny MyBank.pl · Analityk finansowy i rynkowy

Niezależny analityk i praktyk z ponad 20-letnim doświadczeniem w sektorze finansowym. Twórca i redaktor naczelny portalu MyBank.pl, działającego od 2004 roku. Analiza fundamentalna rynków walutowych i makroekonomicznych od 2007 roku.

Źródła i bibliografia

  1. Robert Pardo The Evaluation and Optimization of Trading Strategies · klasyczny podręcznik o ewaluacji systemów transakcyjnych i metodyce walk-forward onlinelibrary.wiley.com ↗
  2. MetaQuotes MetaTrader 5 Help — Strategy Tester · oficjalna dokumentacja MT5 dotycząca Strategy Testera, forward testingu i optymalizacji parametrów www.metatrader5.com ↗
  3. MetaQuotes MetaTrader 4 Help — Strategy Testing · opis Strategy Testera MT4: parametry uruchomienia, modele tickowe, interpretacja raportu www.metatrader4.com ↗
  4. Backtrader Backtrader documentation — Introduction · wprowadzenie do otwartego silnika backtestowego w Pythonie używanego przez quants www.backtrader.com ↗
  5. TradingView Pine Script v6 — Welcome · oficjalna dokumentacja Pine Script i Strategy Testera w TradingView www.tradingview.com ↗

Najczęstsze pytania

Czym ten wieloetapowy proces różni się od pojedynczego backtestu?

Pojedynczy backtest daje jedną liczbę i jedną interpretację. Pokazuje, czy strategia historycznie zarobiła, ale milcząco zakłada, że proces optymalizacji nie nauczył się szumu. Wieloetapowy proces tę pojedynczą liczbę zamienia w sekwencję sit. Najpierw spisane reguły odsiewają pomysły niesprawdzalne. Potem długie okno historii odsiewa strategie dobre tylko w jednym reżimie. Następnie podział na in-sample i out-of-sample odsiewa parametry, które działały tylko na danych treningowych. Walk-forward odsiewa parametry, które działały tylko w jednym przypadkowym oknie out-of-sample. Demo odsiewa strategie, których nie da się zrealizować na żywych spreadach. Mikro-lot live odsiewa traderów, którzy nie wytrzymują psychologicznie. Po przejściu przez wszystkie sześć sit zostaje ułamek pierwotnej grupy strategii, ale to jest właśnie ten ułamek, który ma realną szansę przetrwać pierwszy rok. Pojedynczy backtest tej selekcji nie wymusza i dlatego osiemdziesiąt procent retail traci, mimo że osiemdziesiąt procent ma za sobą jakiś test historyczny.

Jak długo trwa cały proces od pomysłu do mikro-lota live?

Realistyczny harmonogram zakłada od dziewięciu do piętnastu miesięcy od pierwszego spisania reguł do skalowania pozycji do docelowej wielkości. Pierwsze dwa tygodnie idą na precyzyjne spisanie reguł i pobranie danych historycznych. Kolejne dwa–cztery tygodnie to optymalizacja parametrów na in-sample i pierwsza walidacja na out-of-sample; jeżeli wynik nie przejdzie, wracasz do reguł, a nie szukasz lepszego testu. Walk-forward z pięcioma–siedmioma iteracjami to dodatkowy miesiąc, bo każde okno wymaga osobnej optymalizacji. Następne trzy do sześciu miesięcy to forward testing na koncie demo. Po nim kolejne trzy do sześciu miesięcy mikro-lota live. Dopiero po porównaniu czterech zestawów wyników i potwierdzeniu ich spójności możesz skalować do docelowej wielkości. Skrócenie tego harmonogramu poniżej dziewięciu miesięcy oznacza pominięcie któregoś sita, a każde pominięte sito przenosi ryzyko z fazy walidacji na fazę live, gdzie kosztuje już prawdziwe pieniądze.

Jakie liczby śledzić między etapami, żeby wyłapać niespójność?

Tabela prowadzona przez cały proces powinna mieć cztery kolumny wyników (in-sample, out-of-sample, demo, mikro-lot live) i dla każdej z nich co najmniej cztery wiersze metryk. Pierwszy to skuteczność procentowa — różnica większa niż dziesięć punktów procentowych między etapami sygnalizuje niespójność. Drugi to profit factor jako iloraz sumy zysków do sumy strat — różnica większa niż 0,3 między etapami jest sygnałem ostrzegawczym. Trzeci to średni stosunek zysku do ryzyka — różnica większa niż 0,5 R sugeruje, że stop loss zachowuje się inaczej niż w teście. Czwarty to obsunięcie maksymalne, które prawie zawsze rośnie z etapu na etap, ale wzrost powyżej pięćdziesięciu procent między dwoma sąsiednimi etapami oznacza, że strategia napotyka warunki, których w teście nie było. Piąty, opcjonalny, to średni poślizg w pipsach — różnica między backtestem a demo, oraz między demo a mikro-lotem, mówi, czy broker zachowuje się zgodnie z założeniami. Niespójność w którejkolwiek z metryk to sygnał, żeby cofnąć się o etap i zrozumieć, skąd się bierze, zamiast skalować pozycję.

Czy zaliczony cały proces gwarantuje, że strategia zarobi na żywo?

Nie. Każdy etap zwiększa prawdopodobieństwo, że strategia ma realną przewagę, ale żaden zestaw testów historycznych ani forward nie usuwa fundamentalnego ryzyka: rynek przyszłego kwartału może być inny niż wszystko, co widziałeś w danych. Cały proces zakłada milcząco, że reżim z okien out-of-sample i z dema będzie wystarczająco podobny do reżimu live. Jeżeli strategia uczyła się rynku 2018–2023 z dwoma szokami zmienności i dwoma cyklami stóp, a żyje od 2024 w długim range z niską zmiennością i mniejszą liczbą publikacji ruszających rynkiem, mikro-lot live może pokazać wyniki dalekie od backtestu. Dlatego dyscyplina nie polega na poleganiu wyłącznie na pomyślnym przejściu sit, lecz na utrzymywaniu mikro-lota wystarczająco długo, by porównać wynik na żywych pieniądzach z trzema wcześniejszymi etapami. Uzupełnieniem jest symulacja Monte Carlo, która losowo tasuje kolejność transakcji i pokazuje rozkład możliwych krzywych kapitału — daje szacunek najgorszego rozsądnego scenariusza, którego sam backtest nigdy nie ujawnia.

Pogłębij temat · pełny przewodnik