Moduł 1 z 2
Backtest i forward test: jak testować
Backtest i forward test bez oszukiwania siebie: higiena testu, koszty w R, podział historii na okna i kryteria zaliczenia okresu próbnego.
- Autor
- Zordon Intelligence Sp. z o.o.
- Aktualizacja
- Czas czytania
- 11 min
- Źródła
- 3
Czym różni się backtest od forward testu
Ta lekcja wyjaśnia, jak przetestować setup tak, żeby wynik dało się obronić — przed sobą i przed własnym dziennikiem. Kierujemy ją do osób, które mają już zapisaną definicję setupu i chcą sprawdzić jej reguły na danych, zamiast oceniać je po wrażeniu z ostatnich sesji.
Backtest odpowiada na pytanie, czy reguły miały sens historycznie. Forward test odpowiada na pytanie, czy Ty wytrzymujesz je w czasie rzeczywistym, bez zmieniania ich w połowie drogi. Oba testy mierzą coś innego i żaden nie zastępuje drugiego.
Krzywa kapitału bez zapisanych reguł jest ozdobą, nie dowodem. Zanim ocenisz wykres, policz expectancy i maksymalne obsunięcie — sposobu liczenia niepewności średniej szukaj w lekcji expectancy i drawdown.
Siedem reguł higieny backtestu
Kolejność ma znaczenie: reguły zapisujesz przed otwarciem historii, nie po zobaczeniu wyniku.
- Zapisz reguły przed testem. Definicja setupu z datą i numerem wersji leży obok, zanim przewiniesz pierwszy wykres do tyłu.
- Idź świeca po świecy. Sygnał oceniasz tylko na zamkniętych świecach; żadna decyzja nie korzysta z informacji, której w danym momencie jeszcze nie było.
- Zapisuj każdy sygnał, także odrzucony. Lista sygnałów pominiętych pokazuje później, czy filtr działa, czy tylko zabiera transakcje.
- Policz koszty. Spread, prowizja, slippage, swap i koszt round-trip wchodzą do każdego wyniku, nie do przypisu.
- Ustal stały zestaw instrumentów. Zmiana rynku w trakcie próbki, bo „lepiej wygląda”, unieważnia porównanie.
- Trzymaj jedną wersję reguł. Poprawka w połowie testu oznacza nowy test od początku, nie korektę wyniku.
- Zapisz zakres dat i liczbę transakcji. Bez tego nie wiadomo, czy wynik opisuje miesiąc, czy trzy lata.
| Błąd | Objaw w raporcie | Jak go uniknąć |
|---|---|---|
| Look-ahead | wejście na wiedzy z następnej świecy | ocena wyłącznie na zamkniętych świecach |
| Koszty równe zero | wysokie R, które nie pojawia się na live | stały koszt round-trip z tabeli brokera |
| Curve fitting | kilkanaście filtrów dobranych pod jeden wykres | najwyżej jeden lub dwa filtry w wersji pierwszej |
| Zmiana reguł w trakcie | „tak wypadło lepiej” | wersja reguł z datą i bez edycji wstecznej |
| Pomijanie sygnałów spoza okresu | brak transakcji w trudnym miesiącu | test ciągły, bez wycinania fragmentów |
Koszty w R — arytmetyka, która zmienia wynik
Koszt najłatwiej porównywać z ryzykiem, dlatego wyrażasz go w R. Podstawa to wzór na expectancy:
E (w R) = skuteczność × średnia wygrana − (1 − skuteczność) × średnia przegrana
wymagana skuteczność = średnia przegrana / (średnia wygrana + średnia przegrana)
Poniższa tabela używa liczb z szablonu raportu: skuteczność 42%, średnia wygrana +2,1R, średnia przegrana −1R. Wszystkie wartości są ilustracyjne (liczba ilustracyjna).
| Wariant kosztu | Wygrana netto | Przegrana netto | Expectancy przy 42% | Wymagana skuteczność |
|---|---|---|---|---|
| bez kosztu | +2,1R | −1,0R | 0,42 × 2,1 − 0,58 × 1,0 = +0,30R | 1,0 / 3,1 ≈ 32,3% |
| koszt 0,1R | +2,0R | −1,1R | 0,42 × 2,0 − 0,58 × 1,1 = +0,20R | 1,1 / 3,1 ≈ 35,5% |
| koszt 0,2R | +1,9R | −1,2R | 0,42 × 1,9 − 0,58 × 1,2 = +0,10R | 1,2 / 3,1 ≈ 38,7% |
Trzy wnioski wynikają z prostego odejmowania. Koszt 0,1R obniża expectancy o jedną trzecią, a koszt 0,2R — do jednej trzeciej wartości wyjściowej. Jednocześnie wymagana skuteczność rośnie z około 32% do prawie 39%, czyli próg, który jeszcze niedawno był spełniony, przestaje nim być. Test bez kosztów mierzy więc inny system niż ten, który trafia na rachunek.
Dlatego po każdym backteście wykonaj próbę wrażliwości: podnieś założony koszt o połowę i przelicz expectancy ponownie. Przy koszcie 0,15R wzór daje około +0,15R (liczba ilustracyjna). Jeśli wynik spada w okolice zera, przewaga była efektem założenia, nie reguł.
Podział historii na okna
Jeden test na całej historii opisuje średnią, która nigdy nie wystąpiła. Historia dzieli się na części, a każdą część traktujesz jak osobny egzamin:
- In-sample — okres, na którym powstawały reguły. Wynik z tego okresu jest zawsze optymistyczny i nie służy do decyzji.
- Out-of-sample — okres, którego nie widziałeś, pisząc reguły. Tu sprawdzasz, czy sygnały w ogóle się pojawiają i czy wynik ma ten sam kierunek.
- Walk-forward — historia pocięta na okna testowe o stałej długości, przesuwane o stały krok. Okno testowe trzech miesięcy przesuwane co trzy miesiące daje w 24 miesiącach historii osiem okien (liczba ilustracyjna).
| Okno | Zakres dat | Liczba transakcji | Expectancy w R | Max DD w R | Wynik zgodny z poprzednim? |
|---|---|---|---|---|---|
| 1 | |||||
| 2 | |||||
| 3 | |||||
| 4 | |||||
| Razem |
Wniosek wyciągasz z rozrzutu między oknami, nie ze średniej. Jeśli jedno okno daje cały zysk, a pozostałe oscylują wokół zera, reguły opisują jeden epizod na rynku, a nie powtarzalny proces.
Ile transakcji potrzeba, żeby cokolwiek powiedzieć
Liczba transakcji na okno ma większe znaczenie niż ich suma w całym teście. Punkt startowy (liczba ilustracyjna): co najmniej 30 transakcji w jednym oknie i co najmniej trzy okna, które wskazują ten sam kierunek wyniku. Przy dwóch sygnałach na tydzień trzydzieści transakcji to około piętnastu tygodni zapisów.
Sam rozrzut wyników też ma znaczenie — system z szarpaną krzywą potrzebuje dłuższej próbki niż system o równych wynikach. Sposób liczenia niepewności średniej znajdziesz w lekcji o expectancy i drawdownie; tu wystarczy zasada, że decyzję podejmujesz po oknach, a nie po pięciu transakcjach.
Mała próbka plus duża dźwignia na CFD to klasyczna droga do obsunięcia. Zwiększanie rozmiaru pozycji opisuje osobna lekcja skalowanie size — bez wyniku z tego testu nie ma czego skalować.
Szablon raportu z backtestu
Poniższe kolumny to format. Wiersz „przykład ilustracyjny” pokazuje, jak czytać tabelę, a nie wynik systemu kursu; wszystkie wartości w tej kolumnie to liczba ilustracyjna. Kolumnę „Twoje dane” wypełniasz własnymi zapisami.
| Pole | Przykład ilustracyjny (format) | Twoje dane |
|---|---|---|
| Setup i wersja reguł | breakout H1 v1.2 | |
| Zakres dat | 2025-01 → 2025-06 | |
| Instrument | EUR/USD, CFD | |
| Liczba transakcji | 40 | |
| Skuteczność | 42% | |
| Średnia wygrana / średnia przegrana | +2,1R / −1R | |
| Koszt round-trip | 0,1R | |
| Expectancy | ≈ +0,2R | |
| Maksymalne obsunięcie | −8R | |
| Okna walk-forward | 4 z 4 zgodne | |
| Forward: okres i liczba sygnałów | 6 tygodni / 22 | |
| Decyzja | powtórz / zostaw / odrzuć |
Jeśli nie potrafisz wypełnić kolumny „Twoje dane”, problem nie leży w tabeli. Wróć do definicji setupu: brak liczby w raporcie oznacza brak liczby w regułach.
Forward test: okres i kryteria zaliczenia
Forward test to ten sam zestaw reguł uruchomiony na bieżącym rynku, bez zmian. Minimalny okres (liczba ilustracyjna): trzy tygodnie i co najmniej 20 sygnałów — okres wydłuża się, gdy setup pojawia się rzadko.
Kryteria zaliczenia zapisz przed startem, nie po zakończeniu:
| Kryterium | Próg (liczba ilustracyjna) | Wynik |
|---|---|---|
| Zgodność z regułami | ≥ 90% transakcji wg checklisty | |
| Transakcje poza planem | najwyżej 2 | |
| Expectancy okresu | ≥ 0R | |
| Maksymalne obsunięcie | nie większe niż 1,5 × obsunięcie z backtestu | |
| Zmiany reguł w trakcie | brak |
Zaliczenie wszystkich pięciu kryteriów oznacza, że setup przechodzi do kolejnego etapu. Niezaliczenie jednego oznacza powrót do reguł albo do próbki — nie do zwiększenia rozmiaru pozycji. Limit strat w okresie próbnym ustaw jak w planie, np. 2–3R dziennie (limit dzienny, liczba ilustracyjna).
Jak czytać krzywą kapitału krytycznie
Rosnąca krzywa nie jest dowodem przewagi. Może być efektem dobranego okresu, jednej szczęśliwej transakcji albo braku kosztów. Zanim uznasz wynik za sensowny, sprawdź cztery rzeczy:
- Koncentrację zysku — czy większość wyniku pochodzi z jednej lub dwóch transakcji. Jeśli tak, próbka jest za mała, a średnia niestabilna.
- Kształt obsunięcia — długie, płaskie okresy pod wodą mówią więcej niż samo maksymalne obsunięcie wyrażone w R.
- Stabilność w czasie — podziel próbkę na dwie połowy. Wyraźnie słabsza druga połowa oznacza reguły dopasowane do pierwszej.
- Wrażliwość na koszty — podnieś założony koszt o połowę i przelicz wynik ponownie, tak jak w tabeli wyżej.
Kiedy wynik testu mówi „nie handluj na żywo”
Cztery sytuacje, w których test nie daje zielonego światła:
- Zysk pochodzi z jednej lub dwóch transakcji. Przy takiej koncentracji nie wiesz, czy działa setup, czy jedna anomalia.
- Expectancy spada do zera po podniesieniu kosztu o połowę. Przewaga była efektem założenia, a nie reguł.
- Forward test nie zalicza choćby jednego kryterium. Wynik z historii nie przeniósł się na bieżący rynek albo na Twoją egzekucję.
- Druga połowa próbki jest wyraźnie słabsza od pierwszej. Reguły opisują przeszłość, której już nie ma.
Częste anty-wzorce w testowaniu
- Backtest bez reguł zapisanych przed testem — warunki dopisywane po fakcie, żeby pasowały do wykresu.
- Forward test przerwany po pierwszej stracie — to nie test, a potwierdzenie założenia przyjętego z góry.
- Zmiana instrumentu w trakcie próbki, bo inny „lepiej wygląda” — dane przestają być porównywalne.
- Ignorowanie godzin sesji — setup testowany na danych z całej doby i egzekwowany wieczorem ma inny rozkład zmienności.
- Testowanie po jednej stronie rynku — sprawdzenie wyłącznie długich pozycji w trendzie wzrostowym zawyża wynik.
Ćwiczenie mierzalne
Wybierz jeden setup z planu i zapisz jego reguły z numerem wersji przed testem. Przejdź ręcznie przez dziesięć sesji historycznych, świeca po świecy, zapisując każdy sygnał wraz z kosztem. Następnie policz trzy liczby: expectancy, wymaganą skuteczność i liczbę transakcji po odjęciu kosztu 0,2R (liczba ilustracyjna). Wypełnij szablon raportu własnymi danymi i zapisz, czy wynik utrzymuje się po podniesieniu kosztu o połowę. Format protokołu znajdziesz w Metodzie.
Następny krok
Gdy test wypadnie dobrze, zdefiniuj kryteria przejścia z demo na rachunek live: od demo do live.
Sprawdź się
Czym jest look-ahead bias?
Look-ahead to podglądanie przyszłości wykresu — sztucznie zawyża wynik backtestu.
Częste pytania
Czy automatyczny backtester jest obowiązkowy?
Nie. Ręczny test świeca po świecy na małej próbce często lepiej uczy reguł. Automat pomaga przy większej skali, pod warunkiem że używa tych samych kosztów i nie zagląda w przyszłość.
Forward test na demo czy na mikro rachunku?
Najpierw demo, żeby sprawdzić proces bez presji pieniędzy. Rachunek z minimalnym rozmiarem ma sens dopiero wtedy, gdy kryteria zaliczenia są spełnione, a pojedyncza strata nie psuje decyzji.
Co zrobić, gdy backtest i forward wypadają dobrze, a live nie?
Sprawdź slippage, spread w Twoich godzinach, odsetek transakcji poza planem i rozmiar pozycji. Najczęściej zawodzi egzekucja, a nie sam sygnał.
Po co dzielić historię na okna i liczyć koszty, skoro wystarczy sprawdzić, czy strategia zarabiała?
Bo pytanie „czy zarabiała” nie mówi, dzięki czemu. Bez podziału na okna nie odróżnisz przewagi powtarzalnej od jednego udanego okresu, a bez kosztów mierzysz system, który nie istnieje na rachunku. Pomiar nie służy ozdabianiu raportu — służy temu, żeby decyzja o przejściu na live opierała się na czymś więcej niż na kształcie krzywej.
Reklama
Najważniejsze wnioski
- Backtest odpowiada na pytanie, czy reguły setupu miały sens historycznie, a forward test sprawdza, czy wytrzymujesz je w czasie rzeczywistym. Ta lekcja daje siedem reguł higieny testu, wzór na expectancy i wymaganą skuteczność, podział historii na okna oraz kryteria zaliczenia okresu próbnego. Przykładowe liczby służą wyłącznie pokazaniu formatu — każdy wynik liczysz na własnych danych i własnych kosztach.
Źródła i dokumenty
Materiał opieramy na dokumentach źródłowych. Wartości zmienne — opłaty, limity, wskaźniki regulacyjne — sprawdź u źródła przed podjęciem decyzji.
- Babypips — backtesting / forward testing concepts — babypips.com
- StockCharts ChartSchool — systematic chart study hygiene — chartschool.stockcharts.com
- Kurs: expectancy i drawdown (ścieżka ryzyko) — materiał w tym serwisie
Zastrzeżenie
- KursTradera.pl to serwis edukacyjny o charakterze informacyjnym. Nie prowadzimy działalności maklerskiej, nie przyjmujemy i nie przekazujemy zleceń, nie zarządzamy portfelem, nie oferujemy instrumentów finansowych i nie świadczymy usług doradztwa inwestycyjnego w rozumieniu ustawy o obrocie instrumentami finansowymi. Materiały opisują mechanizmy rynkowe i proces decyzyjny — nie są instrukcją kupna lub sprzedaży jakiegokolwiek instrumentu.
- Żadna z publikowanych treści nie stanowi rekomendacji inwestycyjnej, informacji rekomendującej ani rekomendacji w rozumieniu Rozporządzenia Parlamentu Europejskiego i Rady (UE) nr 596/2014 (MAR) oraz aktów wykonawczych. Nie jest też ofertą nabycia lub zbycia instrumentów finansowych ani zaproszeniem do składania ofert. Wszelkie przykłady, wykresy, zrzuty ekranu i liczby mają charakter ilustracyjny i odnoszą się do sytuacji hipotetycznych lub historycznych.
- Inwestowanie i trading wiążą się z ryzykiem utraty części lub całości zainwestowanego kapitału. Wyniki osiągnięte w przeszłości — w tym wyniki przedstawione w materiałach edukacyjnych, backtestach i przykładach — nie gwarantują wyników przyszłych i nie są ich wiarygodnym wskaźnikiem. Żadna opisana metoda ani strategia nie eliminuje ryzyka. Decyzje inwestycyjne podejmujesz samodzielnie, na własną odpowiedzialność i po zapoznaniu się z aktualnymi dokumentami swojego brokera.
- Instrumenty z dźwignią (CFD, kontrakty terminowe, opcje, transakcje typu margin) mogą generować straty przewyższające wartość wpłaconych środków — możesz stracić więcej, niż zainwestowałeś, i zostać wezwanym do uzupełnienia depozytu (margin call). W Unii Europejskiej dźwignia dla klientów detalicznych handlujących CFD na głównych parach walutowych jest ograniczona decyzją ESMA (interwencja produktowa w sprawie CFD i opcji binarnych), ale ograniczenie dźwigni nie usuwa ryzyka. Odsetek rachunków detalicznych przynoszących straty różni się między brokerami i zmienia się w czasie — aktualną wartość odczytaj z ostrzeżenia ryzyka u swojego brokera i zapisz razem z datą.
- Backtesty, symulacje i przykładowe wyniki nie są rzeczywistymi wynikami transakcyjnymi. Powstają w warunkach odtwarzanych z danych historycznych, nie uwzględniają w pełni poślizgu cenowego, płynności, spreadu, prowizji, swapu, wpływu własnych zleceń na rynek ani czynnika psychologicznego — a wszystkie te elementy pogarszają wynik w praktyce. Wyniki historyczne nie chronią przed przyszłymi stratami.
Kto to pisze i jak to sprawdzamy
Materiały pisze i weryfikuje Redakcja KursTradera.pl — zasady opisuje o serwisie: każda liczba ma źródło, a braki pokazujemy jawnie. Błąd merytoryczny zgłosisz przez kontakt — poprawki opisujemy w treści.
Postęp zapisujemy wyłącznie w tej przeglądarce (localStorage) — nie ma konta ani kopii na serwerze. Wyczyszczenie danych witryny go usunie. Zarządzaj swoimi danymi