Backtesting bez Tajemnic: Mistrzowska Zgodność z Oryginałem Rynkowym

Dupoin
Backtesting bez Tajemnic: Mistrzowska Zgodność z Oryginałem Rynkowym
Backtesting z Zgodnością z Oryginałem: Jak Odtworzyć Warunki Rynkowe | Poradnik

Wstęp: Dlaczego "Prawie" Dobry Backtest to Zły Backtest?

Wyobraź sobie taką sytuację: spędzasz niezliczone godziny, noce, a może nawet całe weekendy, perfekcyjnie dopracowując swoją genialną strategię tradingową. Twoje narzędzie do backtestingu pokazuje stały, piękny, niemal pionowy wzrost equity, powiedzmy… 20% rocznego zysku! Euforia! Wizje Lamborghini i wczesnej emerytury na własnej, prywatnej wyspie stają przed oczami. W końcu ufasz swojemu dziecku, wlewasz prawdziwy, ciężko zarobiony kapitał i włączasz automaty. A potem… no cóż, potem okazuje się, że twoja maszyna do drukowania pieniędzy w rzeczywistości była dość kosztowną maszyną do ich niszczenia, generującą 10% straty. Co poszło nie tak? Najprawdopodobniej padłeś ofiarą klasycznego i niezwykle podstępnego wroga każdego tradera: iluzji zysku, stworzonej przez backtesting, który nie był wierny rzeczywistości. A winowajcą są często drobiazgi, które pominięto – te przeklęte koszty transakcyjne, spread, poślizg (slippage), które w testach były zerowe, a w realnym, brutalnym świecie okazują się wilkiem zagryzającym twoje zyski.

I właśnie tutaj, w tym momencie gorzkiego olśnienia, pojawia się najświętsza świętość, fundament, na którym musi opierać się każdy rzetelny backtesting: zgodność z oryginałem. To nie jest tylko modne hasło, które ładnie brzmi w artykułach. To jest filozofia, credo, cel sam w sobie. Definicja „zgodności z oryginałem” w kontekście backtestingu to nic innego jak fanatyczne, wręcz obsesyjne dążenie do perfekcyjnego, pixel-perfect odwzorowania każdego, nawet najdrobniejszego aspektu rzeczywistych warunków rynkowych w naszym symulowanym, historycznym środowisku testowym. Chodzi o to, aby silnik symulacji nie był tylko uproszczonym modelem, ale swego rodzaniem wehikułem czasu, który przenosi naszą strategię w przeszłość i pozwala jej handlować dokładnie w tych samych warunkach, w jakich handlowalibyśmy wtedy, na żywo, z prawdziwymi pieniędzmi na koncie. To znaczy, że jeśli historyczny spread dla pary EUR/USD 12 stycznia 2017 roku o 14:30 GMT wynosił 1,2 pipa, to nasz backtest musi uwzględnić dokładnie tę wartość, a nie jakąś uśrednioną lub – co gorsza – zerową. To znaczy, że jeśli nasz broker w 2018 roku miał specyficzną politykę dotyczącą wykonywania zleceń stop, musimy to zasymulować. To znaczy, że każda dywidenda, split, reverse split musi być uwzględniona w cenach, aby uniknąć sztucznych skoków czy załamań na wykresie, które nasza strategia mogłaby błędnie interpretować jako sygnał. Prawdziwa zgodność z oryginałem to holistyczne podejście, które traktuje backtesting nie jako oderwany od rzeczywistości eksperyment matematyczny, ale jako prawdziwy poligon, gdzie każde „prawo” fizyki rynkowej musi obowiązywać.

Dlaczego to takie ważne? Ponieważ rynek nie wybacza błędów, a już na pewno nie wybacza pobłażliwości i naiwności. Im wyższy stopień zgodności z oryginałem uda nam się osiągnąć w naszych testach, tym mniejsze jest ryzyko tych druzgocących, portfelowo-psychicznych niespodzianek po przejściu na realne obroty. To właśnie te „niespodzianki” są prawdziwymi zabójcami tradingowych karier. Backtest, który pokazuje 20% zysku, a w realu daje 10% straty, jest nie tylko bezużyteczny – jest niebezpieczny, bo buduje fałszywą pewność siebie. Inwestujemy więcej, ryzykujemy śmielej, a potem przychodzi zimny prysznic rzeczywistości. Prawdziwa wartość backtestingu nie leży w tym, ile potencjalnego zysku uda nam się wygenerować na papierze, ale w tym, jak wiarygodnie jesteśmy w stanie przewidzieć realne, po-transakcyjne wyniki naszej strategii. A to jest możliwe tylko poprzez absolutny, bezwarunkowy kult dla zgodności z oryginałem. To jest nasz pancerz przeciwko iluzjom. To jest nasza tarcza przed rozczarowaniem. Im bardziej nasz symulowany świat przypomina ten prawdziwy, tym bardziej możemy ufać wynikom, które otrzymujemy. To prosta zależność: wyższa wierność odwzorowania równa się wyższa wiarygodność wyników, co z kolei równa się mniej stresu i więcej (prawdziwych) pieniędzy w kieszeni. Nie chodzi o to, aby backtesting zawsze pokazywał zysk – chodzi o to, aby zawsze mówił prawdę, nawet jeśli ta prawda jest bolesna i oznacza, że nasza genialna strategia tak naprawdę nie działa. Lepiej dowiedzieć się o tym na sucho, na danych historycznych, niż na mokro, na prawdziwym kapitale.

Oto konkretny, choć uproszczony, przykład jak brak pełnej zgodności z oryginałem może wypaczyć wyniki. Wyobraźmy sobie strategię opartą na wysokiej częstotliwości, która wykonuje 20 transakcji dziennie. W backteście zakładamy stały, niski spread i brak poślizgu. Wynik: +20% rocznie. Teraz wprowadzamy elementy realizmu: zmienny spread (wyższy w momentach wysokiej zmienności, np. podczas ogłaszania ważnych danych ekonomicznych) oraz średni poślizg wynoszący zaledwie 0,5 pipa na transakcję. Nagle okazuje się, że nasz piękny zysk topnieje jak śnieg wiosną. 20 transakcji * 0,5 pipa poślizgu = 10 pipów strat dziennie tylko z tego tytułu. Do tego dochodzą szersze spready w kluczowych momentach, które dodatkowo pogarszają punkt wejścia i wyjścia. Efekt? Zamiast 20% zysku, strategia ledwo wychodzi na zero, a w gorszych warunkach – generuje stratę. A to jeszcze nie koniec! Prawdziwy handel to także koszty finansowe swap (rollover) dla pozycji utrzymywanych overnight, które w wielu backtestach są pomijane, a dla strategii swingowych czy pozycyjnych mogą być bardzo znaczące. To pominięcie choćby jednego z tych elementów jest już odejściem od świętej zasady zgodności z oryginałem i skutkuje powstaniem tej zgubnej iluzji.

Wpływ braku 'zgodności z oryginałem' na wyniki przykładowej strategii (20 transakcji dziennie)
Spread Stały, 0.8 pipa Zmienny, średnio 1.2 pipa -2.5%
Poślizg (Slippage) 0 pipów Średnio 0.7 pipa na transakcję -4.8%
Koszt swap (odsetki) Brak Uwzględniony -1.1%
Prowizja brokerska Uwzględniona Uwzględniona -2.0% (w obu)
Wynik końcowy (przed kosztami) +20.0% +20.0% -
Wynik końcowy (po kosztach) +18.0% +9.6% Różnica: -8.4%

