Тесты на устойчивость торговой стратегии
Ты построил стратегию, которая хорошо выглядела в бэктесте, а теперь смотришь на список с названиями вроде Monte Carlo, System Parameter Permutations, Walk-Forward Matrix и «Retest on additional markets». Какие из них тебе нужны и в каком порядке? В конце этого текста ты будешь знать, за что отвечает каждая из этих проверок по отдельности и как они выстраиваются одна на другой в документированном примере.
Почему список кросс-проверок поначалу отпугивает
Большинство трейдеров впервые сталкиваются с тестами на устойчивость, когда стратегия уже показывает хорошие цифры в бэктесте, а программа предлагает проверить её дополнительно. Тогда появляется целый ряд обозначений, и сразу не понятно, что каждое из них вообще делает. Это не случайность: эти проверки не один шаг, а набор инструментов, где разные инструменты отвечают на разные вопросы.
Что проверяют тесты на устойчивость и от чего они должны помочь
Тесты на устойчивость, их ещё называют кросс-проверками, описаны как постоянная часть StrategyQuant. Их цель: автоматически проверять, как стратегия ведёт себя под нагрузкой, например когда отдельные сделки пропускаются или значения параметров слегка меняются. Идея простая: стратегия, результат которой разваливается уже при небольших изменениях, возможно, была слишком точно подогнана под имеющиеся данные.
Важно при этом: прохождение этих тестов не доказывает, что стратегия не переобучена, а устойчивый результат в этих смоделированных условиях не гарантия будущих прибылей. Тесты показывают поведение при определённых помехах, и не больше.
Четыре встроенные проверки в обзоре
Документация производителя описывает встроенные тесты на устойчивость как группу из четырёх проверок: симуляции Монте-Карло, System Parameter Permutations, проверка Optimization Profile и Walk-Forward Matrix. Эти четыре, согласно документации, можно включать или выключать вместе как группу, чтобы противодействовать переобучению. Точное название и порядок в твоей версии могут немного отличаться от этого обзора, но принцип объединённой группы остаётся тем же.

Соединение этих четырёх проверок не заменяет собственный просмотр результатов. Группа помогает рано отсеять явно хрупкие стратегии, но она не снимает с тебя задачу самому посмотреть на выживших кандидатов.
Как Robustness Tests Tool работает с Монте-Карло
За проверкой методом Монте-Карло стоит простой механизм: Robustness Tests Tool повторяет тест стратегии со случайно изменёнными входными параметрами и случайно изменёнными данными. Из этих многих повторений возникает симуляция Монте-Карло, результат которой указывается вместе с уровнями доверия.
Уровень доверия при этом не обещание. Он говорит о разбросе симулированных прогонов, а не о том, что реально происходит в live. И одного прогона Монте-Карло для доказательства робастности в любом случае недостаточно, как раз для этого и придумана идея повторения.
Более старая документация, которая относилась к версиям до 3.6.1, описывала тот же основной принцип с фиксированным, заданным пользователем числом тестовых прогонов: стратегию проверяли на то, как она реагирует на небольшие изменения во входных данных, исторических данных или других составных частях. Основной принцип, вносить небольшие изменения и наблюдать за реакцией, значит не нов, даже если текущие версии называют это иначе или иначе строят.
Простой пример: ретест на дополнительных рынках
Одна из более наглядных проверок это ретест на дополнительных рынках. При этом та же стратегия снова тестируется на других рынках, то есть на других символах и или других таймфреймах, чем те, на которых она изначально строилась и тестировалась.

Это хорошее введение, потому что принцип легко понять: стратегия, логика которой заточена только под точное движение цены одного символа, на другом символе часто покажет худший результат. Но прохождение этой проверки не доказывает, что стратегия работает на любом произвольном рынке или таймфрейме. Оно показывает только то, как она вела себя на конкретных дополнительно протестированных рынках.
Пример воронки: как кросс-проверки надстраиваются друг над другом
Список проверок кажется длинным, если смотреть на него целиком. В документации есть пример того, как отдельные кросс-проверки могут выстраиваться в последовательность друг над другом, так что не каждая стратегия проходит каждую проверку в полной глубине.
В этом примере только что сгенерированную стратегию сначала тестируют с самой быстрой доступной точностью. Если она не проходит глобальные фильтры, её автоматически отбрасывают, и дальнейшие, более затратные проверки вообще не запускаются. Только стратегии, прошедшие этот первый шаг, передаются дальше на более точные проверки, например на ретест с более высокой точностью и на проверку Монте-Карло, которая манипулирует отдельными сделками.

Важна рамка этого примера: это возможная конфигурация, а не предписанный порядок действий, который каждый проект должен пройти точно так же. И даже тот, кто пройдёт всю эту воронку, ещё не показал этим, что стратегия будет работать в реальной торговле так же.
Более старый путь из пяти шагов как фон
Более старая документация, тоже для версий до 3.6.1, описывала путь из пяти шагов для проверки устойчивости стратегии: сначала просмотреть период out-of-sample, затем протестировать на дополнительных символах и таймфреймах, после этого запустить тесты устойчивости на основе Монте-Карло и в конце просмотреть получившиеся кривые equity и таблицу уровня доверия в отдельном представлении для анализа устойчивости.
Этот порядок полезен как фон, потому что он показывает, что основная идея применять несколько независимых проверок одну за другой уже давно часть инструмента. В качестве точной инструкции для актуальной версии он не годится: названия вкладок и отдельные шаги в более новых версиях могут выглядеть иначе.
Что эти тесты могут показать, а что нет
Каждая из описанных здесь проверок основана на одной и той же основной мысли: прогнать стратегию при смоделированных изменениях прошлых параметров, прошлых сделок или прошлых данных и понаблюдать, что произойдёт. Это полезный фильтр, чтобы находить стратегии, чей хороший результат в бэктесте был привязан только к очень специфическим условиям.
Чего эти тесты не дают, так это доказательства на будущее. Пройденный ретест на дополнительных рынках, хороший уровень доверия из симуляции Монте-Карло или выживание всей проверочной воронки говорят что-то о поведении при этих конкретных, прошлых условиях. Это ничего не говорит о том, как та же стратегия будет вести себя при будущих, ещё не наблюдавшихся рыночных условиях.
Эта статья служит обучению и не является инвестиционным консультированием. Прошлые результаты, в том числе результаты бэктестов, не гарантируют будущих результатов. Торговля финансовыми инструментами связана с рисками, ты можешь потерять деньги.
Эта статья служит обучению и не является инвестиционным консультированием. Прошлые результаты ничего не гарантируют на будущее.
А как это делаешь ты? Расскажи в сообществе. Бесплатно, на твоём языке.
Зарегистрируйся бесплатно