16 sierpnia 2026 · Backtesting

Dlaczego większość backtestów kłamie i cztery pozycje kosztowe, które to naprawiają

Dlaczego większość backtestów kłamie i cztery pozycje kosztowe, które to naprawiają

Zacznijmy od liczb, bo to one są całym argumentem. Pełen obrót taker na dużej giełdzie perpów kosztuje około 0,10% nominału w prowizjach. Funding na zatłoczonej pozycji długiej potrafi zjadać 10-30% w skali roku. Zlecenie rynkowe duże względem głębokości na szczycie księgi płaci — poza spreadem — wpływ zgodny z prawem pierwiastkowym. A backtest, który czyta dzisiejszą rewizję wczorajszych danych, dostaje przewagę wartą kilka procent rocznie, która nigdy nie istniała.

0.10%koszt pełnego obrotu taker, na transakcję
0.15%minimalna przewaga na transakcję, jakiej wymagamy
4koszty pomijane przez większość backtestów

Zaskakująca jest ta pierwsza liczba. Nie dlatego, że jest duża — tylko przez to, co robi z częstotliwością handlu. Wszyscy przytakują na „uwzględnijcie prowizje", a potem testują strategię, która zawiera czterdzieści transakcji dziennie. Przy 0,10% za pełny obrót czterdzieści transakcji to 4% nominału dziennie kosztów. Na perpie o średniej kapitalizacji nie ma sygnału, który przeskoczy tę poprzeczkę. Strategia nie była nawet blisko rentowności, a backtest bez prowizji orzekł, że jest genialna.

Prowizje to filtr, a nie drobne obcięcie

Model mentalny, który nosi większość ludzi, mówi, że prowizje ścinają krzywą: ten sam kształt, tylko nieco niżej. To nieprawda. Prowizje są filtrem częstotliwości. Całkowicie wymazują wysokoczęstotliwościowe warianty danej przewagi, a wolne warianty zostawiają niemal nietknięte. Kiedy nasz pipeline zaczął egzekwować realne taryfy maker/taker per giełda, poległy nie te złe pomysły — poległy dobre pomysły handlujące zbyt często. Lekarstwem był zwykle dłuższy interwał, a nie lepszy sygnał. Dziś porzucamy wszystko, czego średni zwrot na transakcję jest niższy niż 0,15% nominału, bo po kosztach w obie strony nie zostaje nic, co mogłoby procentować.

Funding to podatek od pozycji, który ma pamięć

Kontrakty perpetual rozliczają funding co godzinę albo co osiem godzin i nie jest to szum: jest strukturalnie skorelowany dokładnie z tymi transakcjami, których chcą systemy momentum. Kiedy wszyscy są long, funding jest dodatni — i twoja długa pozycja momentum go płaci. Backtest bez naliczania fundingu systematycznie upiększa podążanie za trendem na perpach. Nauczyliśmy się tego w żenujący sposób — cała rodzina strategii funding-carry została automatycznie porzucona, bo silnik nie księgował fundingu, który miały zbierać. Sygnał był w porządku. Brakowało księgowania.

Wpływ na rynek rośnie z pierwiastkiem wielkości zlecenia

Uprzejma fikcja backtestów opartych na świecach głosi, że wchodzisz po cenie zamknięcia. Dla małych zleceń to z grubsza prawda. Dla czegokolwiek istotnego przyjęty model mówi, że wpływ rośnie z pierwiastkiem wielkości zlecenia względem wolumenu i nigdy nie wraca. Wpinamy oszacowanie wpływu według prawa pierwiastkowego w każde wypełnienie i w samą krzywą kapitału. Najbardziej boli dokładnie tam, gdzie jest najmniej wygodnie: przy pojemności. Strategia potrafi być naprawdę zyskowna przy 50 tys. USD i strukturalnie stratna przy 5 mln USD — a granicę pokazuje wyłącznie krzywa uwzględniająca wpływ.

Dane z przyszłości chowają się w danych, nie w kodzie

Nikt nie pisze if tomorrow_close > today_close: buy(). Look-ahead wkrada się przez instalację danych: sentyment z newsów stemplowany czasem publikacji zamiast czasem pozyskania, stawki fundingu łączone po okresie, którego dotyczą, a nie po momencie, w którym były znane, „aktualne" uniwersa symboli nałożone na historię (survivorship), zrewidowane odczyty makro podmieniające liczbę, która faktycznie trafiła na taśmę. Nasza zasada to point-in-time wszędzie: każdy szereg uzupełniający jest stemplowany momentem, w którym my mogliśmy go poznać, a backtest może czytać wyłącznie to, co istniało w tej nanosekundzie.

Sprawdzianem backtestu nie jest to, czy krzywa idzie w górę. Jest nim to, czy ten sam kod, karmiony tymi samymi sygnałami na żywo, generuje te same transakcje — a dowiesz się tego tylko sprawdzając, codziennie, bez końca.

To ostatnie zdanie opisuje realny proces, nie hasło. Każdego dnia odtwarzamy okno każdej strategii z paper tradingu przez silnik backtestowy i porównujemy transakcje jedna po drugiej. Kiedy paper i replay się nie zgadzają, jedno z nich kłamie — i zwykle chodzi o koszt albo o znacznik czasu. Cztery powyższe pozycje to po prostu te, które okłamały nas jako pierwsze.

backtestingprowizjefundingwpływ na rynekuczciwość
← Wszystkie wpisy