Podsumowując tę niezwykle istotną myśl: traktuj swój backtest jak symulator lotu dla pilotów odrzutowców. Czy chciałbyś, żeby twój symulator pomijał zjawiska fizyczne takie jak turbulencje, wiatr boczny czy opór powietrza, pokazując zawsze idealny, gładki lot? Oczywiście, że nie! Bo gdy w końcu usiądziesz za sterami prawdziwego Boeinga 787, te właśnie czynniki zepchną cię prosto na ziemię. Dokładnie tak samo jest w tradingu. Prawdziwy rynek to nieustanne turbulencje, wiatry i opory w postaci kosztów transakcyjnych. Zgodność z oryginałem to jedyny sposób, aby nauczyć się w tych warunkach latać i wylądować z portfelem w całości. Im wierniejszy symulator zbudujesz, tym lepszym „pilotem” swojej strategii się staniesz, a ryzyko katastrofy spadnie niemal do zera. Pamiętaj, drobne rozbieżności nie są „drobne” w swoich konsekwencjach – kumulują się i potęgują, prowadząc do całkowicie fałszywego obrazu sytuacji. Twoim celem nie jest oszukiwanie samego siebie ładnymi wykresami, ale wystawienie swojej strategii na najcięższe, najbardziej realistyczne próby, jakie jesteś w sobie wyobrazić. To jest esencja profesjonalnego backtestingu.

Podstawa Wszystkiego: Wojna o Jakość Danych Historycznych

No dobrze, skoro już wiemy, że drobne, pozornie niewinne różnice między testami a rzeczywistością mogą nas doprowadzić do finansowej ruiny (pamiętacie ten „cudowny” system, który z +20% magicznie zamieniał się w -10%?), czas zagłębić się w absolutny fundament całego procesu backtestingu. Mówiąc wprost: jeśli na tym etapie popełnimy błąd, wszystko, co zbudujemy później, będzie domkiem z kart. Mowa oczywiście o danych historycznych. To od nich wszystko się zaczyna i to one są pierwszym, kluczowym filarem prawdziwej **zgodności z oryginałem**. Możesz mieć najgenialniejszą, najbardziej skomplikowaną strategię na świecie, opartą na zaawansowanych algorytmach AI, ale jeśli nakarmisz ją śmieciami, to dostaniesz śmieciowe wyniki. Prosta, brutalna, ale i piękna w swojej uczciwości zasada. Wyobraź to sobie tak: chcesz upiec mistyczny sernik według tajemnej receptury babci. Zamiast świeżego twarogu, śmietanki i wanilii, używasz jednak spleśniałego sera, mleka, które już się skwasiło, i aromatu „o smaku wanilii”. Efekt? No… raczej nie ten, którego się spodziewałeś. Dokładnie tak samo jest z backtestingiem. **Zgodność z oryginałem** w kontekście danych to właśnie użycie najświeższych, najwyższej jakości składników, a nie ich tanich, przeterminowanych podróbek.

Zacznijmy więc od tego, czym w ogóle dysponujemy. Dane rynkowe nie są jednolite i wybór odpowiedniego typu ma kolosalne znaczenie dla wierności naszych testów. Dla przeciętnego inwestora długoterminowego, który trzyma akcje przez miesiące, często wystarczające są dane dzienne, czyli słynne OHLC (Open, High, Low, Close – kurs otwarcia, najwyższy, najniższy i zamknięcia). To podstawa, szkielet. Ale co, jeśli twoja strategia polega na łapaniu bardzo krótkich ruchów, trwających kilka minut? Wtedy dane dzienne są bezużyteczne. To jak próba naprawienia precyzyjnego mechanizmu zegarka młotkiem kowalskim. Tutaj potrzebujesz danych intraday – godzinnych, 15-minutowych, 5-minutowych, a nawet minutowych. A dla prawdziwych koneserów krótkoterminowego grania, jak scalperzy, niezbędne są dane tickowe. Rejestrują one po prostu każdą pojedynczą transakcję jaka miała miejsce na rynku. To już jest poziom mikroskopijny – widać każdy pojedynczy „oddech” rynku, każdy drobny popyt i podaż. Volume, czyli wolumen, to kolejny krytyczny element. Strategia oparta na breakoutach (wybiciach z jakiegoś zakresu) bez uwzględnienia wolumenu jest jak samochód bez paliwa – może i ładnie wygląda, ale nie pojedzie. Wysoki wolumen przy wybiciu potwierdza siłę ruchu, niski – może sygnalizować fałszywy alarm, pułapkę. Pominięcie go to poważne naruszenie **zgodności z oryginałem**, bo w realnym tradingu patrzysz na wolumen i on na ciebie wpływa. Wybór odpowiedniej granulacji danych to więc pierwszy, strategiczny krok. Nie możesz testować strategii skalpującej na danych dziennych i oczekiwać, że wyniki będą cokolwiek warte. To nie jest **zgodność z oryginałem**, to jest zabawa w zgadywanie.

A teraz przejdźmy do największych pułapek, czyhających na nieostrożnego testera. To są prawdziwe „miny”, które potrafią bezgłośnie wysadzić w powietrze twoją strategię, a ty nawet nie będziesz wiedział, kiedy to się stało. Pierwsza z nich to po prostu brakujące dane. Giełda nie działała w święta? OK, to normalne. Ale co, jeśli twój dostawca danych z jakiegoś powodu nie pobrał kilku godzin notowań w środku czwartku? Albo „zgubił” kilka sesji z powodu awarii serwera? Twój algorytm, widząc lukę, po prostu przeskoczy z jednej ceny do drugiej, nie widząc żadnego problemu. W rzeczywistości pomiędzy tymi punktami mogła się rozegrać prawdziwa krwawa łaźnia, która zmiażdżyłaby twoje zlecenia stop-loss. Kolejna, potwornie podstępna pułapka to błędy w adjustacjach, czyli korektach cen historycznych. Sprawa jest absolutnie fundamentalna dla zachowania **zgodności z oryginałem**. Wyobraź sobie, że trzymasz akcję, która kosztuje 100 zł. Firma ogłasza split 1:5, czyli jedna stara akcja zamienia się w pięć nowych. Kurs po splicie nie będzie już 100 zł, tylko 20 zł (100 zł / 5). Gdybyś teraz spojrzał na surowe, nieskorygowane dane historyczne, zobaczyłbyś ogromny, sztuczny spadek z 100 zł do 20 zł! Twój algorytm, widząc tę „krachę”, mógłby uznać, że to sygnał do panicznej wyprzedaży, podczas gdy w rzeczywistości twoja pozycja jest warta dokładnie tyle samo. To samo dotyczy dywidend. Wypłata dywidendy obniża kurs akcji mniej więcej o jej wielkość. Jeśli nie uwzględnisz tej korekty w danych, zobaczysz nieprawdziwe, zawyżone ceny w przeszłości. Twoja strategia, testowana na takich „nadmuchanych” danych, może świetnie wypadać, kupując „przed” wypłatą dywidendy, ale w realnym świecie po jej wypłacie od razu będzie na straconej pozycji. Używanie danych bez adjustacji to proszenie się o katastrofę i całkowite zaprzeczenie idei **zgodności z oryginałem**. Ostatnia pułapka to po prostu niskiej jakości feedy danych, często darmowe. „Darmowe” w świecie danych często oznacza „bardzo, bardzo drogie” z powodu błędnych decyzji, które podejmiesz na ich podstawie. Takie źródła mogą mieć opóźnienia, błędy w nominałach, braki i często nie zapewniają poprawnych adjustacji. Płacąc za solidnego, renomowanego dostawcę, tak naprawdę nie płacisz za liczby, tylko za spokój ducha i pewność, że fundament twojej analizy jest mocny.

