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

Backtest

Backtest to test strategii inwestycyjnej lub tradingowej na danych historycznych, którego celem jest sprawdzenie, jak strategia zachowywałaby się w przeszłości.

Zamiast od razu ryzykować prawdziwe pieniądze, możemy sprawdzić, co wydarzyłoby się, gdybyśmy zastosowali określone zasady wejścia i wyjścia na historycznych danych rynkowych.

Przykładowo możemy zdefiniować strategię:

  • kupuj po wybiciu lokalnego maksimum,
  • ustaw Stop Loss na 0,5%,
  • ustaw Take Profit na 1%,
  • ryzykuj 1% kapitału,
  • nie otwieraj pozycji w określonych godzinach.

Następnie sprawdzamy, jak taka strategia działałaby na historycznych danych BTC, ETH, akcji czy innych instrumentów.

Po co robi się backtest?

Podstawowym celem backtestu jest odpowiedź na pytanie:

„Czy moja strategia miała w przeszłości przewagę statystyczną?”

Backtest pozwala między innymi sprawdzić:

  • liczbę transakcji,
  • Win Rate,
  • średni zysk,
  • średnią stratę,
  • Expectancy,
  • maksymalny Drawdown,
  • Profit Factor,
  • Sharpe Ratio,
  • całkowitą stopę zwrotu,
  • serię strat i zysków.

Dzięki temu można ocenić, czy założenia strategii mają sens, zanim zastosujemy je na realnym kapitale.

Prosty przykład backtestu

Załóżmy, że strategia BTC zakłada:

Wejście: wybicie lokalnego maksimum na interwale 15-minutowym.

Stop Loss: 0,5%.

Take Profit: 1%.

Stosunek zysku do ryzyka: 2:1.

Jeżeli przetestujemy tę strategię na danych z ostatnich pięciu lat, możemy sprawdzić, ile razy pojawił się sygnał i jaki był wynik każdej transakcji.

Załóżmy, że otrzymaliśmy:

  • 1000 transakcji,
  • 400 zyskownych,
  • 600 stratnych,
  • średni zysk: +2R,
  • średnia strata: -1R.

Mimo że strategia wygrywa tylko w 40% przypadków, może być rentowna.

To pokazuje, dlaczego sam Win Rate nie wystarcza do oceny strategii.

Backtest a Expectancy

Jednym z najważniejszych parametrów strategii jest Expectancy, czyli oczekiwana wartość pojedynczej transakcji.

Można ją uprościć do wzoru:

Expectancy = (Win Rate × średni zysk) − (Loss Rate × średnia strata)

Przykładowo:

  • Win Rate = 40%,
  • średni zysk = 2R,
  • Loss Rate = 60%,
  • średnia strata = 1R.

Otrzymujemy:

0,40 × 2R − 0,60 × 1R = +0,20R

Strategia ma więc dodatnią oczekiwaną wartość.

To znacznie bardziej użyteczna informacja niż samo stwierdzenie, że „strategia wygrywa w 40% transakcji”.

Backtest nie gwarantuje przyszłych zysków

To jedna z najważniejszych rzeczy, o których trzeba pamiętać.

Dobry backtest nie oznacza automatycznie dobrej strategii w przyszłości.

Rynek może się zmienić.

Strategia, która działała w określonym środowisku rynkowym, może przestać działać, gdy zmienią się:

  • zmienność,
  • płynność,
  • korelacje,
  • zachowanie uczestników rynku,
  • koszty transakcyjne,
  • regulacje,
  • struktura rynku.

Backtest pokazuje więc przede wszystkim:

jak strategia zachowywała się w przeszłości na określonych danych.

Nie jest gwarancją przyszłych wyników.

Backtest a overfitting

Jednym z największych zagrożeń jest overfitting, czyli przeoptymalizowanie strategii pod dane historyczne.

