Co to jest testowanie historyczne? Jak przetestować strategię handlu kryptowalutami

>

Wprowadzenie do testowania wstecznego

Backtesting to matematyczna symulacja używana przez traderów do oceny wydajności strategii handlowej. Symulacja wykorzystuje historyczne dane rynkowe, próbując obliczyć, jak dobrze dałaby się strategia handlowa w przeszłości.

Zasadniczo testowanie historyczne jest sposobem, w jaki handlowcy mogą spróbować przewidzieć, czy strategia będzie opłacalna, jeśli zostanie wdrożona z rzeczywistym kapitałem. Handlowcy wykorzystują analizę historyczną do odfiltrowywania strategii, które w przeszłości nie były dochodowe.

Chociaż wyniki historyczne nie gwarantują przyszłych wyników, testowanie historyczne jest nadal najbardziej niezawodnym sposobem identyfikacji solidnych strategii. Konieczne jest zbadanie tych symulacji, aby odfiltrować strategie, które są wyraźnie gorsze. W ten sposób mamy największe szanse na zarabianie pieniędzy i nie musimy testować strategii na prawdziwych funduszach.

Ponieważ narzędzia do handlu kryptowalutami stały się bardziej popularne, podobnie jak testy historyczne. Dzisiaj zaleca się, aby inwestorzy dokładnie przetestowali każdą strategię przed wprowadzeniem jej na dziki rynek kryptowalut. W ten sposób możemy zyskać pewność, że strategia ma potencjał optymalnego działania.

Analiza wsteczna dotycząca ponownego zrównoważenia

Badanie to ocenia skuteczność różnych strategii równoważenia w celu określenia najlepszych historycznych konfiguracji.

Wymagania dotyczące danych do testowania wstecznego

Zanim zaczniemy testować strategie, musimy zrozumieć różne typy danych, których programiści używają do tworzenia narzędzi do testowania historycznego, oraz sposób, w jaki każdy z nich reprezentuje rzeczywisty rynek.

Dane świecowe

Najpopularniejszym sposobem implementacji narzędzia do testowania historycznego jest używanie przez programistów danych świecowych OHLCV. Większość programistów korzysta z tych danych, ponieważ są one łatwo dostępne.

Niestety, chociaż są to dane najłatwiejsze do uzyskania przy tworzeniu tych narzędzi, są to dane najbardziej zawodne. W rzeczywistości używanie danych świecowych OHLCV do przeprowadzania testów historycznych może być różnicą między budowaniem zyskownej strategii a utratą pieniędzy.

Sytuacja staje się jeszcze gorsza, gdy inwestorzy wykorzystują zagregowane dane świecowe ze źródeł takich jak CoinMarketCap. Zagregowane dane nie stanowią prawidłowej reprezentacji rzeczywistych zamówień, które były dostępne na określonej giełdzie w tym czasie.

Nie używaj danych świecowych do tworzenia narzędzi do testowania wstecznego.

Dane transakcji Tick-by-Tick

Dane handlowe typu Tick-by-Tick mogą być użytecznym elementem narzędzi do analizy historycznej. Poszczególne transakcje tickowe to dokładne transakcje, które zostały wykonane na giełdzie w danym momencie. Te indywidualne transakcje reprezentują rzeczywiste zlecenia, które zostały zrealizowane, więc wiemy z całą pewnością, że na giełdzie musiało istnieć otwarte zlecenie po tej cenie.

Chociaż dane dotyczące transakcji tikowych mogą być potężnym aspektem usług testowania historycznego, nadal będą tylko nieco dokładniejsze niż dane świecowe OHLCV. Poszczególne punkty danych handlowych nie dostarczają informacji o stanie arkusza zamówień w momencie transakcji. W rezultacie programiści nie mogą dokładnie ocenić, jakie zamówienia byłyby dostępne na giełdzie dokładnie w tym momencie, gdy wykonywana jest symulowana transakcja..

