3 klucze do testowania historycznego algorytmów kryptograficznych PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

3 klucze do weryfikacji historycznej algorytmów kryptograficznych

Wiele artykułów na temat algorytmicznego handlu kryptowalutami nadmiernie upraszcza rzeczywistość budowania platformy handlowej i testowania kodu historycznego. W tym miejscu omówimy 3 aspekty weryfikacji historycznej, które często są pomijane, a jednak są klucz do osiągnięcia wyników.

3 klucze do testowania historycznego algorytmów kryptograficznych PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Przejdźmy od razu do rzeczy, 3 klucze do testowania historycznego:

  • świeca niskie wartości na przystanki
  • zarządzający ceny wykonania
  • iteracyjnie porównanie analizy historycznej z faktami

Oznacza to, że jest silna weryfikacja historyczna dużo wysiłku (nic dziwnego!), ale przyjrzyjmy się temu bliżej.

Wiele platform do testowania historycznego używa świecy zamknięte wartość dla każdego znacznika. W handlu na żywo ze zleceniami stop-loss jest to niska wartość ticku, która zatrzyma Twoją pozycję.

Pozwól mioOK, na przykładzie. Na poniższym wykresie dla BTC wyobraźmy sobie, że realizujemy zlecenie KUPNA na niebieskiej linii na dolnej zielonej świecy, mniej więcej w połowie drogi od minimum do maksimum dla tego ticka.

Najniższy poziom następnego ticku może spowodować zatrzymanie, jeśli był to wąski stop-loss. Ale jeśli Twój kod testu historycznego zakłada stop-loss SPRZEDAJ na zamknięciu, to tak nie jest i w Twojej symulacji pozycja rozszerzyłaby się do przodu. Przyjrzyj się uważnie czerwonej świecy podążającej za zielonym znacznikiem wejściowym (krzyżykiem), jej wartości zamknięcia i minimum są bardzo różne. W tym konkretnym przypadku ten drugi wykazałby większy zysk.

Zatem wpływ KUPNA po cenie wyższej niż cena otwarcia może mieć poważne konsekwencje dla symulacji i weryfikacji historycznej. To jest nie różnica pomiędzy ceną wykonania a ceną otwarcia, zamiast tego może to być duża różnica w sposobie, w jaki pozycja jest rozszerzana i generowana jest zysk.

Cena wykonania może mieć kaskadowy wpływ na zysk z transakcji.

Rozważmy 2 pozycje, jedną wprowadzoną o godzinie 20.00 (aby użyć liczb okrągłych), drugą o godzinie 20.50, co oznacza nieco wyższą cenę (rynkową kupna). Może to mieć [stosunkowo małą] różnicę 0.50 jednostki efekt kaskadowy od zysku pozycji w czasie. Dlaczego? Ponieważ w kolejnym ticku pozycja 20.50 może zostać zatrzymana, ponieważ wartość Low może być niższa niż ustawienie stop-loss. Tymczasem pierwsza pozycja jest kontynuowana przez wiele kolejnych znaczników, aż do osiągnięcia zysku. Duża różnica!

Aby sobie z tym poradzić, musimy oszacować ceny naszych realizacji…

Należy pamiętać, że zadaniem weryfikacji historycznej jest oszacowanie zysków z modelu/strategii uruchomionej w przeszłości.

Twój kod do weryfikacji historycznej nie wie, jaką cenę otrzymała transakcja (czas przeszły) po stronie KUPNA lub SPRZEDAŻY.

Analizując historyczne dane rynkowe, rzeczywista cena realizacji zlecenia nie jest znana. Rzeczywiście, możesz mieć dziennik pokazujący rzeczywistą cenę pozycji, ale backtrader patrzy na ogólne dane rynkowe, a nie na indywidualne dzienniki transakcji.

Stosowanie ceny otwarcia w przypadku zaznaczenia przy wejściu nie jest realistyczne, podobnie jak cena zamknięcia. Dlaczego to robi dużą różnicę? Ponieważ, jak omówiono w poprzedniej sekcji, wejście po wyższej cenie wykonania może z łatwością spowodować wcześniejsze uruchomienie zlecenia sprzedaży z limitem niż w symulacji testu historycznego.

Chcesz, aby wyniki analizy historycznej były nieco pesymistyczne.