No dobrze, to jak się bronić? Jak zweryfikować, czy twoje dane nie są zielem trującym? Najlepszą metodą jest proste, ale żmudne porównanie z innym, renomowanym źródłem. Weź kilka spółek, kilka kluczowych dat (zwłaszcza tych po splitach czy dużych dywidendach) i porównaj kursy zamknięcia, wolumeny. Szukasz rozbieżności. Inna dobra praktyka to wykreślenie wykresu. Czasami gołym okiem widać absurdalne „szpilki” (ceny, które nigdy nie powinny mieć miejsca) lub podejrzane luki, które nie miały prawa się zdarzyć. Pamiętaj, twoim celem jest absolutna **zgodność z oryginałem** – chcemy, aby zapis historyczny wyglądał dokładnie tak, jakbyśmy cofali się w czasie i patrzyli na ekran monitora w tamtym momencie, uwzględniając wszystkie późniejsze corporate actions. To jest złoty standard.

I tu dochodzimy do sedna sprawy, czyli kosztów. Dobrze, dobre dane kosztują. Czasami nawet sporo. Subskrypcja do solidnego feedu danych historycznych, zwłaszcza tickowych lub wysokiej częstotliwości, to wydatek rzędu kilkudziesięciu, a nawet kilkuset złotych miesięcznie. To może boleć. Ale teraz zadaj sobie pytanie: jaki jest alternatywny koszt? Co będzie cię kosztowała jedna błędna decyzja inwestycyjna podjęta na podstawie zafałszowanych testów? Straty na jednej nieudanej transakcji mogą łatwo przewyższyć roczny, a nawet wieloletni koszt abonamentu za najlepsze dane. To jest inwestycja, a nie koszt. Inwestycja w twoją pewność siebie, w wiarygodność twojego systemu i w końcu – w twój portfel. Oszczędzanie na danych to klasyczny przykład „false economy” – pozornej oszczędności, która finalnie prowadzi do dużo większych strat. Prawdziwa **zgodność z oryginałem** wymaga solidnego fundamentu. Nie da się zbudować wieżowca na bagnistym gruncie.

Porównanie wybranych dostawców danych historycznych na rynku polskim (przykład)
Dostawca A OHLC dzienne, godz. Tak (split, dywidenda) 50 - 100 Dobry punkt startowy dla inwestorów swingowych.
Dostawca B OHLC dzienne, godz., 1-min Tak (pełne) 200 - 400 Bardzo dobra oferta dla daytraderów, dobre API.
Dostawca C (Darmowy) OHLC dzienne (opóźnione) Częściowe / Częste błędy 0 Tylko do edukacji. Zdecydowanie odradzane do backtestingu.
Dostawca D (Premium) Tickowe, Full Order Book Tak (perfekcyjne) 1000+ Standard branżowy dla funduszy i zaawansowanych algo-traderów.

Podsumowując ten przydługi, ale mam nadzieję ważny wywód, pamiętaj: twoje dane to nie tylko surowe liczby. To zapis historii rynku, twoja maszyna czasu. Im dokładniej ją zbudujesz, tym bezpieczniejszą będziesz miał podróż do przeszłości, aby przewidzieć przyszłość. Inwestycja w ich jakość to inwestycja w prawdę. A w tradingu, jak w życiu, lepiej opierać się na twardych faktach niż na iluzjach. Prawdziwa **zgodność z oryginałem** nie zaczyna się od skomplikowanych modeli matematycznych, tylko od najprostszej, najnudniejszej, ale i najważniejszej czynności: sprawdzenia, czy to, co masz przed oczami, jest prawdą, a nie jej zniekształconym cieniem. To jest właśnie ten fundament, o którym mówiłem. Bez niego, kolejne kroki, o których opowiemy następnym razem (a będą dotyczyły kosztów transakcyjnych – kolejnego potwora pożerającego zyski!), nie mają tak naprawdę sensu. Bo po co precyzyjnie modelować prowizje i slippage dla strategii, która jest tak naprawdę oparta na błędnych danych? To jak dopracowywać aerodynamikę samochodu, który ma kwadratowe koła. Najpierw załóżmy te okrągłe, dobrej jakości. Reszta przyjdzie później.

Ukryci Zabójcy Zysku: Koszty Transakcyjne, Slippage i Spread

Jeśli myślisz, że po opanowaniu sztuki zdobycia krystalicznie czystych danych historycznych Twoja droga do doskonałego backtestu jest już prosta i usłana różami… cóż, mam dla Ciebie małe, ale dość bolesne przebudzenie. Wyobraź sobie, że budujesz niesamowicie precyzyjny model samochodu wyścigowego, idealny w każdym calu, ale testujesz go wyłącznie w idealnej próżni, bez oporu powietrza i tarcia asfaltu. W realnym wyścigu rozleci się na kawałki po pierwszym zakręcie. W świecie backtestingu tymi brakującymi siłami są koszty transakcyjne oraz niedoskonałości wykonania zleceń. To właśnie one są najpodstępniejszymi kreatorami „fantomowych zysków” – pięknych, imponujących wyników na papierze, które w rzeczywistości nigdy nie miały prawa zaistnieć. Prawdziwa zgodność z oryginałem wymaga bezwzględnego uwzględnienia tego tarcia, bo rynek niestety nie jest środowiskiem idealnym.

Zacznijmy od absolutnych podstaw, czyli od tego, co tak naprawdę płacisz za wejście i wyjście z pozycji. Dla zupełnego nowicjusza koszt transakcji to często tylko prowizja, czyli stała opłata na rzecz brokera. To jednak tylko wierzchołek góry lodowej. Dwa prawdziwe potwory czają się głębiej: spread bid-ask oraz slippage. Spread to po prostu różnica między ceną, po której możesz coś natychmiast kupić (ask), a ceną, po której możesz to od razu sprzedać (bid). To jest jak kantor wymiany walut – kantor nie zarabia na prowizji, a na różnicy między kursem kupna a sprzedaży. Na rynku akcji czy forexie działa to identycznie. Im instrument mniej płynny, tym spread jest szerszy, co automatycznie podnosi koszt wejścia w transakcję. Slippage to już bardziej zdradliwa bestia. To różnica między ceną, której się spodziewałeś (np. ceną zamknięcia widoczną na wykresie), a ceną, po której transakcja została faktycznie zawarta. Wyobraź sobie, że chcesz kupić akcje spółki XYZ, która właśnie zamknęła się na cenie 100 zł. Wysyłasz zlecenie rynkowe na otwarciu następnego dnia. Otwarcie następuje na 101 zł z powodu dobrego overnight newsa. Twój rzeczywisty koszt zakupu to nie 100 zł, a 101 zł. To 1 zł różnicy na jednej akcji to właśnie slippage. Pominięcie tego w symulacji to najprostsza droga, aby zniekształcić wyniki i całkowicie zaprzepaścić zgodność z oryginałem warunków handlowych.

