597 / 736BT

Backtesting

Testowanie strategii na danych historycznych

Backtesting sprawdza reguły handlu na danych z przeszłości. Pomaga znaleźć błędy i uwzględnić koszty, ale historyczny zysk sam w sobie nie dowodzi, że strategia będzie działać dalej.

Backtesting to symulacja wyników wcześniej określonych reguł handlu na danych historycznych, przy wybranym modelu realizacji zleceń i kosztów.

Piotr zauważa, że po wzrostowym dniu czasem następuje kolejny wzrost. Zamiast kupować na wyczucie, zapisuje regułę i sprawdza ją na dawnych cenach. Na tym polega Backtesting: badaniu pomysłu na przeszłości. Wynik opisuje wybrany model, a nie pieniądze rzeczywiście zarobione przez Piotra. Bailey et al. wyjaśniają, dlaczego atrakcyjny wynik historyczny trzeba odróżnić od wiarygodnej weryfikacji strategii. [1]

Piotr może używać tylko informacji dostępnych przed transakcją. Jeśli reguła korzysta z ceny zamknięcia dnia, nie może na jej podstawie kupić już tego samego ranka. QuantConnect nazywa ten błąd Look-ahead Bias: przyszła informacja trafiła do dawnej decyzji. Liczy się data publikacji danych, nie tylko okres, którego dotyczą; późniejsze korekty również nie były jeszcze znane. Nasz przykład wykorzystuje więc zakończone wcześniejsze ceny zamknięcia i dopiero następne otwarcie. [2]

Wybór wyłącznie rynków lub firm istniejących do dziś tworzy kolejne zniekształcenie. QuantConnect nazywa je Survivorship Bias i pokazuje problem na historycznym użyciu dzisiejszego składu indeksu. Przy danych Bitcoina ważne są też giełda, przerwy w działaniu i sposób wyliczania cen. Kurs z jednej usługi nie musi być osiągalny w innej. Błędy można poprawiać, zachowując ślad zmian; usuwanie niewygodnych spadków zmieniłoby badane pytanie. [2]

Program musi ustalić, kiedy, po jakiej cenie i w jakiej ilości zrealizuje zlecenie. Służą do tego modele realizacji opisane przez QuantConnect. Dotknięcie ceny na wykresie nie dowodzi, że cała ilość mogła zostać po niej kupiona. Rzeczywiste zlecenia mogą być realizowane częściowo; gotowe modele tej platformy zakładają w backtestach pełną realizację. Trzeba też sprawdzić aktualność ceny i płynność, czyli możliwość znalezienia drugiej strony transakcji. [3]

Slippage to różnica między oczekiwaną a uzyskaną ceną realizacji; może pomóc albo zaszkodzić. QuantConnect opisuje jej modelowanie. Dochodzą prowizje oraz, jeśli występują, finansowanie i inne koszty strategii. Kosztu zawartego już w cenie nie wolno odejmować ponownie. Zerowy Slippage jest założeniem, nie ustaleniem dotyczącym prawdziwego rynku. Powtórzenie testu z gorszą realizacją i wyższymi kosztami pomaga ocenić, czy wniosek nadal się broni. [4]

Jeśli Piotr dopasowuje regułę do danych, na których ocenia jej sukces, zdaje egzamin ze znanymi odpowiedziami. Najpierw wyznacza więc starsze dane do opracowania strategii i późniejsze do sprawdzenia. TimeSeriesSplit z biblioteki scikit-learn pomaga utrzymać tę kolejność. Sam nie zapobiega jednak przeciekom informacji przy przygotowaniu danych, nakładaniu się okresów docelowych ani wielokrotnemu strojeniu. Zmiana reguły po zobaczeniu wyniku weryfikacji oznacza, że także te dane wykorzystano do jej opracowania. [5]

Wśród wielu ustawień jedno może wyglądać znakomicie przypadkiem. Pokazanie tylko zwycięzcy ukrywa liczbę prób. Bailey et al. analizują Backtest Overfitting: dopasowanie strategii do szczególnych cech konkretnej historii. Zapisuj parametry, okresy i rynki, które sprawdzono, nie tylko najlepszą krzywą. Autorzy proponują odrębną procedurę szacowania prawdopodobieństwa tego problemu; prosty podział danych jej nie zastępuje, a nasz przykład nie oblicza takiego oszacowania. [1]

