Блог им. Op_Man

Конспект - как проверять торговые системы

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

Подсмотрел иной подход в интернетах ваших. Примерно так: идея → backtest → walk‑forward → монте‑карло → инкубация → портфель. Разберем этот конвейер на конкретном примере простой и популярной идеи — дневной momentum‑стратегии в стиле Quantified S.

Зачем вообще нужны случайные портфели

Множество экспериментов показывают, что случайные портфели часто обыгрывают либо рынок, либо сложные факторные стратегии. В одном из исследований моделировали сотни «портфелей‑обезьян», и средний результат спокойно конкурировал с «умными индексами» и продвинутыми фондами, а перевёрнутые стратегии (upside‑down версии) иногда давали ещё больше доходности.

Вывод предварительный:

  • Если твоя стратегия не обгоняет вменяемо построенный рандом, то она тебе не нужна.

  • Обезьяна лукерья — это не мем, а baseline, ниже которого опускаться стыдно.

Поэтому в нашем пайплайне появился внезапно первый sanity‑check — сравнение с рандомом: случайные портфели, случайные входы/выходы с теми же ограничениями по риску.

Шаг 1. Идея на салфетке: пример с дневным моментумом

Возьмём понятную большинству тему: дневной momentum на акции/ETF. В сети куча подобных идей: купить силу, продать слабость, поймать продолжение движения внутри дня и выйти до закрытия/по утру.

Пример концепции:

  • Утром смотрим силу движения в первой части дня.

  • Если бумага показывает аномально сильный спрос (например, gap up + рост в первый час), мы покупаем и держим до закрытия, ловя внутридневной momentum.

  • Если сигналов несколько — выбираем топ N по силе сигнала или распределяем риск поровну.

На этом этапе не трогаем оптимизацию, супериндикаторы и прочую прочесть. Нужна простая грубая гипотеза, которую можно быстро расстрелять фактами.

Шаг 2. Ограниченный backtest: не влюбляться в стратегию

Дальше — limited testing. Цель: понять, стоит ли вообще копать глубже, не устраивая тотальную подгонку под 20 лет истории.

Что делать на данном этапе:

  • Берем адекватный, но не гигантский кусок истории (например, последние 3–5 лет по выбранному рынку).

  • Прогоняем самую простую формализацию идеи:

    • Чёткие правила входа/выхода.

    • Фиксированные параметры (уровни gap, время входа/выхода и т.д.), без перебора сеток.

  • Смотрим базовые метрики:

    • Положительный ли матожид сделки.

    • Есть ли вообще осмысленный profit factor (>1.1–1.2, хотя бы).

    • Какой порядок макс. просадки и её длительности.

На этом этапе нас интересует не красота эквити, а банальный вопрос: есть ли тут хоть какой‑то edge, который стоит развивать дальше? Если нет — идея летит в корзину, даже если график напоминает «нормальный».

Шаг 3. Walk‑forward: симуляция жизни стратегии во времени

Дальше начинается борьба с подгонкой. Стандартный подход «взял всю историю и оптимизировал параметры» в данном контексте не вариант. А вариант walk‑forward‑тестирование.

Как это выглядит на практике:

  1. Разбиваем историю на последовательные окна:

    • Например, 2 года — in‑sample (IS) и следующие 6 месяцев — out‑of‑sample (OOS).

  2. На IS‑отрезке можно чуть оптимизировать параметры:

    • Допустимый диапазон gap.

    • Время входа (например, через 30 минут после открытия vs через 60 минут).

  3. Фиксируем найденные параметры и гоняем их на следующем OOS‑отрезке.

  4. Сдвигаем окно вперёд и повторяем цикл. Самые прошаренные это полностью автоматизируют целиком обычно, но возможно и попроще.

Собираем только OOS‑результаты в один общий эквити‑график и оцениваем стратегию по ним, а не по IS.

Что даёт walk‑forward:

  • Имитация того, как стратегия эволюционировала бы в реальном времени: оптимизация → жизнь несколько месяцев → новая оптимизация.

  • Если стратегия чахнет уже на этом уровне (красивая в IS и мёртвая в большинстве OOS), значит это переоптимизация, а не edge.

Для momentum‑стратегии это особенно критично, потому что режимы рынка меняются, и то, что работало на бычьем рынке, может развалиться в боковичке — walk‑forward это быстро выявляет (по крайней мере, так считается).