Odradza się wykorzystywanie danych handlowych typu tick po tick do narzędzi do testowania historycznego.

Zamów dane migawki książki

Ostatnim typem danych, który jest powszechny w narzędziach do testowania wstecznego, są migawki księgi zamówień. Migawki książek zamówień zapewniają dokładny stan rynku w momencie tworzenia migawki. Chodzi o to, aby mieć pełną reprezentację tego, jakie zamówienia były dostępne na giełdzie w określonym czasie.

Podczas tworzenia narzędzi do testowania wstecznego jest to najpotężniejszy typ danych do wykorzystania. Ponieważ dane obejmują dokładne zlecenia, które były dostępne w czasie symulacji transakcji, możemy obliczyć dokładne transakcje, które mogliśmy podjąć, oraz cenę każdej z tych transakcji.

Migawki książek zamówień pozwalają programistom symulować wpływ spreadu, poślizgu i płynności.

Zdecydowanie zaleca się, aby migawki książek zamówień były typem danych narzędzi do testowania wstecznego.

Źródła danych

Głównym źródłem danych księgi zamówień jest każda indywidualna wymiana kryptowalut. W większości przypadków dane te są przesyłane strumieniowo na żywo przez gniazda internetowe giełdy. Jednak ze względu na ogromną ilość danych giełdy zazwyczaj nie przechowują tych danych przez dłuższy czas. Oznacza to, że gdy dane są wysyłane za pośrednictwem sieci wymiany danych, przepadają na zawsze.

Chyba że, oczywiście, ktoś zbierze dane z giełdy i udostępni je za pośrednictwem usługi zewnętrznej. Tutaj do obrazu wkraczają dostawcy danych. Dostawcy danych to zasadniczo firmy, które gromadzą dane z każdej wymiany i przechowują je, aby inne osoby mogły uzyskać do nich później.

Dostawców danych dla migawek historycznych książek zamówień jest niewielu. Ze względu na ograniczoną podaż tych danych programiści uciekali się do alternatywnych zestawów danych, takich jak świece OHCLV, które mogą powodować niedokładności w testach historycznych. W rezultacie większość narzędzi do testowania historycznego dostępnych obecnie na rynku fałszywie przedstawia skuteczność strategii.

Po niedawnym partnerstwie między Krewetki i Kaiko, Shrimpy jest teraz w stanie zaoferować kompletny historyczny katalog migawek książek zamówień na każdej większej giełdzie. Już od 2014 roku Kaiko skrupulatnie gromadzi dane handlowe typu tick-by-tick, migawki ksiąg zamówień i świece OHLCV.

Deweloperzy mogą uzyskać dostęp do tych danych za pośrednictwem Shrimpy Developer APIs. Korzystając z prostego modelu cenowego na żądanie, klienci mogą zapytać o migawki w różnych ramach czasowych, parach handlowych i giełdach.

Kaiko dostarcza najbardziej precyzyjnych danych na rynku. Teraz każdy programista może uzyskać dostęp do danych Kaiko, aby dokładnie przeprowadzić symulację testów historycznych za pośrednictwem interfejsów API Shrimpy.

Skrypty Python dla książek historycznych

Plik Shrimpy Developer APIs zapewniają dostęp do historycznych ksiąg zleceń wymiany. Migawki każdego arkusza zamówień są wykonywane w odstępach 1-minutowych. Używając Biblioteka Shrimpy Python, podamy przykłady, w jaki sposób programiści mogą uzyskać dostęp do danych historycznych za pomocą zaledwie kilku wierszy kodu.

Symulowanie testu wstecznego

Rysunek 1: Przykładowy arkusz zleceń dla pary handlowej ENJ-USDT.

