tradingview
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Look-ahead bias

Look-ahead bias, czyli błąd wyprzedzającego spojrzenia, to błąd w analizie danych, backteście lub budowie strategii inwestycyjnej polegający na wykorzystaniu informacji, które w momencie podejmowania decyzji nie były jeszcze dostępne.

Strategia może przez to wyglądać znacznie lepiej, niż działałaby w rzeczywistym tradingu.

Najprościej mówiąc:

strategia „wie”, co wydarzy się w przyszłości.

Oczywiście nie dzieje się tak naprawdę. To sposób przygotowania danych lub testu powoduje, że przyszłe informacje nieświadomie trafiają do decyzji, która powinna zostać podjęta wcześniej.

Prosty przykład

Załóżmy, że chcemy stworzyć strategię, która kupuje akcje, gdy cena znajduje się powyżej średniej kroczącej.

Jeżeli obliczamy sygnał dla świecy z godziny 10:00, powinniśmy wykorzystywać wyłącznie informacje dostępne najpóźniej o 10:00.

Jeżeli przez błąd wykorzystamy cenę zamknięcia świecy z godziny 11:00, strategia otrzymuje informację z przyszłości.

Backtest może wtedy pokazać świetne wyniki.

W rzeczywistym handlu trader o godzinie 10:00 nie znał jeszcze ceny zamknięcia z godziny 11:00.

To właśnie look-ahead bias.

Look-ahead bias w backteście

Problem jest szczególnie niebezpieczny podczas tworzenia backtestów.

Backtest ma odpowiedzieć na pytanie:

„Jak strategia zachowałaby się, gdybym stosował ją w przeszłości, korzystając wyłącznie z informacji dostępnych w tamtym momencie?”

Jeżeli strategia otrzymuje dane z przyszłości, odpowiedź jest niewiarygodna.

Może się wtedy okazać, że strategia:

  • ma niezwykle wysoki Win Rate,
  • generuje bardzo duże zyski,
  • ma mały drawdown,
  • prawie nie ponosi strat.

W rzeczywistości część tych wyników może wynikać wyłącznie z błędu w konstrukcji testu.

Look-ahead bias a dane OHLC

Klasycznym źródłem problemu jest wykorzystanie danych OHLC:

  • Open,
  • High,
  • Low,
  • Close.

Załóżmy, że strategia ma podjąć decyzję na początku świecy.

W momencie jej otwarcia znamy:

Open

ale nie znamy jeszcze:

High

Low

Close

Jeżeli algorytm wykorzysta później wartość High lub Close tej samej świecy do podjęcia decyzji, której wykonanie nastąpiło na jej początku, otrzymujemy look-ahead bias.

To częsty problem w źle przygotowanych backtestach.

Przykład na Bitcoinie

Załóżmy, że testujemy strategię na wykresie BTC na interwale 15-minutowym.

O godzinie 12:00 rozpoczyna się świeca.

Chcemy sprawdzić, czy po wybiciu lokalnego maksimum otwieramy pozycję.

Problem:

w momencie rozpoczęcia świecy nie znamy jeszcze jej maksymalnej ceny.

Jeżeli kod backtestu wykorzysta High tej świecy do określenia, czy doszło do wybicia, a następnie założy wejście po cenie dostępnej wcześniej, może sztucznie poprawić wynik.

W realnym tradingu trader musi poczekać, aż rynek rzeczywiście wykona ruch.

Look-ahead bias a wskaźniki techniczne

Błąd może również pojawić się przy obliczaniu wskaźników.

Przykładowo strategia może korzystać ze średniej kroczącej.

Jeżeli średnia dla bieżącej świecy zostanie obliczona z uwzględnieniem danych, które pojawiły się dopiero po momencie wejścia, wynik będzie zafałszowany.

Szczególnie ważne jest rozróżnienie pomiędzy:

informacją dostępną w momencie decyzji

a

informacją dostępną dopiero po zakończeniu świecy.

Look-ahead bias a dane fundamentalne

Problem nie dotyczy wyłącznie wykresów.

Może pojawić się również przy analizie danych fundamentalnych.

Załóżmy, że testujemy strategię inwestującą w akcje na podstawie wyników finansowych spółek.

Jeżeli przypiszemy do daty publikacji dane, które zostały opublikowane dopiero kilka tygodni później, strategia otrzyma informacje, których inwestor w analizowanym momencie nie posiadał.

Jeszcze większy problem powstaje, gdy wykorzystujemy zrewidowane dane historyczne zamiast informacji dostępnych w czasie rzeczywistym.

Look-ahead bias a dane makroekonomiczne

Podobny problem występuje w przypadku:

  • inflacji,
  • PKB,
  • bezrobocia,
  • stóp procentowych,
  • danych o sprzedaży detalicznej,
  • innych publikacji makroekonomicznych.

Dane gospodarcze mogą być później rewidowane.

Jeżeli backtest wykorzystuje dzisiejszą, zrewidowaną wartość jako informację dostępną inwestorowi kilka lat wcześniej, powstaje look-ahead bias.

