Backtest może wyglądać bardziej przekonująco, gdy pogorszysz jego dane. Usuń brzydkie odczyty, uzupełnij luki schludnymi cenami, a wskaźnik Sharpe’a może wzrosnąć. Taka poprawa może być ostrzeżeniem: reguła czyszczenia mogła wymazać dokładnie te warunki rynkowe, w których strategia musi przetrwać.
Jakość danych ma znaczenie. Skrzyżowane kwotowanie albo zdublowana transakcja mogą wygenerować realizację, której nikt nie mógł uzyskać. Jednak filtr, który usuwa niewygodne obserwacje, również jest wyborem modelowym. Podchodźmy do niego z taką samą podejrzliwością jak do nowej cechy sygnału.
Kiedy zła cena jest rzeczywiście błędnymi danymi?
Zacznijmy od pytania, co reprezentuje dana obserwacja. Transakcja daleko od dominujących cen rynkowych może być uszkodzonym rekordem, rzeczywistym zleceniem zmiatającym płytką płynność albo zdarzeniem specyficznym dla danej platformy. Świeca 1-minutowa z zerowym wolumenem może oznaczać, że nie doszło do żadnych transakcji, podczas gdy brakująca świeca może wskazywać na awarię źródła danych. Te przypadki wymagają różnego traktowania.
Rozważmy prostą strategię powrotu do średniej, która kupuje, gdy cena spada o 1% poniżej krótkiej średniej kroczącej, i zamyka pozycję po powrocie do średniej. Podczas nocnego okresu o niskiej płynności jedna transakcja zostaje zawarta 1.2% poniżej poprzedniej ceny, po czym rynek szybko odbija. Jeśli ten odczyt jest prawdziwy, strategia ze spoczywającym zleceniem limit mogła zostać zrealizowana. Jeśli to błędny tick, którego nie potwierdzało żadne wykonalne kwotowanie, uwzględnienie realizacji tworzy fikcyjną przewagę.
Usunięcie świecy nie jest automatycznie bezpieczniejsze. Strategia mogła nadal mieć zlecenie oczekujące na rynku, a następna rzeczywista transakcja mogła je zrealizować. Wiarygodna symulacja musi odtworzyć, co strategia mogła zaobserwować i względem czego jej zlecenie mogło zostać prawdopodobnie zrealizowane.
Jak reguła czyszczenia wpływa na wynik?
Uruchommy strategię przy jasno określonych sposobach przetwarzania danych i porównajmy zmiany. Zachowajmy surowe źródło i zapisujmy każde wykluczenie lub poprawkę wraz z uzasadnieniem. Następnie pokażmy, w jakim stopniu wynik zależy od tych decyzji.
| Sposób przetwarzania danych | Możliwa korzyść | Ryzyko dla backtestu |
|---|---|---|
| Usuń odczyt wykraczający poza udokumentowany zakres błędu giełdy | Zapobiega wyznaczeniu skrajnej wartości przez znany nieprawidłowy rekord | Reguła może błędnie sklasyfikować prawidłowe transakcje podczas gwałtownych ruchów rynku |
| Przenieś ostatnią cenę przez brakujący przedział | Pozwala uniknąć błędów wskaźników przy lukach | Tworzy cenę, po której mogło nie dojść do żadnej transakcji |
| Użyj skonsolidowanych kwotowań zamiast cen ostatnich transakcji | Daje lepszy obraz wyświetlanych cen realizacji | Wielkość kwotowania, dostęp do platformy i pozycja w kolejce nadal mają znaczenie |
| Usuń wszystkie świece odstające na podstawie progu statystycznego | Zmniejsza wrażliwość na wartości skrajne | Może usunąć rzeczywiste okresy napięć rynkowych, w których strategia ponosi większość strat |
Załóżmy, że Sharpe’a w przebiegu bez filtrów wynosi 0.9, a po wykluczeniu 0.8% świec wzrasta do 1.4. Samo w sobie nie dowodzi to poprawy jakości danych. Sprawdźmy, czy usunięte świece skupiają się wokół skoków zmienności, czy odpowiadają za istotną część P&L i czy reguła wykluczania została ustalona, zanim poznaliśmy wynik.
Prowadźmy rejestr wyjątków dotyczących danych: źródło, znacznik czasu, zmienione pola, powód działania oraz informację, czy decyzję podjęto przed analizą wyników strategii, czy po niej.
Jak sprawdzić, czy czyszczenie zmieniło przewagę strategii?
Zamroźmy strategię i porównajmy kilka wiarygodnych sposobów przetwarzania danych dla tych samych dat. Uwzględnijmy w miarę możliwości odtworzenie na surowych danych, zestaw udokumentowanych korekt oraz konserwatywny wariant realizacji dla nadal niejednoznacznych obserwacji. Dla każdego przebiegu podajmy liczbę transakcji, obrót, obsunięcie kapitału i wkład przedziałów objętych zmianami do P&L, obok wskaźnika Sharpe’a.
Następnie przyjrzyjmy się transakcjom, które uległy zmianie. Jeśli najlepiej zarabiające transakcje strategii znikają po wykluczeniu niewielkiej grupy podejrzanych odczytów, przeanalizujmy te rekordy pojedynczo. Jeśli znikają straty, zastosujmy taką samą kontrolę. Reguła, której dokładniej przyglądamy się tylko wtedy, gdy szkodzi backtestowi, już wpływa na wyniki badań.
Aby badanie dało się odtworzyć, wersjonujmy pliki od dostawcy lub ich sumy kontrolne, kod czyszczenia i listę wyjątków. Dostawca może zmienić dane historyczne; kolejne uruchomienie powinno pozwalać ustalić, czy zmieniła się strategia, czy dane wejściowe.
Ale czy czyszczenie nie jest konieczne?
Owszem. Pozostawienie ewidentnie uszkodzonego rekordu może wygenerować transakcję, zniekształcić zmienność albo zepsuć wskaźnik. Nie powinniśmy też udawać, że surowy strumień danych jest prawdą objawioną. Sedno jest prostsze: czyszczenie wymaga dowodów, zamrożonej reguły i analizy wrażliwości, bo może zmienić obraz rynku, który według backtestu reprezentują dane.
Gdy poprawka danych zwiększa wyniki, zapytajmy, jaką obserwację usunęła i czy podjęlibyśmy tę samą decyzję, nie widząc krzywej kapitału. Jeśli nie mamy pewności, zachowajmy obie wersje w dokumentacji badania. Różnica między nimi jest częścią wyniku.
← Wszystkie wpisy


