Блог им. 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 Монте‑Карло‑профиль).

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

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

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

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

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

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


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

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

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

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

Чао!

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



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

Читайте на SMART-LAB:
Невысокий дивиденд Сургутнефтегаза был ожидаем
Котировки обыкновенных акций Сургутнефтегаза в ходе торгов 15 мая растут на 0,1%, до 19,53 руб., а привилегированные акции падают на 2,05%, до...
Фото
📃 Проверяем на цифрах актуальность стратегии «Продавай в мае и уходи»
Изначально стратегия появилась на западе. Летом инвестиционная активность снижается. Инвестор может продать акции в мае и уйти на каникулы...
Фото
Итоги первичных размещений ВДО и некоторых розничных выпусков на 15 мая 2026 г.
Следите за нашими новостями в удобном формате: Telegram , Youtube , RuTube, Smart-lab , ВКонтакте , Сайт
Фото
Хэдхантер. Отчет МСФО за Q1 2026г. Всё будет непросто…но…есть надежда.
Вышли финансовые результаты по МСФО за Q1 2026г. от компании Хэдхантер: 👉Выручка — 9,49 млрд руб. (-1,5% г/г) 👉Операционные расходы —...

теги блога Op_Man

....все тэги



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