Шаг 4. Монте‑Карло: не один эквити, а целое облако сценариев.

Даже если OOS эквити приличный, это всё ещё одна реализация. Порядок сделок исторический и единственный. Желательно понять, что будет, если жизнь сложится чуть иначе.

Поэтому дальше делаем Монте‑Карло симуляцию на базе OOS‑результатов:

  • Берем массив сделок или дневных PnL.

  • Перемешиваем их, делаем bootstrap, моделируем большое число возможных траекторий эквити.

  • Считаем для каждой траектории:

    • Итоговую доходность.

    • Максимальную просадку.

    • Длительность просадки.

На выходе получаем распределения, а не одну цифру:

  • Например, 95‑й перцентиль макс. просадки — это «типичный худший» сценарий.

  • 99‑й перцентиль — уже совсем крайности.

Зачем это нужно:

  • Определить нормальный диапазон боли: просадки, которые ожидаемы для этой системы.

  • Задать формальные триггеры: если фактическая просадка вылезла за 99‑й перцентиль, есть повод считать, что стратегия деградировала, а не просто попала в обычный плохой период.

Для нашей momentum‑стратегии это очень наглядно:

  • Momentum по определению любит тренды и ненавидит флэт.

  • Монте‑Карло покажет, насколько глубоко и надолго её могут унести боковики и шпили, даже если edge реально есть.

Шаг 5. Инкубация: сначала мелко, потом крупно

Даже пройдя backtest, walk‑forward и Монте‑Карло, нельзя сразу грузить стратегию серьёзным баблом. Следующий этап — инкубация.

Что это такое:

  • Стратегия запускается в реальном времени:

    • На демо или

    • На микролотах (я такое выбираю обычно).

  • Она торгует по тем же правилам, что и в тестах.

  • Накапливаем фактические сделки, с реальным проскальзыванием, комиссиями, гэпами, задержками и прочей гадостью.

Инкубация — это ещё один слой OOS‑проверки, но теперь уже на живых данных, а не на истории. Мы:

  • Сравниваем фактическую эквити и просадки с тем, что показывали backtest и Монте‑Карло.

  • Смотрим, не развалилась ли стратегия под давлением реального рынка и инфраструктуры.

Если всё окей, можно постепенно масштабировать объём. Если нет — стратегия либо возвращается на доработку, либо просто отправляется в отпуск на мальдивы.

Шаг 6. Портфель систем: не один грааль, а зоопарк ботов

Очень типичная ошибка (не моё мнение, заимствовал) — пытаться найти одну идеальную стратегию, которая будет печатать деньги всегда. Многие профессионалы от этого отказываются. Гораздо более реалистичный подход — портфель систем, каждая из которых:

  • Простая.

  • Понятная.

  • Прошла весь описанный выше конвейер.

Здесь появляются две задачи:

  1. Диверсификация:

    • Смотрим на корреляции PnL между системами.

    • В портфель стараемся включать стратегии, которые переживают разные режимы рынка: тренд, флэт, «панику» и т.д.

  2. Аллокация и управление:

    • Для каждой системы есть базовый размер риска (например, доля капитала или фиксированный VAR).

    • Есть формальные правила:

      • Когда можно увеличивать объём (стабильная работа в рамках ожидаемого диапазона).

      • Когда надо резать или выключать (фактическая просадка вылезла за рамки Монте‑Карло‑распределения и т.п.).

Та же дневная momentum‑стратегия, даже если она хороша, становится в портфеле лишь одной из многих: её задача — зарабатывать в своих условиях, а не тащить на себе весь счёт.

Шаг 7. Документация: one‑pager на каждую систему

Последняя вещь, которую многие игнорируют, — ведение конспектов и статистики. Для каждой системы создается минимальный, но строгий one‑pager:

  • Гипотеза и логика: что именно стратегия пытается поймать (например, внутридневной momentum после сильного утреннего движа).

  • Рынки и таймфреймы.

  • Правила входа/выхода и фильтры — без «иногда руками выключаю».

  • Итоги по этапам:

    • Limited backtest (период, метрики).

    • Walk‑forward (какие окна, какие результаты OOS).

    • Монте‑Карло (распределения доходности и просадок, ключевые перцентили).

    • Инкубация (фактический период и результаты).

  • Формальные условия:

    • Когда систему можно включать в боевой портфель.

    • Когда увеличивать риск.

    • Когда снижать и когда окончательно выбрасывать.