Aby dokładnie obliczyć skuteczność strategii, analiza historyczna wymaga możliwie dokładnych liczb. Niektóre czynniki, które należy wziąć pod uwagę podczas testu historycznego, obejmują:

  • Opłata transakcyjna giełdy

  • Spread bid-ask dla pary handlowej

  • Poślizg na rynku zamówień

  • Czas dla każdej indywidualnej transakcji

Symulując zakup aktywa, musimy użyć ceny wywoławczej z arkusza zleceń. Jeśli jesteś na giełdzie, najlepsza cena wywoławcza to najniższa cena, jaką ktoś na giełdzie jest skłonny sprzedać. Nie zapomnij również uwzględnić opłaty transakcyjnej i poślizgu.

Korzystając z arkusza zamówień z rysunku 1 jako przykładu, wyobraźmy sobie, że chcemy kupić ENJ o wartości 1500 USDT. Na potrzeby tego przykładu załóżmy, że ta księga zleceń dotyczy Binance, która ma podstawową opłatę handlową w wysokości 0,1%.

Mogliśmy zasymulować zakup ENJ o wartości 1500 USDT poprzez stopniowe zwiększanie ceny zamówienia w stosunku do arkusza zamówień, aż do momentu, gdy kupimy żądaną kwotę ENJ o wartości 1500 USDT. Kolejne transakcje, które wykonywalibyśmy, obejmują:

  1. Kup 1151,74904126 ENJ po 0,20559424 USDT za sztukę = 236,97296881 USDT + 0,2369729 USDT w opłatach (pozostało 1262,79005829 USDT)

  2. Kup 2559,954 ENJ po cenie 0,20640294 USDT za sztukę = 528,38203186 USDT + 0,52838203 USDT w opłatach (pozostało 733,8796444 USDT)

  3. Kup 1992.51418976 ENJ po 0,20659518 USDT za sztukę = 411,64382769 USDT + 0,41164382 USDT w opłatach (pozostało 321,82417288 USDT)

  4. Kup 1555.85587451 ENJ po 0,20663894 USDT za sztukę = 321,50267164 USDT + 0,32150267 USDT w opłatach (pozostało 0 USDT)

Zwróć uwagę, że w arkuszu zamówień pozostało trochę rzeczy, których nie mogliśmy kupić po cenie 0,20663894. Kwota, której nie kupiliśmy, pozostanie na giełdzie do przejęcia przez innego uczestnika rynku.

W sumie kupiliśmy dokładnie 7260.08410553 ENJ po zakończeniu wszystkich transakcji. Gdybyśmy wykorzystali tylko dane świecowe OHLCV, nasze szacunki prawdopodobnie byłyby tak odległe 7319.76112984. To jest różnica prawie 60 ENJ lub prawie 1%. Może się wydawać, że nie jest to dużo, ale ten niewielki procent składa się niewiarygodnie szybko, jeśli symulujemy setki lub tysiące transakcji.

Po zakończeniu symulacji handlu zapisz wyniki zlecenia, abyśmy mogli wykorzystać te fundusze do handlu innym aktywem później podczas testu historycznego. Korzystając z tego szczegółowego rejestru handlowego, możemy prowadzić skrupulatne dzienniki każdej transakcji dokonanej podczas testu historycznego. Te dzienniki mogą być używane do obliczania dodatkowych statystyk, takich jak wolumen transakcji, które wykonujemy, liczbę transakcji, które wykonaliśmy oraz częstotliwość kupowania lub sprzedawania określonego aktywa.

Wyniki wydajności

Obliczanie wydajności strategii jest proste. Wszystko, co musimy zrobić, to obliczyć wartość naszego portfela na początku testu historycznego i porównać ją z wartością naszego portfela na końcu testu historycznego.

Wartość portfela oblicza się, mnożąc kwotę każdego posiadanego przez nas aktywa przez cenę tego aktywa i sumując wartości wszystkich aktywów w portfelu.

Wykonując te obliczenia na początku testu historycznego i ponownie na końcu testu historycznego, możemy uzyskać zmianę wartości naszego portfela w trakcie testu historycznego.