Jak więc realnie szacować ten przeklęty slippage? To nie jest magiczna stała, którą można zastosować do każdego instrumentu i każdej sytuacji. Jego wielkość zależy od trzech głównych czynników, które musisz wziąć pod uwagę, jeśli zależy Ci na wiernym odtworzeniu realiów. Po pierwsze, płynność instrumentu. Kupując popularne akcje blue-chipów o ogromnym dziennym obrocie, slippage będzie stosunkowo mały. Ale już próba kupienia lub sprzedania dużej partii mało płynnych akcji spółki z NewConnect może skutkować gigantycznym przesunięciem ceny na Twoją niekorzyść. Po drugie, zmienność (volatility) rynku. W okresach wysokiej zmienności, podczas publikacji ważnych danych ekonomicznych czy nagłych zawirowań geopolitycznych, spread bid-ask naturalnie się poszerza, a ryzyko slippage gwałtownie rośnie. Po trzecie, wielkość Twojego zlecenia. Zlecenie na 10 akcji prawdopodobnie zostanie zrealizowane blisko ceny rynkowej. Zlecenie na 10 000 akcji może już znacząco wpłynąć na cenę, szczególnie na mniej płynnym rynku, ponieważ „wypchniesz” się przez kilka poziomów orderbooka. Prawdziwa zgodność z oryginałem wymaga, aby Twój model backtestu uwzględniał te zmienne w dynamiczny sposób, a nie jako jeden, sztywny parametr dla wszystkich aktywów i wszystkich warunków.

W praktyce, silniki backtestu oferują różne modele uwzględniania tych kosztów, od najprostszych po bardzo złożone. Najprostszy model to stały koszt na transakcję (np. 5 zł prowizji + stały slippage 0.1%). Jest to lepsze niż nic, ale dalekie od idealnego. Bardziej zaawansowanym modelem jest koszt procentowy, który może lepiej odwzorować spread (np. 0.1% od wartości transakcji). Najlepsze, ale też najbardziej skomplikowane, są modele dynamiczne, które szacują koszt wykonania na podstawie historycznych danych o płynności (np. średni spread dla danej pory dnia, historyczna głębokość orderbooka) i zmienności. To właśnie te zaawansowane modele najwierniej oddają rzeczywistość i maksymalizują zgodność z oryginałem symulacji. Wybór modelu zależy od Twojej strategii – dla strategii długoterminowych, dokonujących kilku transakcji rocznie, prostszy model może wystarczyć. Dla skalpera czy daytradera, który wykonuje dziesiątki transakcji dziennie, pominięcie dynamiki kosztów jest zawodowym samobójstwem i gwarantuje, że backtest będzie bezużyteczny.

Pamiętaj: rynek nie czeka na Ciebie z otwartymi ramionami. Każda Twoja transakcja jest walką o najlepszą cenę z tysiącami innych uczestników. Backtest, który tego nie odzwierciedla, jest jedynie pobożnym życzeniem, a nie testem.

Aby naprawdę zobrazować, jak druzgocący wpływ na końcowy wynik mają te pozornie małe koszty, wykonajmy proste, ale niezwykle pouczające ćwiczenie. Weź swoją strategię i uruchom backtest w dwóch wariantach. W wariancie pierwszym, „różowym”, nie uwzględniaj absolutnie żadnych kosztów. Zero prowizji, zero spreadu, zero slippage'u. Zobaczysz swój „fantomowy” zysk, często wyglądający absolutnie fantastycznie. Następnie uruchom ten sam backtest, ale dodaj realistyczne koszty. Dla strategii opartej na akcjach, zacznij od: prowizja 5 zł od transakcji, stały slippage 0.1% oraz uwzględnienie spreadu bid-ask (możesz to zasymulować, zakładając, że kupujesz po cenie ask, a sprzedajesz po bid, używając historycznych danych o spreadzie). Wynik najprawdopodobniej Cię zszokuje. To, co było 20% zwrotu, może spaść do 5%. Strategia, która była lekko dodatnia, może okazać się głęboko stratna. To właśnie jest moment, w którym iluzja pryska, a Ty zaczynasz widzieć prawdziwą wydajność swojego systemu. To bolesne, ale konieczne przebicie bańki mydlanej. Bez tego ćwiczenia nie ma mowy o jakiejkolwiek zgodności z oryginałem – grasz wtedy w symulację, która nie ma wiele wspólnego z prawdziwym tradingiem.

Ostatecznie, dążenie do perfekcji w modelowaniu kosztów to ciągły proces. Nie chodzi o to, aby od razu budować super-skomplikowany model, ale o to, aby być świadomym tych czynników i stopniowo udoskonalać swój symulator. Zacznij od czegoś prostego, ale zawsze uwzględniaj przynajmniej podstawowe koszty. Następnie, w miarę rozwoju swoich umiejętności i narzędzi, staraj się je udoskonalać, perhaps wykorzystując historyczne dane o spreadzie czy zmienności. Prawdziwa wierność oryginałowi, czyli zgodność z oryginałem warunków rynkowych, jest tym, co oddziela amatorskie „bawienie się w wykresy” od poważnego testowania metod inwestycyjnych. To właśnie te niuanse – tarcie, opór, niedoskonałość – decydują o tym, czy strategia ma szansę przeżyć zderzenie z rzeczywistością, czy jest tylko pięknym, ale zupełnie bezużytecznym fantomem.

Oto jak mogą wyglądać różnice w szacowaniu kosztów dla przykładowej, hipotetycznej strategii tradingowej. Dane są celowo uproszczone dla celów poglądowych.

Porównanie wyników backtestu z różnymi modelami kosztów transakcyjnych dla strategii "Momentum Breakout"
Brak kosztów (Model Fantomowy) Zero prowizji, zero spreadu, zero slippage'u +24.5 152 0.00
Model Stały Prowizja 5 zł, stały slippage 0.08% +11.2 152 0.12
Model Procentowy Koszt 0.15% od wartości transakcji (symulacja spreadu + prowizji) +8.7 152 0.15
Model Dynamiczny Koszt oparty na historycznym średnim spreadzie i zmienności +5.1 152 0.19

Wnioski z takiej tabeli są jasne i brutalne. Im bardziej zaawansowany i realistyczny model kosztów, tym niższy końcowy zwrot. Strategia, która w „różowych okularach” wyglądała na bardzo dochodową, po nałożeniu realnych opłat może ledwo przebijać się above water, a często nawet generować stratę. Kluczowa lekcja jest taka: jeśli Twoja strategia ledwo zipie po uwzględnieniu kosztów, nie ma szans na rynku. Z drugiej strony, strategia, która wciąż pozostaje solidnie dodatnia po nałożeniu nawet pesymistycznych założeń dotyczących wykonania, jest znacznie bardziej obiecująca i prawdopodobna. To jest sedno rzetelnego backtestingu. To właśnie dążenie do absolutnej zgodności z oryginałem w każdym, nawet

Wehikuł Czasu dla Twojej Strategii: Silnik Backtestingu pod Lupą

No dobrze, skoro już wiemy, że nasz wirtualny portfel krwawi przez prowizje, slippage i spread, czas zadać sobie jeszcze bardziej fundamentalne pytanie: a właściwie to jak ten cały backtesting w ogóle działa od kuchni? Bo możesz mieć najdokładniejsze dane świata i uwzględniać wszystkie koszty, ale jeśli silnik symulacji popełnia podstawowe błędy logiczne, to cała Twoja praca idzie na marne. To trochę jak z graniem w symulatorze lotu, który ma opóźnienie – nauczysz się złych nawyków, a w prawdziwym samolocie czeka Cię niemiła niespodzianka. Kluczem do sukcesu jest tutaj absolutna zgodność z oryginałem nie tylko w danych, ale w samym mechanizmie podejmowania decyzji.