Rzetelny raport pozwala odtworzyć dane, wersję reguł, transakcje, koszty i okresy strat. Strategię porównawczą trzeba oceniać przy porównywalnych założeniach. Amerykańska NFA podkreśla również korzyść z wiedzy po fakcie i brak doświadczenia rzeczywistej straty w wynikach hipotetycznych; jej reguły reklamowe obejmują określonych członków. Backtest pomaga odrzucić pomysł lub zbadać go dokładniej. Nawet poprawne obliczenia nie dowodzą, że zadziała on na innym rynku lub w rzeczywistym handlu. [6]

PrzykładPRZYKŁAD · BT

Reguła do sprawdzenia ręcznie

Weźmy własny fikcyjny przykład z równymi okresami A, B, C i D. Zaczynamy z gotówką 1000 USD, bez otwartej pozycji, długu, wpłat i wypłat. Dwie ceny zamknięcia przed A wynoszą [100, 100] USD/BTC. Ceny otwarcia okresów A–D to [101, 103, 102, 105] USD/BTC, a zamknięcia [102, 101, 104, 103] USD/BTC. Reguła kupuje 1 BTC na początku okresu tylko wtedy, gdy ostatnia zakończona cena zamknięcia przewyższa poprzednią; na końcu tego samego okresu sprzedaje całą pozycję. Sygnały to zatem [0, 1, 0, 1]: 1 oznacza transakcję, a 0 jej brak. Zakładamy pełną realizację dokładnie po tych cenach, bez spreadu i Slippage, oraz jedyny koszt: 0.1 USD za każdy zakup i sprzedaż. W B kupujemy za 103 USD i sprzedajemy za 101 USD; w D kupujemy za 105 USD i sprzedajemy za 103 USD. Wyniki brutto okresów wynoszą [0, -2, 0, -2] USD. Cztery wykonane zakupy i sprzedaże kosztują łącznie 0.4 USD, więc wyniki netto to [0, -2.2, 0, -2.2] USD. Łączny wynik brutto wynosi -4 USD, netto -4.4 USD, a końcowa gotówka 995.6 USD. Wykres pokazuje wkład netto każdego okresu, nie saldo ani prawdopodobieństwo zysku. Przykład sprawdza kolejność informacji i rozliczenie; nie używa rzeczywistych danych, nie optymalizuje ustawień ani niczego nie przewiduje.

Pełniejszy obraz uzyskasz, czytając to hasło razem z Trading Plan, Trading Journal, Slippage, Overfitting, Walk-forward Analysis. Do tego hasła prowadzą również odsyłacze z Technical analysis, OHLCV, Timeframe, Candlestick chart.

01Czy zyskowny backtest oznacza, że zarobię na strategii?

Pokazuje zysk tylko dla wybranych danych historycznych i określonych założeń. Sprawdź dostępność informacji, realizację, koszty i liczbę poprzedzających wariantów. Nawet niezależna weryfikacja historyczna nie gwarantuje przyszłych wyników.

02Czy wystarczy odjąć wszystkie prowizje na końcu?

Tylko jeśli odpowiada to modelowi, a bieżące koszty nie zmieniłyby dostępnych środków ani decyzji. Zwykle koszt należy przypisać do odpowiedniej transakcji. Realizację i opłaty trzeba ująć bez pomijania i podwójnego naliczania.

DOC · 001Bailey et al. — The Probability of Backtest OverfittingŹródło pierwotne DOC · 002QuantConnect — Research GuideDokumentacja DOC · 003QuantConnect — Trade Fills: Key ConceptsDokumentacja DOC · 004QuantConnect — Slippage: Key ConceptsDokumentacja DOC · 005scikit-learn — TimeSeriesSplitDokumentacja DOC · 006NFA — Use of Promotional Material Containing Hypothetical Performance ResultsDokumentacja
Zaktualizowano: Najpierw źródła · To nie jest porada inwestycyjna