Następnie można obliczyć wydajność za pomocą równania:

Wydajność = [(Vf – Vi) / Vi] x 100

Gdzie,

  • Vf to końcowa wartość portfela

  • Vi to początkowa wartość portfela

  • Pomnóż przez 100 aby przekonwertować z ułamka dziesiętnego na procent

Zwróć uwagę, że celem testu historycznego jest nie tylko optymalizacja wydajności. Zasadniczo tylko dlatego, że określona strategia działa dobrze w warunkach analizy historycznej, nie oznacza to automatycznie, że jest to dobra strategia. Musimy również wziąć pod uwagę spójność i solidność strategii.

Spójność historyczna – Zdolność do generowania podobnych wyników w różnych okresach historycznych i przy różnych warunkach rynkowych.

Backtest Solidność – Zdolność do generowania podobnych wyników nawet w przypadku niewielkich zmian parametrów strategii.

Strategia pozbawiona solidności może spowodować duże wahania wydajności, gdy nawet najmniejsze zmiany zostaną wprowadzone w parametrach strategii. Podobnie strategia, która nie jest spójna, prawdopodobnie przyniesie zupełnie inne rezultaty podczas testowania różnych okresów historycznych.

W idealnym przypadku chcemy zastosować strategię, którą można przetestować wstecz w dowolnym historycznym okresie i przynieść podobne wyniki. Podobnie skuteczność naszej strategii nie powinna ulegać dużym wahaniom, gdy w strategii wprowadzane są niewielkie zmiany.

Strategie pozbawione spójności lub solidności mogą prowadzić do bardzo nieprzewidywalnych przyszłych wyników. Jeśli testowanie historyczne różnych okresów historycznych i konfiguracji dla naszej strategii daje bardzo różne wyniki, może to wskazywać, że nasza strategia jest nieprzewidywalna. W takim przypadku wybranie tylko jednej konfiguracji lub okresu testowania wstecznego do oceny zasadniczo byłoby nadmiernym dopasowaniem strategii do konkretnej sytuacji. Wyniki backtestu overfit nie byłyby ogólną reprezentacją strategii.

Przykładem spójnej strategii, którą znaleźliśmy, jest przywrócenie równowagi. W zdecydowanej większości przypadków przywrócenie równowagi przewyższało hodowlę. Nawet jeśli dostosowaliśmy okres równoważenia z 1 godziny do 1 dnia do 1 miesiąca.

Backtest Red Flags

Ze względu na techniczny charakter analizy historycznej czasami trudno jest określić, czy jest ona wiarygodna. Poniższe elementy ostrzegawcze pomogą Ci określić, czy wyniki analizy historycznej są rozsądne. To nie jest obszerna lista, ale niektóre z najczęstszych przypadków.

  1. Wydajność wzrasta po każdej transakcji. Jeśli wydajność stale rośnie, szczególnie po każdej transakcji, może to wskazywać na błąd obliczeniowy w logice handlu.

  2. Konsekwentny wykładniczy wzrost funduszy. Kiedy wyniki analizy historycznej rosną wykładniczo w czasie, często może to wynikać z użycia świec OHLCV do symulacji handlu lub wskazuje na błąd w obliczeniach, który jest procentowy.

  3. Strategie handlowe o wysokiej częstotliwości nie tracą na wartości. Ogólnie rzecz biorąc, strategia, w której handluje się znaczną kwotą, straci na wartości z powodu opłat handlowych. Jeśli strategia handlu o wysokiej częstotliwości nie straci na wartości, test historyczny może nie uwzględniać opłat za wymianę.

  4. Rynki o niskiej płynności zachowują się tak samo, jak rynki o wysokiej płynności. Prostym sposobem na wykrycie, czy narzędzie do testowania historycznego wykorzystuje dane świecowe OHLCV, czy dane zagregowane, jest uruchomienie strategii na rynku o niskiej płynności, który zazwyczaj ma duży spread. Obrót o wysokiej częstotliwości na rynku o niskiej płynności powinien skutkować dużymi stratami portfela.

  5. Zmiana giełd nie ma wpływu na wyniki. Każda giełda ma inną płynność i inne opłaty handlowe. Podczas testowania historycznego strategii na różnych giełdach powinieneś uzyskać różne wyniki. Jeśli uzyskasz te same wyniki na różnych giełdach, oznacza to, że narzędzie do testowania historycznego korzysta z danych zagregowanych i nie używa właściwej opłaty transakcyjnej dla każdej indywidualnej giełdy.