Такой метод дисциплинирует. Так говорят на улицах.

Есть мнение подслушанное где-то, что настоящий edge — это не одна хитрая формула, а процесс (возможно такой, но это не точно):

  • Идея → грубый тест → walk‑forward → Монте‑Карло → инкубация → портфель → строгие правила управления.

Хотите торговать круче Лукерьи — сначала сделайте так, чтобы ваша система хотя бы статистически была лучше рандома. А дальше уже включается тяжёлая артиллерия из тестов, симуляций и риск‑менеджмента.

Ниже — тот же процесс, но уже в виде конкретного чек‑листа:

1. Идея стратегии: intraday‑momentum на ликвидном инструменте

Берем базовую концепцию:

  • Инструмент: что‑то очень ликвидное — SPY (ETF на S&P 500) или фьючи ES / NQ.

  • Гипотеза: если с утра рынок показывает нетипично сильное движение в одну сторону, есть шанс, что это продолжится до конца дня. Импульс→ рождает ещё больший импульс за счёт догоняющего спроса, ребалансов фондов, дельта‑хеджирования и т.п.

  • Задача: зайти по ходу этого внутридневного тренда и выйти до закрытия, без овернайта.

По сути, это систематический intraday trend‑following: не угадываем направление заранее, а реагируем на уже возникший импульс.

2. Формальные правила стратегии

Опишем правила максимально конкретно, чтобы их можно было закодить.

2.1. Рабочий инструмент и данные
  • Основной вариант: SPY (акция/ETF).

  • Альтернатива для фьючей: ES или NQ, по сути логика та же, только другое время торгов и спецификации.

  • Таймфрейм для расчётов: минутные бары (или 5‑минутки, если нужно меньше шума).

  • Время сессии:

    • Для SPY: с 9:30 до 16:00 по NY.

    • Для ES/NQ можно брать регулярные часы (RTH) или удлинённую сессию, но в примере берем RTH.

2.2. Базовый сигнал «силы»

Нам нужно формализовать «сильное движение» от открытия.

Простой вариант:

  1. Каждый день считаем intraday‑импульс на момент tsignal​ — скажем, через 60 минут после открытия (10:30 NY):

    • Конспект - как проверять торговые системы

  2. Считаем скользящую статистику импульса за последние N дней (например, 20):

    • Среднее μimp​ и стандартное отклонение σimp​.

  3. Нормируем текущий импульс:

    • Конспект - как проверять торговые системы​​.

Логика:

  • Положительный большой Z — аномально сильный бычий импульс.

  • Отрицательный большой Z — аномально сильный медвежий импульс.

2.3. Правила входа / выхода

Пример конкретных правил:

  • Вход long:

    • Время входа: 10:30 NY (через час после открытия).

    • Условие: Z≥Zlong​, например Zlong≥1 (импульс сильнее среднего минимум на одно сигма).

  • Вход short (если хочешь симметричную стратегию):

    • Условие: Z≤Zshort​, например Zshort≤−1.

Дальше варианты:

  • Вариант 1 (минимализм):

    • Стопы не используем, позиция размером по заранее рассчитанному риску (см. риск‑менеджмент ниже).

    • Выход: по времени — вблизи закрытия, например, по рынку в 15:55–15:58 NY.

  • Вариант 2 (чуть сложнее):

    • Вводим time‑based exit + аварийный стоп, если цена откатывает, скажем, на X% от входа.

    • Можно добавить фильтр: не торговать в дни FOMC, Non‑Farm Payrolls и т.п.

Для фьючей ES/NQ:

  • Логика такая же, просто время и волатильность другие.

  • Можно считать импульс не от открытия, а от VWAP или от «зоны шума» по методикам intraday trend‑following (noise area).

3. Риск‑менеджмент и размер позиции

Тут авторами идеи была обозначена принципиальная позиция: стратегия должна таргетировать примерно одинаковый риск в день, а не одинаковый размер позиции.

Пример:

  • Для дневной торговли SPY выбираем целевую дневную волатильность стратегии, допустим 0,5–1% от капитала.

  • Считаем:

    • Дневной ATR или внутридневной диапазон за последние N дней.

    • Исходим из того, что типичное движение от входа до закрытия — часть этого диапазона.