Nie ma prawdziwej odpowiedzi na pytanie, gdzie dokładnie należy oszacować ceny wykonania. Ważne jest, aby zrozumieć, że nie można tego dokładnie uzyskać w symulacjach. Założenie ceny OPEN dla zleceń KUP jest ogólnie optymistyczne i nie jest idealnym podejściem. Podobnie, zakładając, że cena ZAMKNIĘCIA dla Twoich zleceń SPRZEDAŻY, prawdopodobnie będzie znacznie odbiegać od rzeczywistych wyników.

KUPUJ na targu

Oto kilka opcji do wyboru dla zleceń rynkowych KUP:

a) oszacuj cenę wykonania w połowie drogi (lub w określonej z góry odległości) pomiędzy OTWARCIEM i ZAMKNIĘCIEM ticka

b) oszacuj cenę wykonania w połowie drogi (lub w określonej z góry odległości) pomiędzy NISKIM i WYSOKIM tickiem

c) wybrał losową cenę pomiędzy OTWARTA lub NISKA a ZAMKNIĘTA lub WYSOKA

Chociaż działania na rynku mają zwykle charakter losowy, nie jestem fanem (c), ponieważ twój kod testowy nie będzie idempotentny; za każdym razem, gdy zostanie uruchomiony na tych samych danych, zwróci różne wyniki. To jest bałagan.

Opcja (b) podkreśla bardziej zmienny rynek, podczas gdy opcja (a) jest mniej. To zależy od ciebie, ale należy dokonać wyboru. Można by użyć np indeks zmienności, taki jak CVI a następnie wybierz zgodnie z tą wartością w okresie, w którym przeprowadzasz weryfikację historyczną.

Realizacja zysków Zlecenia SPRZEDAJ z limitem

Oto kilka opcji do wyboru dla zleceń SELL z limitem zysku:

a) oszacuj cenę wykonania w połowie drogi (lub w jakiejś z góry określonej odległości) pomiędzy OTWARTYM i WYSOKIM tickiem

b) oszacuj cenę wykonania w połowie odległości pomiędzy ZAMKNIĘCIEM a WYSOKIM ticka

c) wybrał losową cenę pomiędzy powyższymi wartościami świec

Zlecenia typu stop-loss SELL z limitem

Oto kilka opcji do wyboru dla zleceń stop-loss SELL z limitem:

a) oszacować cenę wykonania w połowie pomiędzy OTWARCIEM i ZAMKNIĘCIEM ticka

b) oszacuj cenę wykonania w połowie odległości pomiędzy CLOSE i NISKIM tickiem

c) wybrał losową cenę pomiędzy powyższymi wartościami świec

Zwróć uwagę na użycie wartości NISKIEJ i WYSOKIEJ w zależności od zamówienia stanowisko. Zlecenie sprzedaży z limitem realizacji zysku dotyczy rosnącej ceny, natomiast zapobiegawcze zlecenie sprzedaży z limitem straty typu stop-loss dotyczy ceny malejącej. W obu przypadkach prawdopodobnie wystąpią luki przekraczające wartości graniczne!

Radzenie sobie z poprzednimi zleceniami stop-loss z limitem luki

Bardzo powszechnym sposobem na zwiększenie strat pozycji jest posiadanie: lukę cenową w dół w stosunku do Twojego zlecenia Stop-Loss z limitem. Twój system transakcyjny musi sobie z tym poradzić, identyfikując pozycję poniżej zlecenia Stop-Loss z limitem i wykonując rynkowe zlecenie sprzedaży na tej pozycji, zanim kurs spadnie jeszcze bardziej na czerwono.

Zlecenie stop-loss z limitem pokazane na wykresie Binance TradingView

Pamiętaj, że wiele giełd nie obsługuje zleceń rynkowych typu stop-loss, np. Binance, więc jesteś zmuszony korzystać limit stop-loss rozkazy ochrony swoich pozycji. Zlecenie stop-loss z limitem ma „cenę stop” i „cenę limitu”, przy czym pierwsza z nich uruchamia sprzedaż z limitem ceny drugiej.

Wiele giełd, takich jak Binance, nie obsługuje zleceń stop-loss z limitem.

Co to oznacza dla algorytmu testu historycznego? Aby mieć pogląd konserwatywny/pesymistyczny, należy to przyjąć gdzieś cenę sprzedaży pomiędzy ceną graniczną stopu a najniższym poziomem zaznaczenia. Im niższy współczynnik, tym bardziej konserwatywny wynik. Dzieje się tak, że znaczny procent tych zleceń stop-loss z limitem zostanie zrealizowany po cenie limitu, ale inne zostaną wykonane poniżej ceny limitu i trzeba to uwzględnić.