Zacznijmy od najprostszego i najbardziej zdradliwego modelu: backtestu na cenach zamknięcia. Wygląda to tak: na końcu każdego dnia (lub interwału czasowego) patrzysz na cenę zamknięcia i na jej podstawie podejmujesz decyzję: kupuję! albo sprzedaję! Problem w tym, że w rzeczywistości cena zamknięcia jest ogłaszana… no właśnie, na zamknięciu. Aby wejść w transakcję po tej cenie, musiałbyś wysłać zlecenie z góry, zanim jeszcze wiadomo, jaka ta cena będzie. To jest klasyczny przykład look-ahead bias, czyli dosłownie „przeglądania w przód” – twoja strategia w backteście korzysta z informacji, które w realnym handlu w momencie podejmowania decyzji były jeszcze niedostępne. Prawdziwy trading nie działa na zasadzie „wiem, że zamknęło się na 100 złotych, więc teraz wystawię zlecenie kupna po 100 złotych”. To absurd. Prawdziwy trading wygląda tak: przed zamknięciem widzisz, że cena jest około 99.8 zł, podejmujesz decyzję i wysyłasz zlecenie, które (mam nadzieję) zostanie zrealizowane gdzieś w okolicy tej ceny, ale finalne zamknięcie może być już 100 zł. Silnik, który naprawdę dba o zgodność z oryginałem, nigdy nie pozwoli strategii zajrzeć do ceny z bary N w celu podjęcia decyzji na barze N. Zasada jest żelazna: na barze N mamy dostęp tylko do danych do baru N-1. To jest święty graal uczciwego backtestingu.

Jak więc to naprawić? Bardziej zaawansowane silniki używają tak zwanej symulacji event-based lub tick-by-tick. Zamiast operować grubymi, uśrednionymi słupkami, symulacja prowadzona jest na pojedynczych tickach, czyli pojedynczych zmianach ceny w księdze ofert. To oczywiście jest koszmarnie wymagające obliczeniowo, ale daje nieporównywalnie wyższy poziom realizmu. W takim modelu silnik wiernie odtwarza sekwencję zdarzeń: najpierw pojawia się nowy tick z ceną, potem twoja strategia go „widzi” i może podjąć decyzję, a dopiero potem silnik symuluje wysłanie zlecenia i jego realizację, uwzględniając wszystkie omówione wcześniej niedoskonałości – spread, slippage, kolejkowanie. Tylko taka drobiazgowość pozwala na zachowanie pełnej zgodności z oryginałem procesu handlowego. To jest różnica między oglądaniem zdjęcia z wakacji a byciem na tych wakacjach – na zdjęciu wszystko jest idealne i nieruchome, podczas gdy rzeczywistość jest dynamiczna, chaotyczna i pełna nieoczekiwanych zdarzeń.

Nawet najlepszy symulator może jednak wpaść w pułapkę przeszłości. Dlatego absolutnie niezbędnym krokiem, który oddziela amatorów od profesjonalistów, jest przetestowanie strategii na out-of-sample data, czyli na danych, których strategia nigdy wcześniej „nie widziała”. Wyobraź to sobie tak: uczysz się do egzaminu. Jeśli cały czas rozwiązujesz te same, znane Ci zadania, to świetnie je zdasz, ale nie masz pojęcia, czy naprawdę zrozumiałeś materiał. Dopiero kiedy dostaniesz zupełnie nowy zestaw zadań (out-of-sample), okazuje się, czy Twoja wiedza jest uniwersalna. W backtestingu robi się to najczęściej poprzez walk-forward analysis (analizę kroczącą). Działa to następująco: bierzesz kawałek danych (np. 2 lata), optymalizujesz na nich parametry strategii, a następnie testujesz te optymalne parametry na kolejnym kawałku danych (np. na kolejnych 6 miesiącach), który był przed Tobą ukryty. Potem przesuwasz okno do przodu i powtarzasz proces. Jeśli strategia konsekwentnie daje dobre wyniki na każdym z tych „świeżych” kawałków, masz mocny dowód na jej solidność i realną zgodność z oryginałem w przyszłości. To jest najbliższe prawdy sprawdzian, jaki możemy przeprowadzić, nie ruszając się od komputera.

Ostatecznie, budowanie silnika backtestowego to nieustanny kompromis między precyzją a wydajnością. Symulacja tick-by-tick na 20 latach danych dla 5000 instrumentów to zadanie dla superkomputera, a nie dla Twojego laptopa. Dlatego trzeba mądrze wybierać. Dla strategii intraday, otwierającej dziesiątki pozycji dziennie, tick-data jest must-have. Dla strategii inwestycyjnej, trzymającej akcje przez miesiące, może wystarczyć dokładny model dzienny, ale z mocno restrykcyjnymi zasadami anty-look-ahead. Pamiętaj, chodzi o to, abyś nie oszukiwał samego siebie. Tani, ładny wynik backtestu to puste kalorie – smakuje dobrze, ale nie daje prawdziwej siły. Prawdziwa wartość leży w brutalnie uczciwym, może brzydszym wyniku, który maksymalnie przybliża Cię do zrozumienia, jak strategia zachowa się w prawdziwym, żywym, nieprzewidywalnym świecie rynków finansowych. To jest esencja prawdziwej zgodności z oryginałem.