Дальше:

  • Объём позиции рассчитывается так, чтобы ожидаемый дневной риск (например, 1 стандартное отклонение результата сделки) был равен нашей целевой доле капитала.

  • Если волатильность рынка вдвое выше обычного — размер позиции уменьшается примерно вдвое, и наоборот.

Таким образом:

  • Результат по дням получается более‑менее сопоставим по риску, и нам проще оценивать стратегию дальше в Монте‑Карло/портфеле.

4. Конвейер проверки: как гонять эту стратегию

 

4.1. Limited backtest
  1. Берем исторические данные SPY (или ES/NQ) за, скажем, 3–5 последних лет.

  2. Применяем фиксированные параметры:

    • tsignal=10:30,

    • N=20 дней для расчёта μimp,σimp​,

    • Zlong=1,Zshort=−1.

  3. Никаких сеток, оптимизаций, «подгоним Z под максимум PF» — просто считаем, что бы было, если бы мы вот так тупо торговали.

Смотрим:

  • Есть ли положительный средний PnL на сделку/день.

  • Какой порядок PF, Sharpe / Sortino, макс. просадки.

  • Насколько результаты отличаются от:

    • Buy&hold этого же периода.

    • Какого‑то простого рандомного baseline (случайные дни/направления с тем же риск‑таргетом).

Если стратегия не обгоняет разумный рандом — дальше не идем по ней.

4.2. Walk‑forward‑тестирование

Если limited‑backtest прошёл, начинаем бороться с подгонкой.

Схема:

  • Берем, например, с 2015 по 2025 годы.

  • Разбиваем так:

    • Первые 2 года — IS, следующие 6 месяцев — OOS.

    • Сдвигаем окно вперёд на 6 месяцев каждый раз.

На каждом IS‑окне:

  • Можно слегка пооптимизировать Z‑порог: перегоняем, например, варианты Zlong∈[0.5,1.5] с шагом 0,25 и берем что‑то в середине, а не экстремум, чтобы не ловить чистый максимум по истории.

  • Можно подвинуть время tsignal​ (45 минут vs 60 минут) — опять же в узком диапазоне.

Дальше:

  • Фиксируем найденные параметры и гоняем их на соответствующем OOS‑отрезке.

  • Сшиваем все OOS‑результаты в одну эквити‑кривую.

Оцениваем:

  • Какой PF/Sharpe именно по OOS.

  • Сколько периодов дали нормальный результат и сколько — мусор.

  • Нет ли картины, когда 1–2 окна вытягивают всё, а остальные в ноль/минус.

Если OOS‑эквити живое, и стратегия хотя бы стабильно чуть‑чуть лучше random baseline, это уже интересно.

4.3. Монте‑Карло по OOS‑результатам

Дальше отрываем результаты от конкретной последовательности дней и смотрим на семейство сценариев.

  1. Берем только OOS‑PnL по дням (реалистичнее — после вводимых комиссий/проскальзывания).

  2. Запускаем Монте‑Карло:

    • Перемешиваем порядок дней.

    • Делаем bootstrap выборки длиной, скажем, 5–10 лет эквивалентной торговли.

    • Генерируем тысячи траекторий эквити.

  3. Для каждой траектории считаем:

    • Финальную доходность.

    • Макс. просадку по эквити.

    • Длительность просадки.

Получаем:

  • Распределение финальных доходностей: вижу, какой диапазон результата реалистичен при таком edge.

  • Распределение максимальной просадки: видим, какие drawdown’ы нормальны для этой стратегии, а какие уже аномальны.

Это основа для:

  • Настройки уровня риска (сколько % капитала вообще можно доверить этой системе).

  • Формальных правил «боли»: если фактическая просадка вышла за, например, 99‑й перцентиль Монте‑Карло по DD — это сигнал деградации, а не просто «плохой период».

4.4. Инкубация в реальном времени

Дальше стратегию можно пустить в режиме тестирования:

  • Запускаем её в реале:

    • На микролотах.

    • Либо на отдельном маленьком счёте.

  • Никаких ручных вмешательств, стратегия должна торговать строго по правилам.

