601 / 736LOOK

Look-ahead Bias

Błąd wykorzystania przyszłych informacji

Look-ahead Bias pojawia się, gdy test historyczny przy podejmowaniu decyzji zagląda w przyszłość. Może na przykład kupować rano na podstawie ceny znanej dopiero wieczorem. Wynik wygląda przekonująco, choć z dostępną wtedy wiedzą nie dało się tak postąpić.

Look-ahead Bias to błąd polegający na wykorzystaniu później dostępnej informacji we wcześniejszej decyzji, uczeniu modelu lub wyborze reguły. Liczy się moment, w którym można było naprawdę poznać daną, a nie tylko data w tabeli. Późniejsze zmierzenie wyniku wcześniejszej decyzji samo w sobie nie jest błędem.

Piotr sprawdza na komputerze, jak jego reguła handlowałaby w przeszłości. Tabela zawiera już całą historię, więc program może przypadkiem odczytać coś, czego Piotr nie mógł wtedy znać. Tak właśnie QuantConnect wyjaśnia Look-ahead Bias. Przy każdym wejściu trzeba zapytać: czy informacja była dostępna w chwili decyzji? Sama data nie zawsze wystarcza. Zdarzenie mogło nastąpić rano, wiadomość ukazać się później, a jeszcze później dotrzeć do inwestora. Test musi zachować tę kolejność, nie tylko posortować wiersze według daty. [2]

Świeca cenowa podsumowuje okres: cenę otwarcia i zamknięcia, maksimum, minimum oraz wolumen. Dopóki okres trwa, końcowe wartości nie są znane. Piotr nie może więc kupić na jego początku na podstawie ostatecznego maksimum tej samej świecy. LEAN, silnik używany przez QuantConnect, udostępnia zakończone dane zgodnie z EndTime, czyli czasem zakończenia. Przy łączeniu krótszych i dłuższych okresów dostępność trzeba sprawdzić oddzielnie dla każdej serii. Przesunięcie o wiersz pomaga tylko wtedy, gdy rzeczywiście odpowiada dostępności danych, z uwzględnieniem stref czasowych i opóźnień. [1]

Piotr pobiera dane gospodarcze oznaczone datami minionych miesięcy. Część liczb została jednak później poprawiona. Użycie dzisiejszej skorygowanej wartości we wcześniejszej decyzji dodaje do niej wiedzę, której wtedy nie było. St. Louis Fed rozróżnia dlatego dzisiejszy obraz przeszłości w FRED od historycznych wersji dostępnych przez ALFRED. Potrzebujemy wersji opublikowanej w danym czasie. Data miesiąca, którego dotyczy pomiar, nie wystarczy; nawet historyczna wersja z dzienną datą nie potwierdza dokładnej dostępności w ciągu tego dnia. [3]

Piotr oddziela starsze dane do uczenia od nowszych danych testowych. Następnie liczy jednak średnią z całej tabeli, aby przekształcić wejścia. Przyszłość wraca inną drogą. Dokumentacja biblioteki uczenia maszynowego scikit-learn wymaga więc dopasowania przekształceń wyłącznie do części treningowej, a dopiero potem zastosowania ich do testowej. Tak samo sprawdzamy uzupełnianie braków i wybór zmiennych wejściowych. Ważne są też wyniki służące do uczenia: świeżo otwarta transakcja nie ma jeszcze znanego ostatecznego wyniku. Można ją później ocenić, ale nie wolno przenieść tego wyniku wstecz do wcześniejszego uczenia. [4]

Historyczna świeca pokazuje maksimum i minimum, lecz sama nie odtwarza pełnej kolejności rzeczywistych transakcji. TradingView wyjaśnia zatem założenia symulatora dotyczące ruchu ceny wewnątrz świecy. Piotr musi rozróżnić powstanie sygnału, wysłanie zlecenia i możliwy moment jego wykonania. Sprzedaż po maksimum poznanym dopiero później nie staje się dostępną regułą tylko dlatego, że symulacja umie znaleźć tę cenę. Wyciek przyszłej informacji i zbyt korzystne założenie wykonania to różne błędy. Dokładniejsze dane mogą pomóc, ale nie gwarantują rzeczywistego wykonania. [5]

Freqtrade Lookahead Analysis porównuje powtarzane testy i szuka zmian wskaźników lub sygnałów. Może ujawnić obliczenie sięgające do przyszłych wierszy. Nie sprawdzi jednak gałęzi decyzyjnej, która podczas próby w ogóle się nie uruchomiła. Obok wyniku potrzebna jest więc wiedza o pokryciu. Dokumentacja ostrzega również przed fałszywymi alarmami, na przykład gdy strategia zachowuje się inaczej dla jednego rynku niż dla całej grupy. Czysty wynik nie potwierdza wszystkiego, a wykryta różnica wymaga wyjaśnienia. Sprawdzenie pochodzenia danych pozostaje częścią pracy. [6]