Przed zaakceptowaniem wyników analizy historycznej według wartości nominalnej, użyj tych czerwonych flag, aby zidentyfikować problemy z symulowanymi transakcjami.

Wnioski

W tym artykule było kilka głównych tematów. Przede wszystkim wykazaliśmy, jak trudne może być zbudowanie solidnego narzędzia do testowania wstecznego. Jednak jednocześnie mogliśmy zilustrować znaczenie testowania historycznego strategii przed wdrożeniem strategii na żywo.

Pierwszym krokiem do zbudowania strategii analizy historycznej zawsze było posiadanie wysokiej jakości danych. Bez wysokiej jakości danych księgi zamówień wyniki będą bardzo niedokładne. Ostatecznie podejmowanie decyzji na podstawie wadliwych narzędzi do weryfikacji historycznej może być kosztowne. Może to spowodować, że będziemy mieć nierealistyczne oczekiwania co do strategii, która zjada nasze portfolio.

Tworząc narzędzie do testowania historycznego, nie zapomnij o symulacji opłat transakcyjnych, poślizgu i spreadu bid-ask. Każdy z tych aspektów testu historycznego może mieć duże znaczenie. Usunięcie choćby jednego z tych komponentów z testu historycznego może stanowić różnicę między dochodową a nierentowną strategią.

Wreszcie, przed wdrożeniem strategii opartej na testach historycznych, kontynuuj testowanie. Kiedy myślisz, że skończyłeś testowanie, przeprowadź test ponownie. Zamiast 100 testów przeprowadź 100 000 testów. Testowanie historyczne jest dla nas najlepszym sposobem zrozumienia zachowania strategii. Spróbuj utworzyć nowe hipotezy dotyczące strategii i przetestuj te hipotezy, aby zidentyfikować nowe strategie. Kontynuuj cykl eksperymentów, aż znajdziesz strategie, które Ci odpowiadają.

KOPIUJ NAJLEPSZYCH HANDLOWCÓW NA ŚWIECIE

Obecnie tysiące aktywnych traderów zarządza swoim portfelem na Binance. Ci traderzy są jednymi z najbardziej zaawansowanych w branży.

Dodatkowe dobre lektury

Jak stworzyć bota handlowego Crypto za pomocą Pythona

Przewodnik po pożyczkach kryptograficznych – porównanie najlepszych pożyczkodawców

Skrypt Bitcoin Price Live Ticker (przy użyciu Websockets)

Równoważenie progowe dla zarządzania portfelem kryptowalut

Co to jest DeFi? Przewodnik po zdecentralizowanych finansach

Nasza platforma handlu społecznościowego

Krewetki to społeczna platforma handlowa dla kryptowalut. Jest przeznaczony zarówno dla profesjonalnych, jak i początkujących traderów, którzy chcą dowiedzieć się o rozwijającej się branży kryptowalut. W Shrimpy użytkownicy mogą kopiować portfele i strategie handlowe innych handlowców.

Śledź nas na Świergot i Facebook aby otrzymywać aktualizacje i zadawać pytania naszym niesamowitym, aktywnym społecznościom w witrynie Telegram & Niezgoda.

Dzięki, że wpadłeś!

Zespół Shrimpy

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me