Losowo pogarsza ceny egzekucji w celu symulacji poślizgów cenowych (slippage) i rozszerzania spreadu w rzeczywistych warunkach rynkowych. Testuje odporność strategii w symulacjach Monte Carlo z probabilistycznymi wzorcami niedoskonałości egzekucji.
Niedoskonałości egzekucji, takie jak poślizgi cenowe (slippage) czy chwilowo szersze spready, są częstym zjawiskiem w handlu na żywo. Czynniki te mogą sprawić, że rzeczywista cena zamknięcia transakcji będzie mniej korzystna niż idealna cena zaobserwowana lub docelowa w trakcie backtestu. Ta symulacja Monte Carlo modeluje wpływ takich losowych problemów z egzekucją.
Jeśli zastosujemy ten test Monte Carlo, losowy procent transakcji (Prawdopodobieństwo) podczas backtestu będzie miał pogorszony wynik realizacji. Osiąga się to poprzez pogorszenie wartości ClosePrice wybranych transakcji. Kwota, o jaką pogarszana jest ClosePrice, jest również losowana dla każdej zmienionej transakcji i obliczana jako losowy procent (do wartości Max Degradation Percent) zakresu cenowego objętego daną transakcją (od OpenPrice do pierwotnej ClosePrice). „Gorsza” cena oznacza niższą cenę zamknięcia dla pozycji długich oraz wyższą cenę zamknięcia dla pozycji krótkich, co zmniejsza zyski lub zwiększa straty.
Mówiąc prościej, uruchamiając 500 (lub inną liczbę) backtestów, z których każdy stosuje tę losową degradację ceny do innego podzbioru transakcji i z różną intensywnością, można uzyskać perspektywę analizy Monte Carlo dotyczącą wrażliwości strategii na wahania jakości egzekucji zleceń.
W tym konkretnym przykładzie możemy przeprowadzić 100 symulacji z zastosowaniem losowej degradacji realizacji zleceń, zgodnie z opisem.
Ten test różni się od zastosowania stałej wartości poślizgu cenowego (slippage) dla wszystkich transakcji. Tutaj efekt degradacji ma charakter probabilistyczny:
To, które transakcje zostaną zmienione, jest losowe (w oparciu o Prawdopodobieństwo).
Stopień pogorszenia każdej zmienionej transakcji jest również losowy (do wartości Max Degradation Percent jej zakresu).
Dlatego każde uruchomienie symulacji reprezentuje unikalny scenariusz backtestu. W jednej symulacji transakcje #5, #23 i #58 mogą zostać pogorszone o niewielkie wartości, podczas gdy w innej symulacji może to dotyczyć transakcji #12, #23, #45 i #70, przy czym transakcja #23 może potencjalnie doświadczyć większej degradacji ceny niż w pierwszej symulacji. Jeśli liczba symulacji Monte Carlo zostanie ustawiona na 500, powstanie 500 unikalnych wyników backtestów, z których każdy odzwierciedla inny prawdopodobny wzorzec losowych niedoskonałości egzekucji. Pomaga to ocenić odporność strategii na nieprzewidywalne wahania realizacji zleceń napotykane na rynkach rzeczywistych.
Jak importować fragmenty kodu / niestandardowe wskaźniki do SQX:
Znacie mnie jako clonex. Nazywam się Ivan Hudec — stworzyłem darmowe bloki, z których tutaj korzystasz, i piszę o badaniach, które za nimi stoją, na algotrading.space. Potrzebujesz czegoś dedykowanego? Nawiąż ze mną współpracę.