Симуляция Монте-Карло для торговых ботов: как читать вероятность разорения
Ваш бэктест выдаёт вам одну кривую эквити. Она растёт, проседает, заканчивается на каком-то итоговом числе, и кажется, будто это и есть правда о вашей стратегии. Это не так. Это лишь один порядок ваших сделок из астрономического числа возможных порядков, и тот порядок, который вам достался, может польстить хрупкой стратегии или похоронить надёжную.
Симуляция Монте-Карло это способ увидеть дальше этой одной удачной (или неудачной) последовательности. Движок бэктеста Freya перетасовывает ваши сделки тысячу раз и сообщает весь диапазон исходов, включая то единственное число, которое одиночный бэктест никогда не покажет вам честно: вероятность того, что эта стратегия обнулит ваш счёт.
Key Takeaways
- Одиночный бэктест это один порядок ваших сделок; те же сделки в другом порядке могут закончиться прибылью или разорением.
- Монте-Карло переоценивает ваши сделки 1000 раз, чтобы построить распределение исходов, а не только тот, что случился.
- Вероятность разорения это доля тех перестановок, где счёт фактически обнулён; даже несколько процентов уже красный флаг.
- Просадка на уровне 95-го процентиля, а не просадка вашего единственного бэктеста, это та боль, к которой вам действительно стоит готовиться.
- Freya требует минимум 10 сделок для запуска симуляции, а результат детерминирован, поэтому один и тот же бэктест всегда даёт одни и те же числа.
- Монте-Карло проверяет на прочность риск последовательности. Он не может смоделировать смену рыночного режима, поэтому сочетайте его с walk-forward валидацией.
Если вы ещё не запускали бэктест, начните с пошагового руководства по бэктестингу, а затем прочитайте интерпретацию результатов бэктеста, где разобраны основные метрики, на которых строится эта статья.
Суммы в долларах и проценты здесь это рабочие примеры, а не рекомендации. Торговля криптовалютой может привести к убыткам. Выделяйте на каждого бота только те средства, потерю которых вы можете себе позволить, и полностью прочитайте Раскрытие рисков, прежде чем запускать бота на реальном рынке.
Почему одна кривая эквити лжёт
Представьте стратегию с 40 сделками: 24 прибыльных и 16 убыточных. Ваш бэктест сыграл их ровно в том порядке, в каком их подал рынок. Но этот порядок был везением. Если бы три худших убытка выпали подряд ближе к началу, до того как у вашего счёта появилась подушка прибыли, те же самые 40 сделок могли бы просадить счёт достаточно глубоко, чтобы вызвать ликвидацию или стоп-аут, от которого вы бы уже не оправились. Сыграйте их в более добром порядке, и счёт плавно поднимется к новому максимуму.
Те же сделки. Тот же винрейт. Тот же средний выигрыш и средний убыток. Совершенно разный исход выживания. Это риск последовательности, и он невидим на одной кривой эквити, потому что одна кривая показывает вам только одну последовательность.
Симуляция Монте-Карло существует, чтобы сделать риск последовательности видимым.
Что Монте-Карло реально делает во Freya
Движок Freya берёт список сделок, который произвёл ваш бэктест, и запускает бутстрап-ресэмплинг: он случайным образом вытягивает ваши сделки, с возвращением, в новый порядок, затем прогоняет кривую эквити через этот порядок и записывает, где она закончилась и насколько глубоко проседала по пути. Он повторяет это 1000 раз, выстраивая распределение из тысячи правдоподобных альтернативных историй, которые могла бы пережить ваша стратегия.
Несколько деталей, которые стоит знать, потому что именно они делают числа заслуживающими доверия:
- Требуется минимум 10 сделок. Ниже этого порога недостаточно выборки, чтобы перетасовать её во что-то осмысленное, поэтому Freya возвращает не вводящий в заблуждение результат, а вообще никакого результата Монте-Карло. На практике для того, чтобы распределение что-то значило, вам нужно намного больше 10.
- Он детерминирован. Симуляция инициализируется из результатов вашего собственного бэктеста, поэтому запуск того же бэктеста каждый раз даёт вам одни и те же числа Монте-Карло. Случайность заключена в перетасовке, а не в отчёте.
- Прогон останавливается при разорении. Как только смоделированный счёт падает до уровня разорения, этот прогон на этом и заканчивается, ровно так же, как живой движок останавливает истощённый счёт. Симуляция не продолжает нагромождать воображаемые сделки на счёт, у которого больше нет капитала, поэтому просадки остаются ограничены тем, что на самом деле можно было потерять.
Как Freya проводит ресэмплинг, зависит от того, как ваш бот определяет размер позиций. При фиксированном размере каждая сделка рискует схожей абсолютной суммой, поэтому движок перетасовывает сырую прибыль и убыток каждой сделки. При компаундинге долларовый результат сделки зависит от того, насколько большим был счёт в момент сделки, поэтому движок вместо этого перетасовывает процентные доходности. Перетасовка сырых долларов для бота с компаундингом породила бы исходы, которые стратегия никогда не смогла бы произвести, поэтому Freya намеренно согласует ресэмплинг с вашим методом определения размера.
Как читать вывод Монте-Карло
После бэктеста с достаточным числом сделок панель Монте-Карло сообщает распределение по всем 1000 прогонам. Вот что говорит вам каждое число и как на него реагировать.
Вероятность разорения
Единственное самое важное число. Это процент из 1000 перестановок, в которых счёт был фактически обнулён, то есть упал примерно до десятой части баланса, с которого вы начали. Стратегия, которая ни разу не разорилась за тысячу перетасовок, демонстрирует структурную устойчивость. Стратегия с вероятностью разорения даже в 2 до 5 процентов сообщает вам, что один неудачный порядок тех же самых сделок обнуляет ваш счёт, а живые рынки вполне способны сдать вам именно такой порядок.
Относитесь к любой ненулевой вероятности разорения как к задаче по размеру позиции, которую нужно решить до выхода на реальный рынок, а не как к погрешности округления, которую можно проигнорировать.
Вероятность прибыли
Зеркальное отражение: процент перестановок, которые закончились в плюсе. У стратегии может быть красивый одиночный бэктест, и при этом она заканчивается в плюсе лишь, скажем, в 60 процентах перестановок, а это значит, что в четырёх случаях из десяти другая последовательность вручила бы вам убыток. Чем ближе это значение к 100 процентам, тем меньше ваш результат зависел от того, достался ли вам дружелюбный порядок сделок.
Доверительные интервалы
Доверительные интервалы 95 процентов и 99 процентов дают вам диапазон, в который попала ваша итоговая эквити по всем симуляциям. Единственное число, на котором закончился ваш бэктест, это одна точка внутри этого диапазона, и часто не центральная. Если ваш бэктест закончился у верхней границы 95-процентного интервала, ваш заголовочный результат был у оптимистичного края того, что эта стратегия правдоподобно делает. Именно интервал, а не единственная цифра, это честное ожидание.
Медиана, лучший случай и худший случай
Медианная итоговая эквити это средний исход, более надёжное ожидание, чем число одиночного бэктеста, потому что половина перестановок сработала лучше, а половина хуже. Лучший случай и худший случай это крайние хвосты: самая удачливая и самая неудачливая последовательности, которые вытянула симуляция. Разрыв между ними это быстрый способ понять, насколько сильно ваш исход зависит от везения.
Медианная просадка и просадка 95-го процентиля
Именно на этой паре Монте-Карло отрабатывает своё содержание. Ваш одиночный бэктест сообщил одну максимальную просадку. Монте-Карло сообщает медианную просадку по всем перестановкам и просадку 95-го процентиля, то есть почти худший случай. Если просадка вашего бэктеста была 18 процентов, а просадка Монте-Карло на 95-м процентиле составляет 34 процента, значит вашему бэктесту достался мягкий порядок, и 34 процента ближе к той боли, к которой вам действительно стоит быть готовыми по размеру позиции. Планируйте по 95-му процентилю, а не по одному прогону.
| Сигнал Монте-Карло | Что это значит | Что делать |
|---|---|---|
| Вероятность разорения выше 0% | Один неудачный порядок ваших сделок обнуляет счёт | Сократите размер позиции или плечо, пока разорение не достигнет 0% |
| Вероятность прибыли ниже ~70% | Ваш положительный результат опирался на дружелюбный порядок сделок | Расширьте преимущество или ужесточите риск, прежде чем доверять ему |
| Просадка 95-го процентиля сильно выше просадки бэктеста | Вашему одиночному бэктесту досталась удачная последовательность | Задавайте размер под просадку 95-го процентиля, а не под бэктестовую |
| Большой разрыв между лучшим и худшим случаем | Исход сильно зависит от везения | Считайте ожиданием медиану, а не заголовочное число |
Разобранный пример
Скажем, две стратегии обе показывают в бэктесте аккуратные +22 процента на $10 000, заканчивая около $12 200. На одиночной кривой эквити они выглядят как близнецы. Монте-Карло их различает:
- Стратегия A: вероятность разорения 0 процентов, вероятность прибыли 91 процент, медианная итоговая эквити $11 900, просадка 95-го процентиля 16 процентов. Почти каждая перестановка выживает и приносит прибыль. Это надёжное преимущество.
- Стратегия B: вероятность разорения 7 процентов, вероятность прибыли 63 процента, медианная итоговая эквити $10 400, просадка 95-го процентиля 41 процент. То же заголовочное число, но оно было вытянуто горсткой крупных выигрышей, которые случайно выпали после того, как у счёта появилась подушка. Переставьте эти выигрыши раньше или позже, и заметная доля прогонов проседает катастрофически.
Одиночный бэктест не смог бы разделить эти две стратегии. Монте-Карло делает разницу невозможной для пропуска, и это ровно та разница, что отличает бота, которому вы можете уверенно задать размер, от того, что рано или поздно вручит вам свой худший случай.
Что Монте-Карло не может вам сказать
Монте-Карло это стресс-тест одного конкретного риска: порядка, в котором приходят ваши сделки. Это не хрустальный шар, и относиться к нему как к шару это отдельная ловушка.
- Он предполагает, что ваши сделки репрезентативны. Перетасовка тех сделок, что у вас есть, не может наколдовать сделку, которую стратегия никогда не совершала. Если рыночный режим сдвигается и ваше преимущество перестаёт работать, Монте-Карло, построенный на старых сделках, продолжит перетасовывать старые, теперь уже нерелевантные, результаты. Для этого режима отказа вам нужен walk-forward анализ, который тестирует ваши параметры на данных, под которые они никогда не подгонялись.
- Мусор на входе, мусор на выходе. Если базовый бэктест переобучен, Монте-Карло просто перетасовывает фантазийные сделки в тысячу фантазийных историй. Сначала убедитесь, что бэктест честен, используя проверки на переобучение в интерпретации результатов бэктеста.
- Он перетасовывает, но не прогнозирует. Живые результаты также отличаются от любого бэктеста из-за задержек, частичного исполнения, фандинга и комиссии за результат Freya, ни одно из которых перестановка не моделирует. Об этом разрыве смотрите бэктест против живых результатов.
При совместном использовании эти три инструмента покрывают три главных способа, которыми проваливается хорошо выглядящий бэктест: Монте-Карло для риска последовательности, walk-forward для переобучения, и руководство «живое против бэктеста» для реальности исполнения.
Часто задаваемые вопросы
Что такое вероятность разорения в бэктесте?
Это процент смоделированных перестановок ваших сделок, в которых счёт был фактически обнулён, упав примерно до десятой части вашего стартового баланса. Freya вычисляет её, переоценивая сделки вашего бэктеста 1000 раз. Любое значение выше нуля означает, что хотя бы один правдоподобный порядок ваших собственных сделок обнуляет ваш счёт, а это сигнал уменьшить размер позиции или плечо.
Сколько сделок нужно, чтобы Монте-Карло работал?
Freya требует минимум 10 сделок, прежде чем запустит симуляцию, и ниже этого порога не возвращает результата Монте-Карло. Десять это пол, а не цель. Чем больше у вас сделок, тем больше можно доверять распределению и вероятности разорения.
Почему просадка Монте-Карло хуже просадки моего бэктеста?
Потому что ваш одиночный бэктест видел лишь один порядок сделок, и часто это был относительно добрый порядок. Монте-Карло раскрывает просадку по тысяче порядков, а цифра 95-го процентиля это почти худший случай. Если она намного глубже просадки вашего бэктеста, значит вашему заголовочному результату досталась удачная последовательность, и задавать размер вам стоит под число 95-го процентиля.
Даст ли один и тот же бэктест один и тот же результат Монте-Карло дважды?
Да. Симуляция Freya инициализируется из результатов вашего собственного бэктеста, поэтому она детерминирована. Запуск идентичного бэктеста производит идентичные числа Монте-Карло. Перетасовка случайна, но она воспроизводима.
Означает ли нулевая вероятность разорения, что стратегия безопасна?
Нет. Это означает, что по тысяче перестановок ваших бэктестовых сделок ни одна не обнулилась, а это сильный сигнал устойчивости только к риску последовательности. Это ничего не говорит о смене рыночного режима или о переобученном бэктесте. Сочетайте это с walk-forward валидацией и проверкой здравого смысла самого бэктеста, прежде чем выходить на реальный рынок.