Piotr usuwa przyszłą informację i świetny wynik się pogarsza. Starego raportu nie może już przedstawiać jako wyniku poprawionej metody. Nie oznacza to jednak końca kontroli. TradingView odróżnia Look-ahead Bias od Overfitting: przeuczona reguła zbyt dobrze dopasowała się do szczególnych cech danych użytych przy jej tworzeniu. Może się tak stać bez danych z przyszłości. Z kolei błąd czasowy może wystąpić w bardzo prostej regule. Sama różnica między wynikiem historycznym i późniejszym nie wskazuje jeszcze, który problem lub jaka zmiana rynku ją spowodowały. [5]

Przydatny zapis pozwala odtworzyć wiedzę Piotra w danej chwili: wersję danych, reguły, stan rachunku, dostępne wejścia i wysłane zlecenia. Dodaje założenia wykonania i koszty. Paper Trading, czyli ćwiczenie handlu bez prawdziwych pieniędzy, może dostarczyć bieżących zapisów, ale symulacja nadal różni się od prawdziwego handlu. Amerykańska organizacja National Futures Association (NFA) wskazuje ograniczenia wyników hipotetycznych dotyczące płynności, różnicy między ceną oczekiwaną a ceną wykonania i decyzji podejmowanych pod presją straty; jej zasady promocji dotyczą określonych członków. Usunięcie błędu czasowego daje rzetelniejszy test, nie obietnicę przyszłego zysku. [7]

PrzykładPRZYKŁAD · LOOK

Gdy test z góry wie, który okres przyniesie wzrost

W tym wymyślonym przykładzie Piotr ma cztery kolejne okresy A, B, C i D. Ceny otwarcia wynoszą [100, 100, 100, 100] USD/BTC, a zamknięcia [110, 90, 120, 80] USD/BTC. Okres przed A otworzył się i zamknął po 100 USD/BTC. Każdy wariant zaczyna z 1000 USD, bez pozycji, długu i zewnętrznych przepływów pieniężnych. Przy wejściu kupuje stałe 1 BTC po modelowej cenie otwarcia i według z góry ustalonej reguły sprzedaje przy zamknięciu tego samego okresu. Każda strona wykonanej transakcji kosztuje 1 USD; bez wejścia nie ma opłaty. Pomijamy inne koszty i poślizg. Błędny wariant X kupuje wyłącznie przed wzrostem, który odczytał już z przyszłego zamknięcia rozpoczynającego się okresu. Wejścia to [1, 0, 1, 0], a wyniki netto [8, 0, 18, 0] USD: łącznie 26 USD i końcowa gotówka 1026 USD. Wariant Y kieruje się wzrostem poprzedniego zakończonego okresu, który może już znać. Jego wejścia to [0, 1, 0, 1], wyniki netto [0, -12, 0, -22] USD: łącznie -34 USD i końcowa gotówka 966 USD. Po każdym okresie oba warianty mają zerową pozycję; wykres porównuje wyniki netto kolejnych okresów. Zysk X pochodzi z wiedzy o przyszłości, nie dowodzi więc dostępnej przewagi handlowej. Strata Y nie oznacza, że poprawna kolejność czasowa zawsze przynosi straty. To wymyślone ceny i uproszczone wykonania, a nie historia Bitcoina ani gwarancja rzeczywistej realizacji.

Pełniejszy obraz uzyskasz, czytając to hasło razem z Backtesting, Overfitting, Walk-forward Analysis, Survivorship Bias, Paper Trading. Do tego hasła prowadzą również odsyłacze z Walk-forward Analysis, Overfitting, Survivorship Bias, On-chain Analysis.

01Czy wystarczy przesunąć wskaźniki o jeden wiersz?

Może to usunąć konkretny błąd, ale nie jest uniwersalnym rozwiązaniem. Dana mogła zostać opublikowana z opóźnieniem, później poprawiona lub już wykorzystana przy przygotowaniu całej tabeli. Liczy się dostępność każdego wejścia w chwili decyzji.

02Czy podczas oceny wolno używać późniejszego wyniku?

Tak. Aby ocenić wcześniejszą prognozę, musimy znać późniejszy wynik. Błąd powstaje dopiero wtedy, gdy wynik wraca do przeszłości: wpływa na wcześniejszą decyzję, uczenie lub wybór reguły, choć nie był wtedy znany.

DOC · 001QuantConnect — Time Modeling: TimeslicesDokumentacja DOC · 002QuantConnect — Custom Securities: Avoid Look-Ahead BiasDokumentacja DOC · 003Federal Reserve Bank of St. Louis — FRED API Real-Time PeriodsDokumentacja DOC · 004scikit-learn — Common Pitfalls: Data LeakageDokumentacja DOC · 005TradingView — Strategies: Broker Emulator and Lookahead BiasDokumentacja DOC · 006Freqtrade — Lookahead AnalysisDokumentacja DOC · 007NFA — Use of Promotional Material Containing Hypothetical Performance ResultsDokumentacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna