Agent AI tworzący strategię może wygenerować poprawny backtest, korzystając przy tym z informacji, które nie były jeszcze dostępne w chwili, gdy miały zostać zawarte transakcje. Kod działa. Krzywa kapitału wygląda wiarygodnie. Sygnał może nawet mieć sens. A jednak znacznik czasu, złączenie danych lub zaktualizowane pole po cichu podsuwa mu odpowiedź z przyszłości.
Rozwiązaniem jest uwzględnienie czasu dostępności w zasadach prowadzenia badań. Dla każdego wejścia trzeba jasno odpowiedzieć na 2 pytania: jakiego okresu dotyczy ta wartość i kiedy strategia mogła ją po raz pierwszy poznać?
Jak wygląda lookahead bias w strategii wygenerowanej przez AI?
Najbardziej oczywisty przypadek to sygnał obliczony na podstawie ceny zamknięcia świecy, po którym następuje realizacja zlecenia po tej samej cenie zamknięcia. Jeśli strategia potrzebuje ceny zamknięcia do podjęcia decyzji, nie może jednocześnie zawrzeć transakcji po tej cenie. Agenci często tworzą jednak subtelniejsze wersje tego problemu podczas łączenia źródeł danych lub wybierania wygodnych ustawień domyślnych.
Załóżmy, że model oblicza 20-okresową średnią kroczącą na zamknięciu każdej minuty i otwiera pozycję, gdy cena zamknięcia ją przekracza. Jeśli backtest zakłada realizację zlecenia po tym samym zamknięciu, wykorzystuje ostatnią transakcję z danej świecy, zanim była ona dostępna dla strategii. Przesunięcie zlecenia na otwarcie następnej świecy może być rozsądnym przybliżeniem, choć zlecenie rynkowe nadal wymaga uwzględnienia opłat i wpływu na cenę.
Teraz zamiast tego użyjmy jako cechy dziennej wartości fundamentalnej dla akcji albo migawki open interestu na rynku krypto. Data w wierszu może wskazywać poniedziałek, ale wartość mogła zostać opublikowana po poniedziałkowym zamknięciu albo skorygowana później. Data nie jest znacznikiem czasu dostępności.
Jak oznaczać czas danych wejściowych strategii?
Jeśli źródło na to pozwala, zachowuj co najmniej 3 rodzaje czasu: okres, którego dotyczy wartość, moment jej publikacji przez dostawcę oraz moment jej otrzymania przez twój system. Zbiór informacji strategii w chwili podejmowania decyzji może obejmować tylko wartości dostępne do tego momentu.
| Pole | Na jakie pytanie odpowiada | Typowa pułapka |
|---|---|---|
| Czas zdarzenia | Kiedy nastąpiło zdarzenie rynkowe? | Użycie ceny zamknięcia świecy, zanim świeca zostanie ukończona |
| Czas publikacji | Kiedy źródło opublikowało tę wartość? | Traktowanie etykiety oznaczającej koniec dnia tak, jakby publikacja nastąpiła na jego początku |
| Czas pobrania | Kiedy system badawczy mógł z niej skorzystać? | Pominięcie opóźnienia po stronie dostawcy lub potoku danych |
| Czas korekty | Kiedy zarejestrowano lub skorygowano tę wersję? | Uzupełnianie historii skorygowanymi danymi tak, jakby były oryginalne |
W strategii 1-minutowej opóźnienie o 1 sekundę nie jest automatycznie nieistotne. To, czy ma znaczenie, zależy od chwili podejmowania decyzji i od tego, czego używa sygnał. Jeśli wejściem jest statystyka godzinowa obliczona na kompletnych danych, opóźnienie może mieć znikomy wpływ. Jeśli chodzi o nierównowagę arkusza zleceń zmierzoną tuż przed złożeniem zlecenia, może odwrócić transakcję.
Czy magazyn danych point-in-time może zapobiec przeciekom informacji?
Może pomóc, jeśli „point-in-time” oznacza, że da się pobrać wartość znaną w historycznej chwili podejmowania decyzji, łącznie z wersją obowiązującą wtedy. Tabela, która zawiera tylko historyczne daty, może nadal przechowywać dzisiejsze skorygowane wartości dla tych dat.
Dla każdego rekordu zachowuj przedział obowiązywania i znacznik czasu dostępności, a kolejne wersje zapisuj zamiast nadpisywać poprzednie. Następnie formułuj zapytania historyczne wprost: zwracaj najnowszą wersję dostępną w symulowanej chwili podjęcia decyzji. To szczególnie ważne w przypadku danych fundamentalnych, składu indeksów, publikacji danych ekonomicznych i zbiorów danych oczyszczonych przez dostawców.
Jest też mało efektowny problem operacyjny: idealny znacznik czasu publikacji jest bezużyteczny, jeśli zadanie pobierające dane uruchomiło się z 20-minutowym opóźnieniem. Jeśli historyczny magazyn nie zapisuje czasu pobrania, przyjmij konserwatywne opóźnienie i wyraźnie o tym poinformuj. Precyzja, której źródło nigdy nie rejestrowało, jest tylko ozdobą.
Jakie kontrole wykrywają lookahead bias przed paper tradingiem?
Poproś agenta badawczego, by oprócz backtestu wygenerował oś czasu cech i zleceń. Dla każdej decyzji zapisuj najpóźniejszy czas dostępności źródła dla każdej cechy, czas podjęcia decyzji, czas złożenia zlecenia i modelowany czas realizacji. Odrzucaj każdy wiersz, w którym dane wejściowe dotarły po podjęciu decyzji.
- Przesuń sygnały o 1 świecę w przód i porównaj wyniki. Gwałtowne pogorszenie może ujawnić zależność od synchronizacji między ceną zamknięcia a kolejnym zamknięciem, ale to tylko test diagnostyczny, a nie dowód przecieku.
- Ogranicz każde źródło do danych sprzed historycznej daty granicznej, ponownie uruchom potok i porównaj uzyskane cechy z zapisanymi cechami historycznymi.
- Zastąp podejrzaną cechę stałą wartością. Jeśli wyniki pozostaną niemal identyczne, sprawdź, czy kod rzeczywiście korzystał z zamierzonego szeregu danych.
- Przepuść przez potok celowo niemożliwą cechę z przyszłości. Walidacja powinna wyraźnie zgłosić błąd, gdy jej czas dostępności wypada po chwili podjęcia decyzji.
Te kontrole nie poświadczają, że strategia jest poprawna. Uwidaczniają konkretne założenia dotyczące czasu i wykrywają typowe naruszenia tych założeń.
Czy paper trading dowodzi, że w backteście nie było przecieku?
Nie. Paper trading może ujawnić, że bieżąca ścieżka danych jest opóźniona, niekompletna albo inaczej zsynchronizowana niż ścieżka historyczna. Nie potwierdzi, że dawne cechy treningowe odzwierciedlały to, co wiedziano w danym momencie. Model może też przestać czerpać korzyści z przecieku po prostu dlatego, że przyszłość, którą przypadkiem widział, stała się teraźniejszością.
Traktuj paper trading jako kontrolę zgodności: porównuj bieżące wartości cech, znaczniki czasu decyzji, generowanie zleceń i modelowane realizacje z definicjami użytymi w backteście. Jeśli się różnią, prześledź konkretny sygnał wejściowy i zegar. Zespół agentów, który potrafi wyjaśnić, jaki zbiór informacji miał przy każdej decyzji, prowadzi wartościowe badania. Zespół, który potrafi pokazać tylko gładką krzywą, pominął najtrudniejszy audyt.
← Wszystkie wpisy


