6 października 2026 · badania

Dlaczego mój backtest zawarł transakcję po cenie, której rynek nigdy nie pokazał?

Dlaczego mój backtest zawarł transakcję po cenie, której rynek nigdy nie pokazał?

Backtest może wykazać realizację zlecenia po cenie, której rynek nigdy nie pokazał. Zwykle symulator wywnioskował prawdopodobnie wyglądającą realizację na podstawie niepełnych danych: maksimum i minimum świecy, ceny środkowej albo ceny limitu, po której zawarto pojedynczą transakcję. Rejestr transakcji może przez to wyglądać precyzyjnie, choć ukrywa to, co rynek faktycznie oferował.

Zacznij od pytania, z jaką ceną Twoje zlecenie mogło wejść w interakcję. Świeca oparta na ostatnich transakcjach pokazuje, po jakich cenach zawierano transakcje w danym przedziale. Nie mówi, jakie były ceny bid i ask w chwili nadejścia zlecenia, jaka ilość była wtedy dostępna ani czy zlecenie mogło znaleźć się na początku kolejki.

Dlaczego mój backtest pokazuje realizację poza ceną rynkową?

Najpierw ustal dokładnie, co oznacza „poza”. Realizacja kupna poniżej minimum świecy lub sprzedaży powyżej jej maksimum to oczywisty błąd w księgowaniu albo synchronizacji czasu. Realizacja w przedziale między maksimum a minimum też może być fikcyjna: transakcja po tej cenie mogła nastąpić, zanim złożono zlecenie, po drugiej stronie spreadu albo w ilości zbyt małej, by zrealizować Twoje zlecenie.

Rozważ świecę jednominutową z otwarciem 100.00, minimum 99.80 i zamknięciem 100.10. Twoja strategia widzi zamkniętą świecę, składa zlecenie kupna, a symulator realizuje je po 99.80. To minimum mogło wystąpić na początku minuty, pięćdziesiąt sekund przed sygnałem. Świeca nie dostarcza dowodu, że po podjęciu decyzji cena 99.80 była dostępna.

Dostępne daneCo potwierdzająCzego nie potwierdzają
Świeca OHLCVZaobserwowany przedział cen transakcyjnych i wolumen w danym przedzialeSekwencji cen, bid i ask ani dostępności w chwili nadejścia zlecenia
Zarejestrowane transakcjeZgłoszonych realizacji wraz ze znacznikami czasu i cenamiPłynności oczekującej w arkuszu ani Twojego miejsca w kolejce
Kwotowania z najlepszej ofertyNajlepszych widocznych cen bid i ask w próbkowanych momentachGłębokości poza najlepszym poziomem ani tego, czy kwotowanie utrzymało się między próbkami
Zdarzenia w arkuszu zleceńZmian widocznej głębokości i zdarzeń w kolejce, z uwzględnieniem pokrycia strumienia danychUkrytej płynności, dostępu do giełdy ani gwarantowanego pierwszeństwa

Drugą częstą przyczyną jest mylenie ceny środkowej z ceną, po której można zrealizować zlecenie. Jeśli kwotowanie wynosi 99.99 bid i 100.01 ask, zakup po cenie środkowej 100.00 wygląda schludnie w raporcie. Zlecenie kupna złożone po cenie rynkowej zazwyczaj realizuje się po ask, a przy większym wolumenie także z wpływem na rynek. Uznanie ceny środkowej za cenę realizacji po cichu usuwa połowę spreadu.

Czy zlecenie limitowane może zostać zrealizowane tylko dlatego, że rynek osiągnął jego cenę?

Dotknięcie ceny limitu świadczy o tym, że zarejestrowano transakcję po tej cenie. Nie dowodzi jednak, że zrealizowano by Twoje oczekujące zlecenie. Jeśli przed Tobą były inne zlecenia, wolumen transakcji po tej cenie mógł być zbyt mały, by kolejka doszła do Twojej pozycji. Transakcja mogła też zostać zawarta na innej giełdzie, podczas gdy Twoje zlecenie oczekiwało gdzie indziej.