Załóżmy, że testujemy strategię i zaczynamy zmieniać jej parametry:

  • EMA 17 zamiast 20,
  • RSI 63 zamiast 60,
  • wejście tylko między 8:17 a 10:43,
  • Stop Loss 0,37%,
  • Take Profit 1,26%.

Po wielu próbach możemy znaleźć konfigurację, która fantastycznie działa na historycznych danych.

Problem:

strategia może działać świetnie tylko dlatego, że została dopasowana do przeszłości.

Na nowych danych może przestać działać.

To podobne do nauczenia się odpowiedzi na konkretny test zamiast nauczenia się materiału.

Backtest a look-ahead bias

Backtest może być również całkowicie niewiarygodny, jeżeli zawiera look-ahead bias.

Oznacza to, że strategia wykorzystuje informacje, które w momencie podejmowania decyzji nie były jeszcze dostępne.

Przykładowo:

  • sygnał powstaje na świecy 10:00,
  • strategia wykorzystuje cenę zamknięcia tej świecy,
  • transakcja zostaje zawarta po cenie dostępnej na początku świecy.

W rzeczywistym tradingu nie można znać ceny zamknięcia świecy przed jej zakończeniem.

Backtest może jednak błędnie wykorzystać tę informację i zawyżyć wynik.

Backtest a survivorship bias

Drugim częstym problemem jest błąd przeżywalności (survivorship bias).

Jeżeli testujemy strategię na spółkach, które dzisiaj należą do indeksu, możemy pominąć przedsiębiorstwa, które wcześniej:

  • zbankrutowały,
  • zostały przejęte,
  • zostały usunięte z indeksu,
  • praktycznie straciły całą wartość.

W efekcie testujemy głównie zwycięzców.

To może sztucznie poprawić wyniki strategii.

Backtest a koszty transakcyjne

Dobry backtest powinien uwzględniać realne koszty.

W przeciwnym razie strategia może wyglądać na rentowną tylko na papierze.

W zależności od rynku należy uwzględnić między innymi:

  • prowizje,
  • spread,
  • poślizg cenowy (slippage),
  • funding przy kontraktach perpetual,
  • inne opłaty.

Ma to szczególne znaczenie w day tradingu, gdzie liczba transakcji może być bardzo duża.

Strategia generująca 1000 transakcji może wyglądać świetnie przed uwzględnieniem kosztów, a po ich odjęciu stać się nierentowna.

Backtest a płynność

Nie wystarczy założyć, że każdą transakcję można wykonać dokładnie po cenie widocznej na wykresie.

Jeżeli rynek jest mało płynny, rzeczywista realizacja może nastąpić po gorszej cenie.

Dlatego w profesjonalnym backteście należy uwzględniać między innymi:

spread + slippage + dostępny wolumen.

Jest to szczególnie istotne przy altcoinach i innych instrumentach o niższej płynności.

Backtest in-sample i out-of-sample

Dane historyczne warto podzielić na co najmniej dwa okresy.

In-sample

To część danych wykorzystywana do budowy i optymalizacji strategii.

Out-of-sample

To dane, których strategia wcześniej nie „widziała”.

Służą do sprawdzenia, czy strategia nadal działa poza okresem, na którym była tworzona.

Przykładowo:

2018–2023 → budowa strategii

2024–2025 → test out-of-sample

Jeżeli strategia działa dobrze w obu okresach, jest to znacznie bardziej wartościowy sygnał niż świetny wynik wyłącznie na danych użytych do jej optymalizacji.

Walk-forward testing

Jeszcze bardziej zaawansowanym podejściem jest walk-forward testing.

Strategia jest okresowo optymalizowana na danych historycznych, a następnie testowana na kolejnym, wcześniej niewidzianym okresie.

Proces jest powtarzany wielokrotnie.

Pozwala to lepiej zasymulować sytuację, w której trader rozwija strategię w czasie, mając dostęp wyłącznie do danych, które rzeczywiście były dostępne w danym momencie.

Backtest manualny

Backtest nie musi być wykonywany przez specjalistyczny program.