Inwestor w tamtym momencie znał tylko pierwszą opublikowaną wartość, a nie późniejszą korektę.

Look-ahead bias a indeksy giełdowe

Błąd może również wystąpić przy wykorzystaniu składów indeksów.

Załóżmy, że chcemy sprawdzić strategię na indeksie dużych spółek przez ostatnie 20 lat.

Jeżeli wykorzystamy dzisiejszy skład indeksu i zastosujemy go do całego historycznego okresu, możemy nieświadomie wykorzystać informację, których inwestor w przeszłości nie posiadał.

Dzisiejsze spółki mogą być zupełnie inne niż te należące do indeksu 20 lat temu.

To może prowadzić zarówno do look-ahead bias, jak i survivorship bias.

Look-ahead bias a survivorship bias

Te dwa błędy często występują razem, ale oznaczają coś innego.

Look-ahead bias:

wykorzystujesz informacje z przyszłości.

Survivorship bias:

pomijasz przypadki, które wypadły z obserwowanej populacji.

Przykładowo backtest może:

  • wykorzystywać dzisiejszy skład indeksu → survivorship bias,
  • korzystać z danych, które były znane dopiero później → look-ahead bias.

Oba problemy mogą znacząco zawyżyć wyniki strategii.

Look-ahead bias a przyszła cena

Najbardziej oczywistą formą błędu jest wykorzystanie przyszłej ceny.

Załóżmy, że algorytm analizuje rynek o godzinie 10:00.

Jeżeli zna cenę z godziny 12:00 i na tej podstawie podejmuje decyzję o wejściu o 10:00, backtest staje się praktycznie symulacją z wiedzą o przyszłości.

Oczywiście taka strategia może wyglądać fantastycznie.

Problem w tym, że nie można jej zastosować w rzeczywistym tradingu.

Jak wykryć look-ahead bias?

Jednym ze sposobów jest zadanie bardzo prostego pytania:

„Czy w momencie podjęcia decyzji naprawdę znałem tę informację?”

Jeżeli odpowiedź brzmi „nie”, informacja nie może być użyta do wygenerowania tego sygnału.

W backteście warto dokładnie sprawdzić:

  • moment powstania sygnału,
  • moment wykonania transakcji,
  • dane używane przez wskaźniki,
  • timestampy danych,
  • moment publikacji danych fundamentalnych,
  • rewizje danych,
  • skład indeksów w danym momencie.

Jak uniknąć look-ahead bias?

Podstawowa zasada jest prosta:

Każda decyzja musi korzystać wyłącznie z informacji dostępnych do momentu jej podjęcia.

W praktyce warto:

  • odpowiednio przesuwać sygnały w czasie,
  • nie używać danych z przyszłych świec,
  • uważać na High, Low i Close bieżącej świecy,
  • stosować prawidłowe timestampy,
  • korzystać z danych fundamentalnych typu point-in-time,
  • uwzględniać rzeczywisty moment publikacji danych,
  • stosować realistyczne zasady wykonania zleceń.

Look-ahead bias w Pythonie i algorytmicznym tradingu

Błąd może być bardzo łatwy do wprowadzenia w kodzie.

Przykładowo obliczamy sygnał:

sygnał = warunek na świecy t

a następnie przypisujemy go do transakcji wykonywanej na początku tej samej świecy.

Jeżeli warunek wymaga informacji z całej świecy, decyzja nie mogła zostać podjęta na jej początku.

W takiej sytuacji sygnał powinien zostać odpowiednio opóźniony.

To jedna z podstawowych zasad prawidłowego projektowania backtestów.

Look-ahead bias a wyniki strategii

Look-ahead bias może powodować sztuczne zwiększenie:

  • Win Rate,
  • średniego zysku,
  • Expectancy,
  • współczynnika Sharpe’a,
  • całkowitego zwrotu.

Jednocześnie może sztucznie zmniejszać:

  • liczbę strat,
  • maksymalny drawdown,
  • zmienność wyników.

W rezultacie strategia może wyglądać niemal idealnie.

Problem pojawia się dopiero po uruchomieniu jej na danych przyszłych, których wcześniej nie znała.

Podsumowanie

Look-ahead bias to wykorzystanie w analizie lub backteście informacji, które w momencie podejmowania decyzji nie były jeszcze dostępne.

Najczęściej występuje przy:

  • backtestach strategii,
  • danych OHLC,
  • wskaźnikach technicznych,
  • danych fundamentalnych,
  • danych makroekonomicznych,
  • składach indeksów,
  • algorytmicznym tradingu.

Najważniejsza zasada brzmi:

Strategia może korzystać tylko z informacji, które rzeczywiście były dostępne w momencie podjęcia decyzji.

Jeżeli backtest „wie”, co wydarzy się kilka minut, godzin lub lat później, jego wyniki nie są wiarygodnym obrazem działania strategii w rzeczywistym świecie.