Монте-Карло: выборка, порядок, остановка и просадка

Бэктест показывает один исторически получившийся путь. Симуляция исследует пути, которые допускает заданная модель. Объем позиции, порядок результатов и способ повторной выборки могут заметно менять просадку. Ни один рассчитанный процентиль сам по себе не является проверенной вероятностью разорения неизвестного реального счета.

Что именно моделирует Монте-Карло

Метод использует повторные случайные выборки из определенной модели. Перестановка фиксированного списка денежных результатов меняет порядок, сохраняя сумму. Выборка с возвращением может изменить и порядок, и сумму. Независимые выигрыши и потери с назначенными вероятностями образуют еще одну модель. Укажите процедуру и то, как объем зависит от текущего капитала.

Начните с проверяемого вручную примера. При условном капитале 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 и останавливается после шага с капиталом не выше 850 USD. A выполняет +300, −150, −150 и заканчивает с 1 000. B выполняет только первые −150, получает 850 и пропускает остаток.ОСТАНОВКА МЕНЯЕТ ИТОГ СПИСКАA: +300, −150, −150B: −150, −150, +3001 0001 3001 1501 0001 000850Порог 850Остальные шаги пропущеныA: исполнено 3; итог 1 000.B: исполнен 1; итог 850.
Все числа схемы заданы условно; исходная геометрия сохранена. Допущения и границы расчета приведены в тексте. Открыть схему целиком.

В отдельной вымышленной схеме старт — 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%94920
5%981 640
50%1103 800
95%1225 960

Использовано обратное дискретное распределение: первое K, для которого CDF(K) достигает нужной доли. Конечная случайная симуляция будет колебаться вокруг этой модели. Таблица не является отчетом о запуске, наблюдением о рынке или обещанным диапазоном будущей прибыли.

Проверяемая схема расчета в Excel

Для упражнения с английскими именами функций задайте A1 = 0.55, A2 = 100, A3 = −80, A4 = 10000. Это назначенные вероятность, два чистых денежных исхода и начальный капитал в одной валюте. Имена функций, десятичные знаки и разделители аргументов зависят от локальных настроек Excel.

Прокрутите таблицу вправо, чтобы увидеть все столбцы →

Начальное состояние и один следующий шаг
ЯчейкаФормула в английском синтаксисеСмысл
C1=$A$4Начальный капитал до сделок
D1=C1Начальный максимум
E10Начальная просадка
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 зависит от модели выборки
ПроцедураРавновероятные вариантыВероятность четырех потерь и итога 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. Реальный порог остановки, минимальная маржа, разрыв или иная величина потери меняют модель. Это арифметическое свойство не гарантирует выживание счета. Дополнительный контекст — в разделе управления риском (на английском).

Порядок следующей проверки

  1. Опишите историю: число сделок, расходы, риск, инструменты и покрытие. Не торгуйте только ради достижения условного порога ста записей.
  2. Проверьте две короткие исходные траектории вручную, затем сохраните один конкретный набор выбранных значений. Тысяча прогонов или час работы не доказывают адекватность модели.
  3. При положительных величинах просадки исследуйте верхний хвост; при отрицательных изменениях явно укажите другое соглашение. Учитывайте начальную точку и правило объема.
  4. Для измененных историй фиксируйте различия покрытия, единиц, расходов и риска. Меньшая медиана модели сама не устанавливает причинное ухудшение реального преимущества.

Следующий шаг

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

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, версию, расходы и остановки.

Каковы ограничения метода?

Итоги условны относительно данных, параметров и модели. Независимая выборка разрывает временную зависимость. Можно задать зависимость или смену режимов, но их тоже нужно оценить. Процентиль не является доказанными потолком либо нижней границей реального риска; размер позиции на его основе не гарантирует выживание счета.

Источники и пределы применения

  1. BIS: исторический стандарт рыночного капитала (на английском)

    Справочная ссылка исходной библиографии сохранена. Полная публикация, пользовательский код либо коллекция здесь не прочитаны и не используются как доказательство эффективности или нынешних прав розничного счета. Даты проверки и цитаты не приписываются.

  2. Институт Ван Тарпа: биографическая справка (на английском)

    Справочная ссылка исходной библиографии сохранена. Полная публикация, пользовательский код либо коллекция здесь не прочитаны и не используются как доказательство эффективности или нынешних прав розничного счета. Даты проверки и цитаты не приписываются.

  3. NumPy: исходная ссылка на legacy choice (на английском)

    Ссылка документации исходной библиографии сохранена. Для показанного современного Generator использована отдельно прочитанная документация Generator.choice; полной проверки legacy-реализации здесь нет.

  4. Python: случайный выбор и перестановка (на английском)

    Прочитаны содержательные разделы choice, choices, shuffle и sample. Случайная перестановка сама не задает правила остановки или реальную торговую зависимость.

  5. Microsoft: RAND (на английском)

    Прочитаны диапазон [0,1), синтаксис и пересчет листа. В статье английские имена функций; реальные настройки Excel могут отличаться.

  6. Microsoft: PERCENTILE.INC (на английском)

    Прочитаны параметр от 0 до 1, ошибки пустой выборки и интерполяция. Применение к капиталу и к просадкам — разные задачи.

  7. NumPy: Generator.choice (на английском)

    Прочитаны параметры выборки, возвращение элементов, равномерные вероятности по умолчанию и ошибки недопустимого входа. Численные примеры статьи проверены отдельным точным расчетом, не запуском всей библиотеки.

Учебные расчеты не определяют юрисдикцию читателя по языку. Документация платформ и библиотек описывает названный инструмент, не универсальное правило всех счетов. Все цены, суммы, курсы, вероятности, задержки и последовательности примеров вымышлены. Условные вероятности моделей не являются рыночными частотами; нет гарантии прибыли, предельной потери или разрешения на реальные сделки. Торговые приказы не отправлялись.