Backtest często zlicza transakcje tak, jakby sygnał bezpośrednio zmieniał się w pozycję. W paper tradingu między nimi pojawia się zlecenie. Może ono czekać w arkuszu, zostać zrealizowane częściowo, anulowane lub odrzucone, a także pozostać aktywne po zmianie sygnału. Jeśli symulowana strategia pomija ten cykl życia, liczba transakcji i ekspozycja mogą niewiele mieć wspólnego z tym, co zapisuje rachunek paper trading.
Praktycznym rozwiązaniem jest traktowanie zleceń jako trwałych obiektów ze stanami i znacznikami czasu. Sygnał to polecenie podjęcia próby zawarcia transakcji, a nie dowód, że transakcja doszła do skutku.
Dlaczego moja strategia paper trading zawiera mniej transakcji niż backtest?
Zacznijmy od zleceń, które nigdy nie zostały zrealizowane. Backtest może zakładać, że każde zlecenie z limitem zostało zrealizowane, gdy tylko rynek dotknął jego ceny. Na rynku rzeczywistym samo dotknięcie ceny nie mówi, czy twoje zlecenie było na początku kolejki, czy obrócono wystarczającym wolumenem ani czy kwota była nadal dostępna, gdy zlecenie dotarło na giełdę.
Rozważmy strategię, która składa zlecenie kupna z limitem 100 USD i anuluje je po 30 sekundach. Rynek notuje cenę 100.00 USD, ale obrót przy tej cenie jest niewielki, a inne zlecenia mają pierwszeństwo. Twoje zlecenie może zostać zrealizowane w niewielkiej części albo wcale. Backtest oparty na dotknięciu ceny rejestruje pełną pozycję. Rachunek paper trading uwzględniający założenia dotyczące kolejki może nie odnotować żadnego wykonania.
W przypadku zleceń rynkowych rozbieżność wygląda inaczej. Backtest może zrealizować całą ilość po cenie otwarcia następnego słupka, podczas gdy paper trading odrzuci ilość przekraczającą limit giełdowy albo zrealizuje ją w częściach w miarę zmian arkusza. Słupek podsumowuje transakcje; nie gwarantuje, że całe twoje zlecenie mogło zostać zrealizowane po jednej cenie.
Co powinien zrobić backtest, gdy sygnał zmieni się przed realizacją zlecenia?
Pozostaw stare zlecenie aktywne, dopóki symulator nie otrzyma i nie przetworzy anulowania. Jeśli sygnał zmieni się, gdy zlecenie kupna czeka w arkuszu, strategia może chcieć je anulować i złożyć zlecenie sprzedaży. Sama taka intencja nie usuwa od razu zlecenia kupna. Może ono zostać zrealizowane, gdy anulowanie jest w drodze, przez co rachunek znajdzie się w pozycji długiej akurat wtedy, gdy nowy sygnał wskazuje pozycję krótką.
Modeluj to jako sekwencję: sygnał się zmienia, strategia wysyła żądanie anulowania, giełda potwierdza anulowanie albo zgłasza realizację, a dopiero wtedy strategia poznaje ostateczny stan zlecenia. Nawet prosty, stały czas opóźnienia może ujawnić wyścigi, które backtest z natychmiastowym anulowaniem ukrywa.
W celowo uproszczonym modelu opóźnienie anulowania wynoszące 1 sekundę i przetwarzanie przy następnym zdarzeniu mogą dać więcej informacji niż założenie, że anulowanie jest natychmiastowe. Właściwe opóźnienie zależy od giełdy i systemu; ważne, by w ogóle uwzględnić opóźnienie. Jeśli twoje zlecenie rynkowe nie ma okna na anulowanie, ten sam problem nadal dotyczy częściowych realizacji i spóźnionych raportów.
Jakie stany zlecenia powinien rejestrować symulator paper trading?
Użyj prostej maszyny stanów i zapisuj każdą zmianę wraz z jej czasem. Dokładne nazewnictwo zależy od giełdy, ale podstawowe rozróżnienia są takie same:
- Nowe lub oczekujące: złożone, ale jeszcze niepotwierdzone.
- Otwarte: przyjęte i nadal możliwe do realizacji.
- Częściowo zrealizowane: część ilości została zrealizowana; pozostała część może nadal być aktywna.
- Zrealizowane: nie pozostała żadna ilość do realizacji.
- Oczekujące na anulowanie: żądanie anulowania jest w drodze; zlecenie nadal może zostać zrealizowane.
- Anulowane, odrzucone lub wygasłe: w ramach tego zlecenia nie można już zrealizować żadnej ilości.
Rejestruj zrealizowaną ilość oddzielnie od ilości żądanej, razem z cenami realizacji i opłatami. Częściowo zrealizowane zlecenie to zarazem transakcja i aktywne zobowiązanie dotyczące pozostałej ilości. Traktowanie go jako po prostu otwartego albo zakończonego pozbawia strategię informacji potrzebnych do określenia wielkości kolejnego działania.
| Zdarzenie zlecenia | Co powinna wiedzieć strategia | Typowy skrót w backteście |
|---|---|---|
| Częściowa realizacja | Zrealizowana ilość, pozostała ilość, średnia cena | Oznacz całe zlecenie jako zrealizowane po jednej cenie |
| Żądanie anulowania | Czas żądania i późniejsze potwierdzenie anulowania lub realizacji | Natychmiast usuń zlecenie |
| Odrzucenie | Powód i informacja, czy ponowienie próby jest zasadne | Załóż, że żądana transakcja doszła do skutku |
| Wygaśnięcie | Czas, od którego zlecenie przestało kwalifikować się do realizacji | Pozostaw je otwarte do kolejnego dotknięcia ceny |
Jak rzetelnie porównać transakcje z backtestu z paper tradingiem?
Najpierw porównaj zdarzenia dotyczące zleceń, potem pozycje, a na końcu P&L. Jeśli backtest zrealizował zlecenie, którego rachunek paper trading nigdy nie wykonał, późniejsza różnica w P&L jest skutkiem, a nie miejscem, w którym należy szukać przyczyny.
Dla każdego planowanego zlecenia dopasuj oba przebiegi na podstawie stałego identyfikatora decyzji strategii lub zlecenia. Następnie sprawdź czas złożenia, żądaną cenę i ilość, czas obowiązywania, realizacje, anulowania, odrzucenia, opłaty i końcową pozycję. Zapisz też powód braku realizacji w symulacji: cena nie osiągnęła limitu, założona kolejka przed zleceniem nie została wyczyszczona albo zlecenie wygasło.
Niewielki przykład dobrze pokazuje sekwencję. Sygnał wskazuje 10 jednostek. Oba systemy składają zlecenia o 10:00:00. Backtest zakłada pełną realizację o 10:00:01. Paper trading realizuje 4 jednostki o 10:00:01, otrzymuje żądanie anulowania o 10:00:02, a następnie zgłasza realizację kolejnych 2 jednostek, zanim o 10:00:03 anulowanie zostanie potwierdzone. Rzetelne porównanie to 6 zrealizowanych jednostek wobec 10, przy czym 4 zostały anulowane. Uśrednienie wszystkiego do jednej „transakcji” ukrywa ekspozycję, jaką strategia faktycznie miała.
Czy potrzebuję pełnego symulatora giełdy, żeby zrobić to dobrze?
Nie. Backtest może zacząć od kilku jawnych założeń: czy wystarczy dotknięcie limitu, jaki wolumen musi zostać obrócony po danej cenie, by opróżnić zakładaną kolejkę przed zleceniem, jak długo zlecenia pozostają aktywne i jak działają opóźnienia anulowania. Uruchom strategię przy więcej niż jednym wiarygodnym zestawie parametrów. Jeśli wyniki zależą od założenia, że każde oczekujące zlecenie z limitem zostanie zrealizowane w całości, model mówi ci coś istotnego.
Paper trading również nie jest źródłem prawdy o jakości realizacji. Może korzystać z symulowanych wykonań i nie odwzorowywać rzeczywistej kolejki. Jego wartość w tym przypadku jest skromniejsza: pokazuje, czy strategia i jej moduł zarządzania zleceniami zgodnie obsługują oczekującą ilość, anulowanie, pozycję i ponawianie prób, gdy zdarzenia napływają z czasem.
Jest w tej pracy drobna przyjemność: dobry dziennik zleceń potrafi sprawić, że wcześniej zagadkowa rozbieżność staje się banalna. „Drugie zlecenie podrzędne zostało zrealizowane po wysłaniu żądania anulowania” brzmi lepiej niż „paper trading dziwnie działa”. Gdy backtest i rachunek paper trading się nie zgadzają, prześledź cykl życia zlecenia, zanim zmienisz sygnał.
← Wszystkie wpisy