Można przeprowadzić go ręcznie.

Przykładowo trader przegląda historyczny wykres i zapisuje każdą transakcję spełniającą określone zasady:

Transakcja Wynik
1 +2R
2 -1R
3 +2R
4 -1R
5 -1R

Na większej liczbie transakcji można następnie policzyć statystyki strategii.

Minusem ręcznego backtestu jest większe ryzyko błędów oraz możliwość nieświadomego pomijania sytuacji, które nie pasują do założonej strategii.

Backtest automatyczny

Automatyczny backtest wykonuje program.

Algorytm otrzymuje:

  • dane historyczne,
  • zasady wejścia,
  • zasady wyjścia,
  • zasady zarządzania pozycją,
  • koszty transakcyjne.

Następnie przeprowadza symulację wielu transakcji.

Zaletą jest szybkość i możliwość przetestowania ogromnej liczby przypadków.

Wadą jest ryzyko błędów w kodzie i nadmiernej optymalizacji.

Automatyczny backtest nie jest automatycznie lepszy od ręcznego.

Jeżeli zasady zostały źle zaprogramowane, otrzymamy po prostu bardzo dokładnie policzony błędny wynik.

Backtest a paper trading

Backtest i paper trading to dwie różne rzeczy.

Backtest:

testujemy strategię na danych z przeszłości.

Paper trading:

testujemy strategię na bieżącym rynku, ale bez używania prawdziwego kapitału.

Backtest jest szybki i pozwala sprawdzić strategię na wielu latach danych.

Paper trading pozwala natomiast sprawdzić, jak strategia zachowuje się w aktualnych warunkach rynkowych i jak trader radzi sobie z jej wykonywaniem.

Jak zrobić dobry backtest?

Przed rozpoczęciem testu należy dokładnie określić zasady strategii.

Powinny być jednoznaczne:

Kiedy wchodzę?

Gdzie ustawiam Stop Loss?

Gdzie realizuję Take Profit?

Jak obliczam wielkość pozycji?

Kiedy nie zawieram transakcji?

Jakie koszty uwzględniam?

Jakie dane były dostępne w momencie podjęcia decyzji?

Im bardziej uznaniowe są zasady, tym większe ryzyko, że backtest będzie dopasowany do konkretnych przypadków.

Najczęstsze błędy w backteście

Do najczęstszych problemów należą:

  • look-ahead bias – wykorzystanie danych z przyszłości,
  • survivorship bias – pomijanie aktywów, które wypadły z rynku,
  • overfitting – nadmierne dopasowanie strategii do historii,
  • ignorowanie prowizji,
  • ignorowanie spreadu,
  • ignorowanie slippage,
  • nierealistyczne założenia dotyczące realizacji zleceń,
  • zbyt mała liczba transakcji,
  • testowanie wyłącznie jednego okresu rynkowego,
  • wybieranie najlepszych parametrów spośród setek testowanych wariantów.

Podsumowanie

Backtest to test strategii inwestycyjnej lub tradingowej na danych historycznych.

Dobrze wykonany backtest pozwala sprawdzić między innymi:

  • czy strategia miała przewagę statystyczną,
  • jak często wygrywała,
  • jakie generowała zyski i straty,
  • jaki osiągała Drawdown,
  • jakie miała Expectancy,
  • jak zachowywała się w różnych warunkach rynkowych.

Trzeba jednak pamiętać, że backtest nie jest dowodem, że strategia będzie zarabiać w przyszłości.

Największymi zagrożeniami są między innymi look-ahead bias, survivorship bias i overfitting. Dlatego dobry backtest powinien wykorzystywać wyłącznie informacje dostępne w danym momencie, uwzględniać realne koszty transakcyjne i być sprawdzany również na danych, których strategia wcześniej nie widziała.

Dla mnie najważniejsza zasada jest prosta: backtest ma symulować rzeczywisty trading, a nie udowodnić, że strategia jest dobra.