Załóżmy, że Twoje limitowane zlecenie kupna opiewa na 50.00, a po jego złożeniu rynek obraca 200 akcjami po tej cenie. Symulator oparty na samym dotknięciu ceny realizuje całe 500 akcji. Ostrożniejszy model sprawdza, jaki wolumen został obrócony po cenie 50.00 lub lepszej od chwili nadejścia zlecenia, a następnie uwzględnia szacowaną wielkość kolejki przed Tobą. Bez danych o zleceniach na poziomie pojedynczych zleceń ta kolejka jest założeniem. Powinna być widoczna w wynikach, a nie przemycona jako pewnik.

W niewielkim systemie badawczym wolę jawnie określić to założenie i przetestować różne wartości, zamiast udawać, że dane świecowe ujawniają pierwszeństwo w kolejce. Właściwy zakres zależy od giełdy, wielkości zlecenia i częstotliwości transakcji strategii. Spokojna akcja na otwarciu sesji i mało płynny kontrakt krypto o 03:00 UTC to różne problemy z realizacją.

Jak wybrać model realizacji dla danych świecowych?

Dopasuj model zarówno do danych, jak i do twierdzeń strategii. Backtest oparty na świecach może być przydatny dla wolnych strategii, ale przyjęty model realizacji powinien respektować to, co rzeczywiście pokazują świece.

  1. Określ czas decyzji i nadejścia zlecenia. Jeśli sygnał korzysta z ceny zamknięcia świecy, złóż zlecenie po jej zamknięciu. Symuluj realizację na podstawie kolejnego dostępnego przedziału lub kwotowania, a nie wcześniejszego minimum zamkniętej już świecy.
  2. Uwzględnij właściwą stronę spreadu. W przypadku zleceń kupna realizowanych po cenie rynkowej zacznij od ask, a przy sprzedaży od bid. Jeśli masz tylko świece transakcyjne, oszacuj spread z osobnego źródła albo zaznacz, że model go pomija.
  3. Ogranicz realizacje do prawdopodobnej płynności. Ustal limit udziału w zaobserwowanym wolumenie i uwzględnij opłaty oraz wpływ na rynek. Całkowity wolumen świecy nie oznacza, że cała ta ilość była dostępna po wybranej przez Ciebie cenie.
  4. Przetestuj założenia w trudniejszych warunkach. Porównaj realizacje po cenie otwarcia kolejnej świecy z konserwatywnym poślizgiem i sprawdź, czy wynik utrzymuje się przy gorszej realizacji. Nie dostrajaj modelu realizacji pod kątem tego, by strategia wygrywała.

To wybory dotyczące modelowania, a nie przepis na odtworzenie jedynej prawdziwej ceny realizacji z niepełnych danych. Jeśli strategia zależy od uzyskania kilku punktów bazowych, dane świecowe mogą nie stanowić wystarczającego dowodu na poparcie takiego twierdzenia.

Jak ustalić, na którym etapie do backtestu trafiła niemożliwa realizacja?

Prześledź podejrzaną transakcję od sygnału po rejestr. Zapisuj w osobnych polach znacznik czasu decyzji, znacznik czasu złożenia zlecenia, symulowany moment jego nadejścia, wybraną obserwację rynku, cenę realizacji, zrealizowaną ilość i opłatę. Następnie sprawdź kolejno:

Jeśli na podstawie rejestru transakcji nie potrafisz odpowiedzieć na te pytania, w backteście brakuje danych o realizacji. Dodaj odpowiednie pola, ręcznie odtwórz kilka transakcji na podstawie surowych danych i sprawdź, czy zgłoszona realizacja mogła nastąpić zgodnie z założonym modelem. Gładka krzywa kapitału nie wychwyci ceny, która istniała tylko w symulatorze.

backtestingdane rynkowerealizacja zleceńinżynieria danych
← Wszystkie wpisy