Strategia dzienna, która oblicza sygnał na podstawie poniedziałkowej ceny zamknięcia, nie może złożyć zlecenia po tej cenie. Może wysłać je, gdy cena jest już znana, a następnie zawrzeć transakcję po późniejszej, osiągalnej cenie. Ten drobny wybór dotyczący momentu transakcji może zmienić wynik bardziej niż sprytny wskaźnik.
Przed zapisaniem sygnału w backteście dziennym rozpisz kolejność zdarzeń: kiedy słupek jest kompletny, kiedy strategia oblicza sygnał, kiedy zlecenie trafia na rynek i po jakiej cenie mogłoby zostać zrealizowane. Jeśli wszystkie te zdarzenia przypadają na tę samą chwilę, backtest pomija najtrudniejszą część.
Czy mogę użyć dzisiejszej ceny zamknięcia, żeby zawrzeć transakcję po tej cenie?
Zwykle nie. Sygnał oparty na końcowej cenie zamknięcia jest dostępny dopiero po aukcji zamknięcia albo ostatniej transakcji. Realizacja po tej samej cenie zakłada, że strategia poznała wynik odpowiednio wcześnie, by uczestniczyć po cenie, która pomogła ten wynik wyznaczyć.
Rozważmy prostą regułę: kupuj, gdy cena zamknięcia jest powyżej 20-dniowej średniej kroczącej. Na poniedziałkowym zamknięciu warunek zostaje spełniony. Backtest, który kupuje po poniedziałkowej cenie zamknięcia, wykorzystuje ukończoną cenę z poniedziałku zarówno do podjęcia decyzji, jak i do realizacji transakcji. W podstawowym modelu opartym na słupkach dziennych uczciwe przybliżenie polega na wygenerowaniu zlecenia po zamknięciu poniedziałkowego słupka i realizacji najwcześniej na otwarciu we wtorek, z uwzględnieniem odpowiednich kosztów.
Niektóre strategie składają zlecenia na aukcję zamknięcia na podstawie informacji dostępnych przed jej godziną graniczną. Można je backtestować, ale sygnał musi wykorzystywać wyłącznie dane sprzed tej godziny, a model realizacji musi uwzględniać przebieg aukcji. Sam „sygnał dzienny” nie gwarantuje spełnienia żadnego z tych warunków.
Jaka cena realizacji jest właściwa w backteście dziennym?
Nie ma jednej uniwersalnie właściwej ceny. Cena otwarcia następnej sesji to jasne założenie początkowe, gdy sygnał powstaje na podstawie ukończonego słupka dziennego, a zlecenie jest wysyłane później. Nie jest to gwarancja: luka nocna może zmienić sytuację na rynku, a zlecenie rynkowe wiąże się ze spreadem, opłatami i potencjalnym wpływem na cenę.
Załóżmy, że poniedziałkowa cena zamknięcia wynosi $100, a we wtorek rynek otwiera się po $103. Backtest liczony od zamknięcia do zamknięcia może pokazywać niewielki zysk, jeśli udaje, że kupno nastąpiło po $100. Przy wejściu na otwarciu następnej sesji pozycja zaczyna się od $103. Różnica $3 to nie „poślizg”, który można dostroić do zera; wynika z tego, że sygnał poznaliśmy dopiero po poniedziałkowym zamknięciu.
| Kiedy sygnał staje się dostępny | Możliwy moment realizacji | Założenie modelu |
|---|---|---|
| Po dziennym zamknięciu | Otwarcie następnej sesji | Zlecenie może trafić na rynek przed otwarciem lub w chwili otwarcia |
| Przed godziną graniczną aukcji zamknięcia | Aukcja zamknięcia | Sygnał wykorzystuje wyłącznie informacje sprzed godziny granicznej; realizacja na aukcji jest modelowana |
| Po dziennym zamknięciu | Późniejsza cena śróddzienna | Strategia czeka; realizacja wymaga danych śróddziennych i określonego harmonogramu |
Na rynkach kryptowalut „dzienne zamknięcie” to umowna granica, ponieważ handel trwa także w chwili zmiany doby. Strategia może korzystać z ukończonej dziennej świecy UTC, ale musi poczekać, aż świeca zostanie zamknięta i dane dotrą. Jeśli potok danych finalizuje słupek z kilkusekundowym opóźnieniem, jeszcze trudniej uzasadnić zlecenie po cenie z chwili granicznej.
Jak modelować zlecenia, jeśli mam tylko słupki dzienne?
Określ dokładnie, co słupek może, a czego nie może pokazać. Dzienne OHLCV pozwala przyjąć przybliżenie oparte na cenie otwarcia następnej sesji, ale nie ujawnia spreadu w chwili dotarcia zlecenia, przebiegu cen w ciągu dnia ani tego, czy zlecenie z limitem znalazłoby się w kolejce przed dotknięciem danej ceny.
W przypadku dziennego zlecenia rynkowego zacznij od ceny otwarcia następnej sesji, a potem uwzględnij koszty, które strategia rzeczywiście by poniosła: opłaty giełdowe, szacowany spread i wpływ na cenę odpowiedni do wielkości zlecenia. Sprawdź też warianty z wyższymi kosztami. Jeśli wynik zależy od założenia zerowego spreadu lub znikomego wpływu na cenę, dzienne słupki nie uzasadniają takiej pewności.
To, że dzienne minimum spadło poniżej limitu zlecenia, nie dowodzi, że zlecenie z limitem zostało zrealizowane. Rynek mógł osiągnąć tę cenę, zanim zlecenie dotarło, albo przed tobą mogła być większa ilość zleceń, niż wynosił obrót. Słupki dzienne są często zbyt mało szczegółowe, by wiarygodnie modelować kolejkę. Jeśli twierdzenie zależy od realizacji śróddziennej, użyj dokładniejszych danych albo przyjmij celowo konserwatywne założenie realizacji i wyraźnie je oznacz.
Jakie kontrole wykrywają lookahead na danych dziennych?
Lubię kilka prostych kontroli, bo szybko ujawniają założenia:
- Przesuń każde zlecenie wynikające z sygnału o 1 sesję do przodu. Jeśli wyniki gwałtownie się pogorszą, sprawdź, czy pierwotny backtest nie używał ceny zamknięcia słupka sygnałowego jako ceny realizacji.
- Zapisuj osobno czas sygnału, czas złożenia zlecenia i czas realizacji. Same znaczniki czasu powinny układać się w wiarygodną sekwencję.
- Porównaj realizację po cenie otwarcia następnej sesji z późniejszą, konserwatywną ceną realizacji. Strategia, która działa wyłącznie przy najbardziej korzystnej cenie ze słupka, ma problem z egzekucją.
- Sprawdź, jak święta, brakujące słupki i zamknięcia rynku wpływają na „następną sesję”. Następny dzień kalendarzowy nie musi być sesją, podczas której można handlować.
Przesunięcie o 1 sesję to test diagnostyczny, a nie uniwersalny model egzekucji. Powolne równoważenie portfela, strategia oparta na aukcji zamknięcia i system kryptowalutowy handlujący bez przerwy wymagają różnych zegarów. Chodzi o to, by jasno określić momenty w czasie.
Czy dane dzienne sprawiają, że backtest jest mniej użyteczny?
Nie. Dane dzienne mogą być w pełni odpowiednie dla strategii, której decyzje i okresy utrzymywania pozycji liczy się w dniach lub tygodniach. Przydają się do oceny, czy ogólna reguła zasługuje na dalsze badania. Wprowadzają w błąd, gdy backtest deklaruje precyzję realizacji, której nie da się odczytać ze słupków.
Widziałem niejedną strategię, której wyniki znacząco się poprawiły, gdy ktoś zmienił „sygnał na zamknięciu, realizacja na zamknięciu” na „sygnał na zamknięciu, realizacja na otwarciu następnej sesji”. Taki wynik może rozczarowywać, ale jest cenny: pokazuje, czy pomysł sprawdza się, gdy można już na jego podstawie zawrzeć transakcję. Zapisz zasady dotyczące momentów transakcji obok kodu strategii. Inaczej w kolejnej rundzie optymalizacji niemożliwa cena realizacji po cichu wróci.
← Wszystkie wpisy