Księgowanie zleceń sprzedaży generujących zysk

Jeśli Twój system transakcyjny obsługuje modele realizacji zysków (powinien), w ramach których pozycja jest zamykana z zyskiem po osiągnięciu poziomu wyjścia, zleceniami tymi należy zarządzać agresywnie.

W tym scenariuszu zlecenie rynkowe pozostawi zyski na stole, lepiej jest złożyć zlecenie sprzedaży z limitem po określonej cenie.

Mocnym podejściem, jeśli chodzi o czerpanie zysków z pozycji, jest zdobycie szczytu księgi zleceń (patrz wyżej) i ustawienie limitu ceny SPRZEDAJ na jedną z tych cen. Prawdopodobnie zostanie to wypełnione po wyższej cenie (zysku) niż zlecenie rynkowe w tym momencie.

Co to oznacza dla algorytmu testu historycznego? Aby mieć konserwatywny/pesymistyczny pogląd, należy to przyjąć cena pomiędzy poziomem wyjścia generującym zysk a najwyższym poziomem zaznaczenia. Rzeczywista cena sprzedaży byłaby zależą od spreadu księgi zamówień w momencie zawarcia transakcji, ale oczywiście w symulatorze analizy historycznej nie ma „księgi zamówień”, więc musimy dokonać szacunków na podstawie dostępnych danych.

Nie ma możliwości ulepszenia algorytmów analizy historycznej, chyba że porówna się je z rzeczywistymi wynikami iteracyjnie.

Jeśli nie porównasz iteracyjnie wyników analizy historycznej z rzeczywistymi wynikami handlu, nie możesz być pewien co do tej analizy.

Oto konkretny przykład, jak to osiągnąć:

  • uruchom platformę do handlu na żywo przez pewien okres czasu, np. 24 godziny
  • rejestruj wyniki: każdą transakcję, każde wyjście, każde zlecenie stop-loss
  • po tym okresie uruchom kod testu historycznego w tym samym okresie
  • porównaj wyniki testu historycznego z rzeczywistymi wynikami!

Porównaj szczegółowo każdą transakcję. Jakie założenia przyjął Twój kod analizy historycznej, które nie są reprezentatywne dla rzeczywistego handlu na żywo?

Jakie są różnice?

  • czy Twój test historyczny jest optymistyczny? Jeśli tak to gdzie? Jak? Dlaczego?
  • czy twoja analiza historyczna jest zbyt pesymistyczna?

Chcesz, aby Twoja analiza historyczna konsekwentnie pokazywała lekko pesymistyczne wyniki; konserwatywny.

Po wykonaniu tej czynności kilka razy wyłącz platformę transakcyjną i rozwiń zarówno kod testu historycznego, jak i platformę transakcyjną powtarzać.

Ponieważ Twój system do handlu na żywo może działać przy stosunkowo małych zamówieniach, uruchomienie go w ramach testu nie kosztuje dużo.

Oczywiście w dowolnym momencie na rynku wystąpią nieoczekiwane działania. Chodzi o to, aby zidentyfikować obszary, w których analiza historyczna wyraźnie nie szacuje tego, co ujawniły dane rzeczywiste.

Kilka przykładów tego, co znalazłem, robiąc to:

  • test historyczny był zbyt optymistyczny co do cen LIMIT SELL, w rzeczywistym handlu często zdarzały się sytuacje przekroczenia luki, które obniżały zyski
  • test historyczny był zbyt optymistyczny co do cen wykonania KUP, w rzeczywistym handlu rzadko zdarzało się, aby cena otwarcia była realizowana
  • test historyczny nie uwzględniał zleceń sprzedaży STOP-LOSS przy niskich wartościach w obrębie ticku, w rzeczywistym handlu oznaczało to wcześniejsze zamknięcie pozycji

To jedyny sposób na zarabianie zysków na platformie do handlu kryptowalutami. Z biegiem czasu rozwijaj swoje testy historyczne i iteruj po rzeczywistych wynikach, aby je ulepszyć.

platforma handlowa zautomatyzowana korekta zleceń z limitem na Binance

Testowanie historyczne modelu handlu algorytmami to ciężka praca! Nie powinno to być zaskoczeniem. Nie ma tu „łatwej ścieżki”.

Source: https://medium.com/@gk_/3-keys-to-algo-crypto-backtesting-99f006cfd390?source=rss——-8—————–cryptocurrency

Znak czasu:

Więcej z Średni

amesFelix

Węzeł źródłowy: 1098837
Znak czasu: Październik 28, 2021