Смотрим на протяжении, скажем, 6–12 месяцев:

  • Совпадает ли статистика сделок с тем, что ожидалось по backtestУ + Монте‑Карло.

  • Не стало ли проскальзывание и комиссии убивать весь edge.

  • Не изменилась ли структурно реакция рынка на утренние импульсы (например, появилось сильное mean reversion‑поведение в те же временные слоты).

Если инкубация показала, что стратегия вживую ведёт себя в пределах ожидаемых диапазонов, её можно допускать в основной портфель с нормальными объёмами.

5. Встраивание в портфель систем

Эта дневная momentum‑стратегия на SPY/ES/NQ — лишь одна из возможных тем в зоопарке портфельном.

Что можно делать на портфельном уровне:

  • Считать корреляцию дневного PnL этой системы с другими стратегиями:

    • В идеале momentum‑дневка должна быть слабо коррелирована с, например, ночными gap‑системами или mean‑reversion‑подходами.

  • Выделять ей долю риска в портфеле, исходя из:

    • Её Монте‑Карло‑профиля (DD, волатильность).

    • Вклада в общую портфельную волатильность.

Правила:

  • Если система долгое время работает в рамках ожидаемого диапазона, можно аккуратно увеличивать risk budget.

  • Если её фактические просадки начинают систематически выходить за «коридор» Монте‑Карло:

    • Снижаем объём.

    • Либо отправляем стратегию обратно в стол — пересматривать гипотезу и параметры.

6. Протокол (пример, как и все остальное)

Для такой стратегии делаем краткий протокол примерно такого содержания:

  • Название: Intraday momentum SPY (или ES/NQ).

  • Гипотеза: сильный утренний импульс имеет статистическую склонность продолжаться до конца дня.

  • Инструменты и ТФ: SPY / ES / NQ, минутные бары, RTH.

  • Правила:

    • Расчёт импульса и Z‑score.

    • Условия входа long/short.

    • Время выхода.

    • Ограничения (нет торговли в особые дни/времена).

  • Риск:

    • Target дневная волатильность стратегии.

    • Формула размера позиции.

  • Результаты:

    • Limited‑backtest (период, PF, Sharpe).

    • Walk‑forward (оконная схема, OOS‑метрики).

    • Монте‑Карло (ключевые перцентили финальной доходности и DD).

    • Инкубация (фактический период, результаты).

  • Правила управления:

    • Критерии включения в основной портфель.

    • Условия увеличения/снижения объёма.

    • Trigger’ы «убить стратегию» (по фактической DD vs Монте‑Карло‑профиль).

Конспект - как проверять торговые системы

Конспект - как проверять торговые системы

Конспект - как проверять торговые системы

Конспект - как проверять торговые системы

Конспект - как проверять торговые системы

Конспект - как проверять торговые системы


Эта заметка — конспект конспекта других конспектов + комменты и наблюдения. Ни на что не претендует. Кому полезно — тому полезно. Остальным — остальное.

Если вы дочитали до конца, то это значит, что вы дочитали до конца. Только и всего. Поздравляю. 

Есть что добавить — пишите в комментах, пока можно редактировать — добавим в пост. 

Хотите поделиться личным опытом по перечисленным вопросам — также жду в комментах.

Чао!

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
938 | ★9
14 комментариев



Пользователь запретил комментарии к топику.

Читайте на SMART-LAB:
Фото
Новые возможности с БКС API: торги заблокированными активами, внебиржевой валютой и другое
Делимся новостями БКС API¹ — мы выпустили три важных обновления, которые расширяют торговые инструменты и упрощают работу с рыночными...
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 5 июня 2026 г.
Следите за нашими новостями в удобном формате: Telegram , Youtube , RuTube, Smart-lab , ВКонтакте , Сайт
Фото
Курс рубля летом: ждать ли сюрпризов?
Рост вопреки прогнозам: с начала 2025 года рубль укрепился на 55%, хотя многие аналитики ожидали его ослабления. Теперь, когда Минфин...
Фото
ЦИАН. Отчет МСФО Q1 26г. Такой рентабельности никогда не было
Вышли финансовые результаты по МСФО за Q1 2026г. от компании ЦИАН: 👉Выручка — 3,90 млрд руб. (+17,9% г/г) 👉Операционные расходы — 2,72...

теги блога Op_Man

....все тэги



UPDONW
Новый дизайн