Монте-Карло: выборка, порядок, остановка и просадка
Бэктест показывает один исторически получившийся путь. Симуляция исследует пути, которые допускает заданная модель. Объем позиции, порядок результатов и способ повторной выборки могут заметно менять просадку. Ни один рассчитанный процентиль сам по себе не является проверенной вероятностью разорения неизвестного реального счета.
Что именно моделирует Монте-Карло
Метод использует повторные случайные выборки из определенной модели. Перестановка фиксированного списка денежных результатов меняет порядок, сохраняя сумму. Выборка с возвращением может изменить и порядок, и сумму. Независимые выигрыши и потери с назначенными вероятностями образуют еще одну модель. Укажите процедуру и то, как объем зависит от текущего капитала.
Начните с проверяемого вручную примера. При условном капитале 1 000 единиц результаты +200, −100, −100 дают путь 1 000 → 1 200 → 1 100 → 1 000 и максимальную просадку 200 / 1 200 ≈ 16.67%. Порядок −100, −100, +200 дает 1 000 → 900 → 800 → 1 000 и просадку 20%. Конечный капитал одинаков, просадки различны. Начальный капитал должен участвовать в поиске максимумов: без него первый убыточный участок будет измерен неверно.
Условие остановки меняет итог перестановки
Прокрутите схему вправо, чтобы увидеть ее целиком →
В отдельной вымышленной схеме старт — 1 000 USD, три заданных чистых результата +300, −150, −150 USD. Без остановки их сумма ноль. Теперь после каждого полного шага проверяем условие: если капитал не больше 850 USD, больше результатов не исполнять. A выполняет все три и заканчивает с 1 000 USD; B начинает с −150, достигает 850 и пропускает оставшиеся два. Это правило упражнения, не рекомендация по допустимому риску.
Точки обозначают выполненные шаги; серая линия B — прекращенный прогон, а не еще две нулевые сделки. Документация Python random.shuffle (на английском) описывает перестановку списка; условие остановки добавлено нами отдельно. Два пути не задают вероятностей. Отделяйте выбранные элементы от фактически выполненных по правилам: простое суммирование всей перестановки не воспроизводит ограничения капитала или объема.
Какие вопросы задавать результату
Определенная симуляция может дать распределение максимальных просадок, пересечений порога и конечных сумм. Сначала найдите максимальную просадку каждого полного пути, затем процентиль полученных максимумов. Полоса точечных процентилей капитала не является одним исполнившимся путем. Запишите соглашение о квантиле: интерполяция и дискретность меняют значение и долю выборки под ним.
В следующей условной модели 200 независимых сделок имеют вероятность выигрыша 0.55, фиксированную прибыль 100 EUR и потерю 80 EUR. Средний результат одной: 0.55 × 100 − 0.45 × 80 = 19 EUR, всех двухсот — 3 800 EUR. Если K — число выигрышей, конечная прибыль равна 180K − 16 000 EUR.
Прокрутите таблицу вправо, чтобы увидеть все столбцы →
| Уровень | Минимальное K с накопленной вероятностью не ниже уровня | Конечная прибыль, EUR |
|---|---|---|
| 1% | 94 | 920 |
| 5% | 98 | 1 640 |
| 50% | 110 | 3 800 |
| 95% | 122 | 5 960 |
Использовано обратное дискретное распределение: первое K, для которого CDF(K) достигает нужной доли. Конечная случайная симуляция будет колебаться вокруг этой модели. Таблица не является отчетом о запуске, наблюдением о рынке или обещанным диапазоном будущей прибыли.
Проверяемая схема расчета в Excel
Для упражнения с английскими именами функций задайте A1 = 0.55, A2 = 100, A3 = −80, A4 = 10000. Это назначенные вероятность, два чистых денежных исхода и начальный капитал в одной валюте. Имена функций, десятичные знаки и разделители аргументов зависят от локальных настроек Excel.
Прокрутите таблицу вправо, чтобы увидеть все столбцы →
| Ячейка | Формула в английском синтаксисе | Смысл |
|---|---|---|
| C1 | =$A$4 | Начальный капитал до сделок |
| D1 | =C1 | Начальный максимум |
| E1 | 0 | Начальная просадка |
| B2 | =IF(RAND()<$A$1,$A$2,$A$3) | Один назначенный случайный исход |
| C2 | =C1+B2 | Капитал после него |
| D2 | =MAX(D1,C2) | Максимум капитала с начала пути |
| E2 | =(D2-C2)/D2 | Положительная величина просадки |
Скопируйте B2:E2 до строки 201: ровно 200 сделок, поскольку строка 1 — начальное состояние. Конечный капитал находится в C201, максимальная просадка пути — =MAX(E1:E201). Абсолютные ссылки $A$ сохраняют параметры при копировании. Горизонт 200 сделок не равен автоматически календарному году. Для практической модели отдельно нужны правила остановки, маржи и неплатежеспособности.
Для второго пути копируйте весь блок B:E вместе с начальной строкой. По группе путей отдельно считайте процентиль конечного капитала и процентиль максимальных просадок. В =PERCENTILE.INC(range,0.95) доля 0.95 выбирает верхний хвост положительных величин просадки. Нижний хвост конечного капитала соответствует 0.05 или 0.01. Функция может интерполировать.
RAND меняет значения при пересчете листа. Сохраняйте выбранные числа, параметры и версию расчета, иначе проверять уже будет нечего. Для детерминированной сверки можно вручную назначить 200 исходов: +100, −80, повторенные сто раз. При старте 10 000 получатся капитал 12 000 и максимальная просадка 80 / 10 100 ≈ 0.7921%. Это проверка рекурсии на заранее заданном пути, не случайный прогон и не будущая доходность.
Повторная выборка в Python и сохранение зависимости
Для заданного непустого списка чистых денежных результатов NumPy Generator допускает new_sequence = rng.choice(history, size=200, replace=True). Начальный капитал должен предшествовать накопленным результатам: equity = np.concatenate(([initial_capital], initial_capital + np.cumsum(new_sequence))). После этого найдите последовательные максимумы и просадку каждого пути, затем распределение ее максимумов.
Запишите данные, seed, версию библиотеки, горизонт, единицы, расходы и правила остановки. Больше прогонов уменьшают вычислительный шум, но не добавляют наблюдений рыночных условий. Excel тоже может выбирать исторические значения подходящими формулами: различие определяется моделью, а не названием программы.
Для управляемого сравнения можно использовать одинаковые случайные числа. Назначим результат +1 при U меньше порога и −1 иначе; пороги A = 0.55 и B = 0.60 вымышлены. Средние равны 0.10 и 0.20. При общем U разница B − A равна +2 только на 0.55 ≤ U < 0.60, иначе нулю. Ее среднее 0.10, дисперсия 4 × 0.05 − 0.10² = 0.19. При независимых U дисперсии складываются: 0.99 + 0.96 = 1.95. Уменьшается шум именно этого сравнения, а не неопределенность рыночных вероятностей; для произвольных стратегий такого выигрыша не обещано.
Новый условный пример: перестановка, отдельные элементы и блоки
Возьмем полностью вымышленную историю [+1, +1, −1, −1], начальный капитал 100 единиц, четыре следующих результата, без расходов и дополнительных остановок. Сравним три явно разные процедуры. Вероятности ниже назначены правилами выборки, это не частоты будущих рыночных потерь.
Прокрутите таблицу вправо, чтобы увидеть все столбцы →
| Процедура | Равновероятные варианты | Вероятность четырех потерь и итога 96 |
|---|---|---|
| Четыре независимых выбора +1 или −1 с возвращением | 16 последовательностей знаков | 1/16 = 6.25% |
| Два независимых выбора блока [ +1, +1 ] или [ −1, −1 ] с возвращением | 4 последовательности блоков | 1/4 = 25% |
| Перестановка исходных двух плюсов и двух минусов | 6 разных последовательностей знаков | 0: полный итог всегда 100 |
Средний конечный капитал в каждой назначенной модели равен 100, но хвост различается. Блочная выборка сохраняет выбранную двухшаговую связность, а не доказывает, что именно такая зависимость существует на рынке. Четыре искусственных числа не оценивают реальную вероятность разорения. Для интерполяционного 5-го процентиля четырех блочных итогов [96, 100, 100, 104] получится 96.6, тогда как нижний обратный дискретный квантиль равен 96. Оба ответа требуют названия соглашения.
Обычная выборка отдельных исторических сделок с возвращением сохраняет доступные значения, но разрывает их прежний порядок и не сохраняет кластеры потерь. Она не создает отсутствующий в истории шок. При существенной зависимости исследуют блоки и отдельные стресс-сценарии, признавая ограниченность истории. Постоянные денежные исходы и риск, пересчитываемый от текущего капитала, — разные эксперименты.
Чего метод не устанавливает
Независимая модель с постоянной вероятностью предполагает стабильное распределение и независимость. Сам метод Монте-Карло не ограничен этими допущениями: можно задать зависимость и меняющиеся режимы, но их тоже нужно обосновать и проверить. Сопоставляйте поведение модели с данными и отдельными условиями вне них.
Walk-forward (на английском) организует последовательные участки разработки и оценки, но не обнаруживает ухудшение автоматически и не делает просмотренные данные снова нетронутыми. Процентиль не является доказанной нижней границей реального риска или гарантированным потолком потери.
В идеализированной модели потери ровно 5% текущего капитала после n проигрышей остается начальный капитал × 0.95n, положительный при конечном n. Реальный порог остановки, минимальная маржа, разрыв или иная величина потери меняют модель. Это арифметическое свойство не гарантирует выживание счета. Дополнительный контекст — в разделе управления риском (на английском).
Порядок следующей проверки
- Опишите историю: число сделок, расходы, риск, инструменты и покрытие. Не торгуйте только ради достижения условного порога ста записей.
- Проверьте две короткие исходные траектории вручную, затем сохраните один конкретный набор выбранных значений. Тысяча прогонов или час работы не доказывают адекватность модели.
- При положительных величинах просадки исследуйте верхний хвост; при отрицательных изменениях явно укажите другое соглашение. Учитывайте начальную точку и правило объема.
- Для измененных историй фиксируйте различия покрытия, единиц, расходов и риска. Меньшая медиана модели сама не устанавливает причинное ухудшение реального преимущества.
Следующий шаг
Далее проверьте последовательные неиспользованные периоды и момент доступности каждой обучающей метки.
Walk-forward: последовательное обучение и оценка (на английском)
Проверьте понимание
Старт 1 000 USD. После шага капитал не больше 850 USD означает остановку. Выбрана последовательность −150, −150, +300 USD. Чем заканчивается выполненный прогон?
Ответ и объяснения без JavaScript
Правильный ответ: 850 USD; два оставшихся результата не выполняются.
1 000 USD: весь список в сумме дает ноль.
В сумму вошли результаты, которые модель не выполняет: первая потеря прекращает прогон.
850 USD; два оставшихся результата не выполняются.
Первый результат −150 USD дает 850. Проверка идет после этого шага; следующие результаты не прибавляются.
700 USD: сначала обязательно исполняются обе потери.
Такого исключения в правиле нет. Условие проверяется после каждого шага, включая первый.
Вопросы и ответы
Что такое симуляция торговой стратегии методом Монте-Карло?
Это повторная выборка из определенной модели. Перестановка полного списка фиксированных денежных исходов сохраняет сумму, выборка с возвращением может ее изменить. Для назначенных 200 независимых сделок с вероятностью 0.55, прибылью 100 EUR и потерей 80 EUR среднее равно 19 EUR. Точный 5-й процентиль конечной прибыли при выбранном биномиальном соглашении — 1 640 EUR, не результат придуманного запуска.
Как построить расчет в Excel?
Сохраните строку 1 как начальное состояние: C1=$A$4, D1=C1, E1=0. При A1=0.55, A2=100, A3=−80, A4=10000 используйте B2=IF(RAND()<$A$1,$A$2,$A$3), C2=C1+B2, D2=MAX(D1,C2), E2=(D2−C2)/D2. Строки 2–201 дают 200 сделок. Максимум E1:E201 — просадка пути. Сохраняйте выбранные значения; синтаксис зависит от локальных настроек.
Как выполнить повторную выборку в Python?
Сначала задайте данные и модель. Непустая история допускает rng.choice(history,size=200,replace=True). Перед накопленной суммой добавьте начальный капитал, затем считайте последовательные максимумы и просадки. Повторная выборка наблюденных значений не сохраняет автоматически кластеры потерь и не создает отсутствующий шок. Записывайте seed, версию, расходы и остановки.
Каковы ограничения метода?
Итоги условны относительно данных, параметров и модели. Независимая выборка разрывает временную зависимость. Можно задать зависимость или смену режимов, но их тоже нужно оценить. Процентиль не является доказанными потолком либо нижней границей реального риска; размер позиции на его основе не гарантирует выживание счета.
Источники и пределы применения
- BIS: исторический стандарт рыночного капитала (на английском)
Справочная ссылка исходной библиографии сохранена. Полная публикация, пользовательский код либо коллекция здесь не прочитаны и не используются как доказательство эффективности или нынешних прав розничного счета. Даты проверки и цитаты не приписываются.
- Институт Ван Тарпа: биографическая справка (на английском)
Справочная ссылка исходной библиографии сохранена. Полная публикация, пользовательский код либо коллекция здесь не прочитаны и не используются как доказательство эффективности или нынешних прав розничного счета. Даты проверки и цитаты не приписываются.
- NumPy: исходная ссылка на legacy choice (на английском)
Ссылка документации исходной библиографии сохранена. Для показанного современного Generator использована отдельно прочитанная документация Generator.choice; полной проверки legacy-реализации здесь нет.
- Python: случайный выбор и перестановка (на английском)
Прочитаны содержательные разделы choice, choices, shuffle и sample. Случайная перестановка сама не задает правила остановки или реальную торговую зависимость.
- Microsoft: RAND (на английском)
Прочитаны диапазон [0,1), синтаксис и пересчет листа. В статье английские имена функций; реальные настройки Excel могут отличаться.
- Microsoft: PERCENTILE.INC (на английском)
Прочитаны параметр от 0 до 1, ошибки пустой выборки и интерполяция. Применение к капиталу и к просадкам — разные задачи.
- NumPy: Generator.choice (на английском)
Прочитаны параметры выборки, возвращение элементов, равномерные вероятности по умолчанию и ошибки недопустимого входа. Численные примеры статьи проверены отдельным точным расчетом, не запуском всей библиотеки.
Учебные расчеты не определяют юрисдикцию читателя по языку. Документация платформ и библиотек описывает названный инструмент, не универсальное правило всех счетов. Все цены, суммы, курсы, вероятности, задержки и последовательности примеров вымышлены. Условные вероятности моделей не являются рыночными частотами; нет гарантии прибыли, предельной потери или разрешения на реальные сделки. Торговые приказы не отправлялись.