Porównanie typów symulacji w backtestingu pod kątem wierności warunkom rynkowym
Na cenach zamknięcia (Close Price) Niski (tylko cena zamknięcia bary) Bardzo Wysoka Bardzo Niski (nierealistyczny) Niskie Edukacja, szybkie prototypowanie (OSTROŻNIE!)
Na bary OHLC (Open, High, Low, Close) Średni (4 punkty na bar) Wysoka (jeśli nie używa się open'a) Niski Niskie/Średnie Strategie swingowe, analiza wstępna
Event-Based / Tick-by-Tick Bardzo Wysoki (każda zmiana ceny) Bardzo Niska (przy poprawnym kodzie) Bardzo Wysoki (możliwość precyzyjnego modelowania) Bardzo Wysokie Strategie HFT, arbitraż, daytrading, finalny test strategii

Psychologia i Nieliniowość: Czynniki, Których (Jeszcze) Nie Zsymulujesz

Nawet najbardziej zaawansowany technicznie backtest, który perfekcyjnie radzi sobie z modelowaniem wykonania zleceń i unika look-ahead bias jak ognia, pozostaje w istocie... piękną iluzją. To uproszczony model matematyczny, który choć dąży do maksymalnej zgodności z oryginałem, czyli realnym rynkiem, nigdy nie będzie w stanie w pełni odtworzyć kilku kluczowych, ludzkich i losowych elementów układanki. Możemy precyzyjnie symulować ceny, wolumeny, a nawet slippage, ale jak zasymulować paraliżującą niepewność w momencie, gdy portfel traci 5% wartości w ciągu minuty, a ty masz przed oczami wizję utraty swoich ciężko zarobionych pieniędzy? Albo euforię, która każe ci łamać własne zasady managingu ryzyka, bo "tym razem to na pewno się uda"? To jest właśnie ta fundamentalna różnica między zimną, historyczną analizą a gorącą, realną decyzją handlową, podejmowaną pod ogromną presją czasu i emocji. Silnik backtestingu przetwarza dane; trader przetwarza strach, chciwość, nadzieję i rozczarowanie. I nie, nie jesteś robotem – przynajmniej jeszcze nie – więc te emocje są nieodłącznym elementem twojego tradingu.

Właśnie ta ludzka, emocjonalna strona jest jednym z największych limitations backtestingu. Backtest pokaże ci suchy wynik: "Strategia A przy tych parametrach dała 15% zwrotu w ciągu roku". Ale nie pokaże ci, czy ty, jako człowiek, byłbyś w stanie wytrwać w tej strategii przez te 12 miesięcy. Czy przetrwałbyś okresy drawdownu, które w historii wyglądają jak niewinne, zielone kreseczki na wykresie equity, ale w rzeczywistości trwały tygodniami i były pasmem codziennych, małych porażek? Aby choć trochę zbliżyć się do prawdy i zwiększyć zgodność z oryginałem, doświadczeni traderzy celowo "psują" swoje idealne modele. Świadomie zawyżają szacowany slippage, dodają dodatkowe punkty opłaty transakcyjnej lub testują strategię na znacznie mniejszym leverage'u niż wynika to z obliczeń. To jest próba "symulacji stresu" – jeśli system nadal jest opłacalny przy tych, gorszych niż w rzeczywistości, założeniach, istnieje większa szansa, że przetrwa prawdziwe, nieidealne warunki rynkowe i twoje własne, nieidealne decyzje. To taki test wytrzymałościowy dla strategii, zanim wystawisz ją na prawdziwą próbę.

Kolejnym gigantycznym murem, o który rozbija się wiele pozornie doskonałych systemów, jest nieliniowość rynku i zjawisko czarnego łabędzia. Backtest operuje na znanej, zamkniętej historii. Wie, co się wydarzyło. Ale rynek to żywy organizm, pełen nieprzewidywalnych, nieliniowych zdarzeń, które pojawiają się znikąd i zmieniają wszystko. Możesz przetestować swoją strategię na danych z lat 2000-2007 i będzie wyglądać rewelacyjnie. A potem przychodzi rok 2008 i kryzys finansowy – zdarzenie, którego twój model nie widział i nie mógł uwzględnić. Albo pandemia w 2020 roku. Albo wojna. Albo nagła, niespodziewana decyzja banku centralnego. Żaden backtest nie przewidzi każdego Czarnego Łabędzia. To nie jest jego wada, to jest jego inherentna cecha. Akceptacja tego faktu jest kluczowa dla każdego rozsądnego tradera. Zrozumienie, że model ma swoje granice, że jest narzędziem, a nie wyrocznią, oddziela profesjonalistów od amatorów, którzy ślepo wierzą w historyczne krzywe equity. Prawdziwa zgodność z oryginałem polega też na uznaniu, że oryginał (prawdziwy rynek) jest z natury nieprzewidywalny i że nasze modele są tylko jego przybliżeniem.

W tym kontekście, jedną z najzdrowszych metafor, jakie można przyjąć, jest traktowanie backtestu jako mapy, a nie samego terytorium. Mapa to niezwykle przydatne narzędzie. Pokazuje główne szlaki, przeszkody terenowe, odległości. Dzięki niej możesz zaplanować podróż, oszacować czas i uniknąć poważnych błędów. Ale mapa nie jest samym lasem, górami czy rzeką. Nie oddaje w pełni wilgotności powietrza, nieprzewidzianego osunięcia ziemi, spotkania z dzikim zwierzęciem czy nagłej zmiany pogody. W tradingu backtest jest twoją mapą. Pokazuje historyczne zależności, potencjalne zyski i ryzyka. Ale prawdziwy rynek to terytorium – dzikie, nieprzewidywalne i pełne niespodzianek. Im lepszej jakości jest twoja mapa (czyli im wyższy stopień zgodności z oryginałem udało ci się osiągnąć w symulacji), tym większe masz szanse na bezpieczną podróż. Ale nigdy nie możesz być pewien, że mapa pokazuje absolutnie wszystko. Zawsze musisz być gotowy na niespodzianki, które wymagają improwizacji i solidnego zarządzania ryzykiem w czasie rzeczywistym. To połączenie zaufania do swojej mapy (backtestu) z pokorą wobec terytorium (rynku) jest sednem przetrwania i sukcesu w dłuższej perspektywie. Pamiętaj, że dążenie do absolutnej zgodności z oryginałem jest celem, który przyświeca nam po to, by zminimalizować ryzyko, a nie je całkowicie wyeliminować – bo to drugie jest po prostu niemożliwe.

Warto zobrazować to, jak różne czynniki psychologiczne, których nie odda żaden backtest, wpływają na końcowy wynik handlowy. Poniższa tabela przedstawia kilka kluczowych przykładów tego zniekształcenia.

Rzeczywiste czynniki psychologiczne vs. symulacja backtestu
Strach przed stratą (Loss Aversion) Skłonność do zbyt wczesnego zamykania zysków (aby "zablokować zysk") i za późnego cięcia strat (bo "może wróci"). Brak symulacji. Backtest wykonuje zlecenia ściśle według zdefiniowanych zasad. Bardzo wysokie. Wynik backtestu będzie zawyżony, ponieważ nie uwzględnia suboptymalnych decyzji opartych na strachu.
Euforia i chciwość Zwiększanie pozycji ponad ustalone limity ryzyka, ignorowanie sygnałów wyjścia, łamanie zasad systemu. Brak symulacji. Backtest nie zwiększa leverage'u ani nie ignoruje sygnałów poza zdefiniowanymi parametrami. Wysokie. Może prowadzić do zawyżenia zwrotu i niedoszacowania ryzyka w backteście.
Znużenie i wypalenie Pomijanie dobrych sygnałów handlowych, obniżona koncentracja prowadząca do błędów w zleceniach. Brak symulacji. Backtest jest "skupiony" i "wypoczęty" przez cały okres testowy. Średnie. Może prowadzić do lepszych wyników w backteście niż w rzeczywistości.
Presja po serii strat Rezygnacja z systemu w najgorszym możliwym momencie lub agresywna próba "odegrania się", łamiąc zasady. Brak symulacji. Backtest mechanicznie kontynuuje handel zgodnie z planem, niezależnie od "samopoczucia". Krytyczne. Backtest przetrwa drawdown, podczas gdy trader ludzki często rezygnuje, zamieniając teoretyczną stratę chwilową w realną.

Kluczowym wnioskiem jest więc to, że dążąc do technicznej doskonałości backtestu, nie wolno nam popadać w iluzję, że to wystarczy. Prawdziwa zgodność z oryginałem to także zgodność z oryginałem naszych własnych, ludzkich reakcji. A te są nieprzewidywalne. Dlatego backtest to tylko jeden, choć niezwykle ważny, krok w procesie weryfikacji strategii. Jego zadaniem jest odfiltrowanie pomysłów, które są obiektywnie złe już na poziomie matematycznym. Jednak ostatecznym testem dla strategii i – co najważniejsze – dla ciebie jako tradera jest forward testing lub paper trading, gdzie na jaw wychodzą wszystkie twoje słabości. To tam, w środowisku, które maksymalnie stara się odtworzyć zgodność z oryginałem warunków rynkowych, ale z twoimi prawdziwymi, niezasymulowanymi emocjami, zapadają najważniejsze decyzje. Czy ta strategia jest dla ciebie naprawdę wykonalna? Czy możesz z nią żyć? Odpowiedź na te pytania często bywa dużo bardziej wartościowa niż jakikolwiek, nawet najbardziej optymistyczny, wynik backtestu.

Checklista Zgodności: Kroki do Backtestu, Któremu Możesz Zaufać

No dobra, przelecieliśmy przez całą tę teorię o tym, jak backtest to tylko model, a nie rzeczywistość, i jak nasz mózg lubi nas oszukiwać. Czas na konkrety! Czas na działanie! Bo co z tego, że wiemy o wszystkich pułapkach, jeśli nie wiemy, jak ich uniknąć w praktyce? Ten rozdział to Twoja osobista checklista, Twój święty graal w dążeniu do backtestowej perfekcji. To zestaw praktycznych, konkretnych kroków, które musisz przejść, żeby Twoje testy historyczne miały jak największą **zgodność z oryginałem**, czyli rzeczywistym rynkiem. Pomyśl o tym jak o inspekcji przed lotem – pomija się ją na własne ryzyko, a konsekwencje mogą być… no, dosłownie bolesne dla portfela.

Zacznijmy od absolutnej podstawy, od fundamentu, na którym budujesz cały swój backtestowy gmach. Mówiąc wprost: śmieci na wejściu dają śmieci na wyjściu (Garbage In, Garbage Out). To tak, jakbyś chciał upiec mistyczne ciasto według starej rodzinnej receptury, ale zamiast mąki użył piasku z sandboxa – efekt będzie co najwyżej… architektoniczny, a nie kulinarny. Dlatego Krok 1 to bezwzględny audyt danych. Musisz wiedzieć wszystko o surowcach, z których korzystasz. Po pierwsze, źródło: skąd te dane? Giełda? Broker? Zewnętrzny dostawca? Każde źródło może mieć swoje małe „przekłamania” w timingach czy wolumenach. Dane z brokera mogą być świetne, ale pamiętaj, że to perspektywa jednego uczestnika rynku, a nie obraz całości. Po drugie, i to jest *megaważne*, **adjustements (korekty)**. Spółki lubią robić splity (splitowanie akcji) i dywidendy. Jeśli testujesz strategię na historycznych cenach Apple'a bez uwzględnienia wszystkich splitów, Twoje sygnały kupna sprzed 20 lat będą dotyczyć… no, praktycznie darmowych akcji w porównaniu do dzisiejszych. Backtest będzie bezużyteczny, pokazując zyski, które są fizycznie niemożliwe do osiągnięcia. Musisz używać danych, które uwzględniają te korekty, bo inaczej tracisz **zgodność z oryginałem** historycznych move'ów. Po trzecie, **kompletność**. Brakujące świece? Luki w danych w czasie jakichś kryzysów? To właśnie w tych momentach Twój algorytm mógłby się wykazać (albo totalnie skapitulować), a brak danych sprawia, że test omija najciekawsze, choć najtrudniejsze okresy. Sprawdź daty, sprawdź godziny, sprawdź, czy nie ma absurdalnych outlier'ów (cena 0.01$ na Amazonie? Raczej nie.). To mozolna praca, ale bez niej cała Twoja后续 praca idzie na marne.

Dobra, dane mamy (mamy nadzieję) czyste. Czas na kolejny ogromny pożeracz zysków, który amatorzy pomijają, a profesjonaliści skrupulatnie liczą. Krok 2: Precyzyjne zdefiniowanie WSZYSTKICH kosztów i modelu executionu (wykonania zleceń). To jest prawdopodobnie największy i najczęstszy grzech popełniany przy backtestach. Ludzie zakładają, że kupują i sprzedają po cenie zamknięcia. Rzeczywistość boli. W prawdziwym tradingu płacisz. Płacisz spread, prowizję, a czasem jeszcze slippage. Jeśli Twoja „cudowna” strategia pokazuje 5% zysku rocznie, ale zapomnisz doliczyć prowizję w wysokości 0.1% od transakcji, a handlujesz 100 razy w roku… no cóż, matematyka jest nieubłagana. 100 transakcji * 0.1% * 2 (kupno i sprzedaż) = 20%. Witaj w świecie 15% straty. A to bez slippage'u! Dlatego musisz to *bezwzględnie* uwzględnić. Zdefiniuj realny spread dla danej pary walutowej lub akcji (nie ten minimalny, który widzisz o 3 w nocy, tylko ten w godzinach największej płynności, a może nawet ten gorszy). Ustal realną prowizję swojego brokera. I na koniec – **slippage**. To temat-rzeka. Jak modelować to, że duże zlecenie może przesunąć cenę? Jedna z metod to świadome zawyżanie jego szacunkowej wartości. Jeśli myślisz, że średni slippage to 1 tick, testuj z 2 lub 3. To pesymistyczne założenie da Ci dużo bardziej realistyczne wyniki i zapewni wyższą **zgodność z oryginałem** warunków transakcyjnych. Pamiętaj, backtest, który nie uwzględnia kosztów, to jak samochód wyścigowy bez opon – ładnie wygląda na papierze, ale nie pojedzie.

Teraz, gdy mamy dane i znamy koszty, przychodzi czas na właściwy bieg. I tu czai się kolejny podstępny potwór: look-ahead bias, czyli podglądanie przyszłości. Krok 3: Uruchomienie backtestu z uwzględnieniem unikania look-ahead bias. Twój algorytm musi być głupi w określonym momencie. Może wiedzieć tylko to, co wiedziałby trader w *tamtej* konkretnej chwili. To brzmi banalnie, ale w praktyce to bardzo łatwo zepsuć. Klasyczny błąd: używasz dzisiejszej średniej kroczącej ze 100 dni do obliczenia sygnału sprzed 6 miesięcy. Problem? 6 miesięcy temu nie było jeszcze danych z ostatnich 100 dni! Musisz obliczać wskaźniki *tylko* na podstawie danych dostępnych do danego punktu w czasie. Większość nowoczesnych platform do backtestu robi to automatycznie (o ile dobrze skonfigurujesz data offset), ale jeśli piszesz coś sam w Pythonie, musisz być niezwykle czujny. Każda pętla, każde obliczenie musi być wykonane z perspektywy historycznej, a nie z wszechwiedzącej perspektywy „teraźniejszości”. To jest kluczowe dla zachowania **zgodności z oryginałem** procesu decyzyjnego. Inaczej testujesz superbohatera, który zna przyszłość, a nie swoją strategię.

Załóżmy, że przejechałeś swój backtest na danych z lat 2010-2020. Wyniki są oszałamiające. Zysk 1000%! Ale… czy na pewno? A co, jeśli Twoja strategia idealnie dopasowała się (*overfitting*) do tych konkretnych, historycznych warunków? Żeby to zweryfikować, musisz przejść Krok 4: Ścisłą walidację na danych out-of-sample (OOS). To jest jak oddzielenie części tortu, której nie dotknąłeś, żeby później sprawdzić, czy smakuje tak samo dobrze. Z twojego pełnego zestawu danych (np. 2010-2020) wyodrębniasz kawałek, którego NIE użyjesz do budowy ani optymalizacji strategii. Na przykład lata 2010-2018 to twój zbiór treningowy (in-sample). Na jego podstawie budujesz reguły. A potem… zapominasz o nim. Bierzesz zupełnie świeży, nietknięty okres, np. 2019-2020, i puszczasz na nim swoją strategię *bez żadnych zmian*. To jest prawdziwy test. Jeśli wyniki na danych out-of-sample są zbliżone (oczywiście z uwzględnieniem zmienności rynkowej) do tych in-sample, masz powód do ostrożnego optymizmu. Jeśli strategia na OOS datach totalnie się sypie, oznacza to, że prawdopodobnie ją przeoptymalizowałeś i nadaje się tylko do kosza. Ten krok to najpotężniejsza broń przeciwko overfittingowi i absolutny must-have dla każdego, komu zależy na **zgodności z oryginałem** przyszłych, nieznanych warunków rynkowych.

Jesteś już więc na ostatnim etapie. Backtest wygląda solidnie, dane są czyste, koszty uwzględnione, a walidacja out-of-sample potwierdza robustność strategii. Czy to znaczy, że można już zaryzykować cały swój kapitał? Absolutnie nie! Przed Tobą Krok 5: Paper trading / forward test jako ostateczny poligon. Backtest, nawet najlepszy, to wciąż test na danych historycznych. Forward test to uruchomienie swojej strategii na *teraz* żywych, rzeczywistych danych, ale bez ryzykowania prawdziwych pieniędzy (lub ryzykując symboliczną kwotę). Większość platform brokerskich oferuje tryb paper tradingu, gdzie dostajesz wirtualny portfel z wirtualną kasą. To jest moment prawdy, gdzie sprawdzasz wszystkie te założenia, które teoretyzowałeś: realny execution, realny slippage, realne spready w czasie rzeczywistym. To tutaj możesz złapać techniczne problemy: czy zlecenia są wystawiane wystarczająco szybko? Czy API brokera nie ma opóźnień? Czy wszystko działa tak, jak powinno, gdy rynek zaczyna się trząść? Paper trading to symulacja tak bliska rzeczywistości, jak to tylko możliwe, bez ryzyka bankructwa. To ostateczny sprawdzian **zgodności z oryginałem** twojego systemu. Dopiero gdy through forward test przejdzie pomyślnie przez kilka miesięcy (a najlepiej przez różne warunki rynkowe: trendy, boczniaki, dużą zmienność), możesz *naprawdę* powoli zacząć myśleć o wdrożeniu go na prawdziwe pieniądze. Pamiętaj, cierpliwość to cnota tradera.

Checklista wierności backtestu: Kluczowe kroki i ich wpływ na zgodność z oryginałem
1. Audyt Danych Weryfikacja źródła, kompletności danych, korekt (splity, dywidendy). Używanie nieskorygowanych danych, akceptowanie luk. Brak sztucznych zysków/strat wynikających z błędów w danych.
2. Koszty & Execution Modelowanie realnych spreadów, prowizji, slippage'u (nawet zawyżonego). Handel po cenach zamknięcia, pomijanie kosztów transakcyjnych. Expectancy strategii pozostaje dodatnie po odjęciu ALL-IN kosztów.
3. Unikanie Look-Ahead Kalkulacja wskaźników tylko na podstawie danych dostępnych w danym momencie. Używanie przyszłych danych do generowania sygnałów (np. ceny zamykającej dnia). Sygnály są generowane w czasie rzeczywistym, bez dostępu do przyszłych informacji.
4. Walidacja Out-of-Sample Test na zupełnie nowym, nieużywanym do optymalizacji, okresie danych. Optymalizacja na całym zbiorze danych, brak rezerwy na test OOS. Wyniki OOS są statystycznie zbliżone do wyników in-sample (brak drastycznego spadku performance).
5. Forward Test / Paper Trading Uruchomienie strategii na żywych danych w symulowanym środowisku. Pominięcie tego etapu i przejście od razu na realne pieniądze. Strategia działa stabilnie technicznie, a realne spread/slippage są zbliżone do założeń z kroku 2.

Podsumowując tę epiczną checklistę, chciałbym, żebyś zapamiętał jedną rzecz: backtest to potężne narzędzie, ale to Ty jesteś odpowiedzialny za jego kalibrację. To nie jest coś, co robisz raz i odhaczasz. To iteracyjny, ciągły proces udoskonalania i weryfikacji. Każdy z tych pięciu kroków to kolejna warstwa ochronna przed niebezpiecznymi iluzjami, które czyhają na każdego tradera. Przestrzeganie ich nie gwarantuje sukcesu (bo rynek to żywy organizm, a nie maszyna), ale *radykalnie* zwiększa szanse na to, że to, co zobaczyłeś w testach, będzie miało jakiekolwiek przełożenie na rzeczywistość. Prawdziwa **zgodność z oryginałem** to cel, do którego się dąży, wiedząc, że 100% jest nieosiągalne, ale 95% to już ogromny, przewagodający sukces. Więc drukuj tę checklistę, wieszaj nad monitorem i traktuj ją jak swoją backtestową biblię. Twój portfel Ci podziękuje. A teraz – do roboty!

Czy naprawdę muszę przejmować się takimi drobiazgami jak dokładny spread sprzed lat?

To zależy od twojej strategii. Jeśli jest to strategia high-frequency lub scalpingowa, gdzie zysk na jednej transakcji jest minimalny, absolutnie tak. Dokładny spread to różnica między zyskiem a stratą. Dla długoterminowego inwestora, który trzyma pozycje miesiącami, może to mieć mniejsze znaczenie niż np. dokładne modelowanie dywidend. Ale ogólna zasada jest taka: lepiej być dokładnym i spać spokojnie, niż przekonać się na realnym rynku, że twoja "drobiazgowa" strategia jest nierentowna.

Jakie jest najtańsze, ale wciąż wiarygodne źródło danych do backtestingu?

Dla początkujących i hobbystów dobrym punktem startowym są często dane dostępne przez brokerów (np. API) lub platformy takie jak TradingView. Pamiętaj jednak, aby je zawsze zweryfikować z innym źródłem, chociażby Yahoo Finance (chociaż i tam bywają błędy). Dla poważniejszych testów warto rozważyć inwestycję w profesjonalne feedy od dostawców takich jak Bloomberg, Refinitiv (LSEG) czy specjalistycznych firm dostarczających dane historyczne. Pamiętaj:

Taniość danych na starcie może drogo cię kosztować na mecie.
Czym jest "look-ahead bias" i jak go całkowicie wyeliminować?

Look-ahead bias (pol. "bias patrzenia w przyszłość") to podstępny błąd, polegający na tym, że twoja strategia w backteście nieświadomie korzysta z informacji, które w rzeczywistości nie były jeszcze dostępne w momencie podejmowania decyzji. Klasyczny przykład: używanie dzisiejszego zamknięcia do obliczenia wskaźnika, a następnie zawieranie transakcji na today's open – w realu na open nie znalibyś jeszcze today's close.

Używaj opóźnionych danych w formułach i przetestuj swój algorytm na serii danych krok po kroku, tak jakby czas naprawdę płynął.

Ile powinien trwać minimalnie wiarygodny backtest?

Nie ma jednej magicznej liczby, ale im dłużej, tym lepiej. Pojedynczy cykl rynkowy (hossa-bessa) to absolutne minimum. Dla akcji to często okres przynajmniej 5-10 lat. Dlaczego? Musisz zobaczyć, jak twoja strategia radzi sobie w różnych warunkach: trendach wzrostowych, spadkowych i bocznych. Backtest na samym rynku wzrostowym (bull market) będzie niemal zawsze optymistyczny i nieprawdziwy. Test na zbyt krótkim okresie to jak ocenianie pogody tylko po jednym słonecznym dniu – nie dowiesz się, czy potrzebujesz parasola.

Paper trading a backtesting – czym się różnią i które jest lepsze?

To dwa różne, ale uzupełniające się narzędzia.

  • Backtesting: Testowanie na historycznych danych. Szybkie, pozwala przetestować dziesiątki lat w minutę, ale opiera się na modelach i założeniach (slippage, execution).
  • Paper trading (lub forward testing): Testowanie strategii na aktualnych, live danych, ale bez ryzyka realnych pieniędzy. Sprawdza, jak twoje modele radzą sobie z prawdziwym, nieznanym przyszłości rynkiem.
Żadne nie jest "lepsze". Najlepsze praktyki to: najpierw solidny backtest na długiej historii, a potem walidacja poprzez paper trading na żywym rynku, zanim powierzysz strategii prawdziwy kapitał.