Стресс-тест. Этап 2. Метод Монте-Карло.

9.8.20 Naragot 0 Comments


Выполнили начальную настройку системы перед стресс-тестированием - перевели всё в единого мультивалютного и мультисетового робота под МТ5 и зафиксировали внутри кода баланс счёта при расчёте размера позиции. Теперь можно переходить к формированию непосредственно стресс-теста.


Стресс-тест заключается в анализе результатов бэктестов торговой системы при произвольном изменении входных параметров. Для этого мы будем использовать метод Монте-Карло. Общее представление о нём можно получить в той же Википедии. Я же кратко по шагам распишу его применение для проведения стресс-теста.


1. В MQL5 есть генератор псевдослучайных чисел. Это хорошо для воспроизводимости результатов. При помощи функции MathSrand(int monteCarloIndex) задаётся номер псевдослучайной последовательности, которая далее будет генерироваться функцией MathRand(). Каждая итерация метода Монте-Карло задаётся своим индексом monteCarloIndex.


2. Все параметры, которые, по мнению разработчика, должны меняться в стресс-тестировании, во время инициализации меняются на:

value = value * (100 - monteCarloInterval +  MathRand() % (int)(monteCarloInterval * 2 / monteCarloStep + 1) * monteCarloStep) / 100;

где monteCarloInterval - пределы изменения значения в процентах. Например, 30%.

monteCarloStep - шаг изменения значения в процентах. Например, 5%.

Кроме числовых параметров: стоплоссов, тейкпрофитов и др. - должны меняться также фильтры и пропускаться какой-то процент сделок, но всё в пределах разумности.


3. Проводится оптимизация по monteCarloIndex от 1 до желаемого размера выборки, например, 10000, с шагом 1. Результат оптимизации - 10000 бэктестов с параметрами в процентном диапазоне [100 -monteCarloInterval; 100 + monteCarloInterval] от выбранного, на основе которых уже можно проводить анализ интересующих параметров. Например, величины максимальной просадки или длины стагнации.


4. Наиболее часто используется анализ не всех полученных значений, а тех, что лежат в доверительном интервале. Например, для уровня доверия в 95% отсекается 5% наихудших результатов из полученной на шаге 3 оптимизации. Если стресс-тест был проведён логически правильно, выборка сделок достаточна, нет зафильтрованности, то в соответствии с методом Монте-Карло с вероятностью в 95% в дальнейшем выбранное значение, например, просадка, не превысит наихудшее среди подобных из множества бэктестов из уровня доверия в 95%. Если это произойдёт, то есть уже смысл задумываться о работоспособности самой торговой стратегии.


В следующем посте я опубликую полученные мной результаты при стресс-тестировании своей системы.

____________

Подписка на анонс новых постов:

0 коммент.: