Monte Carlo – Symulacja fluktuacji parametrów (Parameter Jitter)
StrategyQuantWtyczki
Symulacja Monte Carlo, która wprowadza losowe wahania parametrów — pomijanie transakcji oraz korekty cen — w wielu backtestach, aby ocenić odporność Twojej strategii na rzeczywiste niestabilności rynkowe i operacyjne.
W realnym świecie tradingu warunki rynkowe nieustannie ewoluują. Zmienia się zmienność, płynność faluje, a sam strumień danych może wykazywać drobne odchylenia z ticka na tick. W efekcie nawet dobrze zoptymalizowana strategia może nie działać dokładnie tak, jak przewidywał backtest, ponieważ jej kluczowe parametry lub obliczenia wskaźników mogą doświadczać drobnych „szumów” (jitter) lub niestabilności w warunkach rzeczywistych. Ta symulacja Monte Carlo została zaprojektowana, aby sprawdzić, jak odporna jest Twoja strategia na takie niewielkie, nieprzewidywalne odchylenia od jej idealnego zachowania z backtestu.
Po zastosowaniu tego testu Monte Carlo symulacja wprowadza dwa potencjalne efekty na transakcjach w ramach każdego wygenerowanego przebiegu backtestu:
Migotanie warunków / Pominięte wejścia (Condition Flicker): Na podstawie parametru Skip Probability losowy procent transakcji jest po prostu usuwany z backtestu. Symuluje to sytuacje, w których drobne fluktuacje parametrów mogą sprawić, że warunek wejścia, który został spełniony w historycznym backteście, zostanie o włos pominięty w nieco innym scenariuszu na żywo.
Zmienność poziomu wyjścia (fluktuacja P/L): W przypadku transakcji, które nie zostały pominięte, kolejny losowy odsetek (zdefiniowany przez Adjust Probability) będzie miał nieznacznie zmieniony wynik końcowy. Odbywa się to poprzez modyfikację ceny zamknięcia (Close Price) transakcji. Wartość modyfikacji jest obliczana jako losowy procent (do wartości Max Price Adjust Percent) pierwotnego zakresu cenowego danej transakcji (od otwarcia do zamknięcia). Co istotne, ta korekta może być dodatnia lub ujemna, co oznacza, że efekt fluktuacji (jitter) może losowo skutkować nieco lepszą lub nieco gorszą ceną zamknięcia, symulując drobne różnice w punktach realizacji Stop Loss, Profit Target lub trailing stopa.
Mówiąc prościej, uruchamiając 500 (lub inną liczbę) symulacji backtestów, z których każda stosuje inne losowe pominięcia oraz losowe, dwukierunkowe korekty cen do listy transakcji, zyskujesz perspektywę Monte Carlo na to, jak wrażliwe są wyniki Twojej strategii na małe, losowe niestabilności w jej własnej logice realizacji lub reakcji na dane rynkowe.
Na przykład uruchomienie 100 symulacji przy użyciu tego testu wygeneruje 100 różnych krzywych kapitału, z których każda reprezentuje prawdopodobną ścieżkę wyników przy uwzględnieniu tych drobnych, losowych wariacji.
Ten test różni się znacząco od stosowania stałego poślizgu cenowego (slippage) czy symulowania losowych przestojów. Nie pogarsza on jedynie wyników w jednolity sposób; wprowadza probabilistyczne zakłócenie bezpośrednio związane z potencjalną wrażliwością wewnętrznych parametrów strategii. Jedna symulacja może pominąć transakcje nr 3 i nr 25, nieznacznie pogorszyć transakcję nr 10 i nieznacznie polepszyć transakcję nr 42. Inna symulacja może pominąć tylko transakcję nr 15, ale zastosować większe korekty cen (zarówno dodatnie, jak i ujemne) do transakcji nr 8, nr 33 i nr 50. Oceniając rozkład wyników w wielu symulacjach, możesz ocenić prawdziwą odporność strategii na subtelne wahania operacyjne często spotykane w handlu na żywo.
Jak zaimportować niestandardowe snippety (takie jak ten test Monte Carlo) do SQX:
Znacie mnie jako clonex. Nazywam się Ivan Hudec — stworzyłem bezpłatne bloki, z których tutaj korzystacie, a o stojących za nimi badaniach piszę na algotrading.space. Potrzebujesz dedykowanego rozwiązania? Nawiąż ze mną współpracę.