← Все идеи
#047ВыходСвинг

Отключение стратегии навсегда при просадке в 1.5 раза больше исторической

Andrea Unger отключает систему навсегда, когда её просадка вне выборки на 50% больше исторической или флэт затянулся. Историческая просадка из бэктеста сама занижена, поэтому базу для порога нужно считать осторожно.

The Algorithmic Advantage · Andrea Unger · Смотреть видео

Рынки

Фьючерсы, Индексы, Сырьё, Облигации

Таймфрейм

D1

Данные

OHLC

Правила

Частично формализовано

Сложность

Средняя

Статус

Не проверено

Часть правил дописали мы, это помечено в тексте.

TradingView есть ловушки
EasyLanguage есть ловушки
MetaTrader 5 есть ловушки

Идея коротко

Andrea Unger торгует портфель из многих небольших фьючерсных систем и раз в месяц решает, какие из них работают. Его программа Zeus отключает систему навсегда при одном из двух условий. Просадка вне выборки превысила историческую максимальную просадку в 1.5 раза. Или система слишком долго не обновляет максимум, длительность этого флэта он не назвал.

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

Это правило жизненного цикла, а не сделки. Оно встраивается в любую систему, у которой есть бэктест. Главная ловушка в базовой величине: историческая просадка из бэктеста почти всегда меньше той, что стратегия покажет в торговле.

Почему это может работать

Объяснение автора практическое. Система, которая никуда не ведёт, занимает маржу и держит риск, а место в портфеле можно отдать другой. Порог нужен заметно больше исторической просадки: обычная для системы просадка не должна её убивать. Unger допускает 40-60% вместо 50%, но подбирать порог по истории считает ненадёжным, и сами правила выключения сознательно не оптимизирует.

Запрет на «ботокс» тоже от автора. Переподобранные параметры подгоняются под последний неудачный участок. Новая стратегия с нуля хотя бы проходит полный цикл разработки и проверки вне выборки.

Почему историческая просадка занижена (объяснение Finetiq):

  • Бэктест это одна траектория. Те же сделки в другом порядке дают другую просадку, и фактическое значение из истории редко оказывается худшим из возможных.
  • Максимальная просадка растёт с длиной периода. За пять лет торговли её ожидаемая глубина больше, чем за три года бэктеста, даже если стратегия не изменилась.
  • Параметры подбирались на той же истории. Отбор среди вариантов предпочитает гладкие кривые, и просадка на выборке смещена вниз.
  • Сам Unger разрабатывает системы на одном контракте без издержек и добавляет их позже. Просадка, снятая до издержек, меньше торговой.

Отсюда следствие. Порог 1.5× от заниженной базы будет чаще отключать здоровые стратегии, чем кажется. Зато медленно умирающую систему без глубоких просадок ловит только второй триггер, по длительности флэта.

Правила

Базовые величины (автор, расчёт Finetiq)

// до запуска, по бэктесту с издержками и тем же размером позиции, что в торговле
HistMaxDD   = максимальная просадка дневной кривой капитала, в деньгах
              // автор: «историческая просадка»; Finetiq: по дневной кривой с открытыми позициями
HistMaxFlat = самый длинный период без нового максимума кривой, в торговых днях   // Finetiq

// Finetiq: осторожная база вместо одного числа
FOR i = 1 TO 1000
    собрать кривую из дневных P&L бэктеста, переставленных блоками по 20 дней
    MaxDD_i = максимальная просадка на отрезке длиной с планируемый живой период
HistMaxDD_MC = 95-й перцентиль MaxDD_i

Отключение (автор, второй порог Finetiq)

// на закрытии каждого дня после запуска
Peak   = максимум кривой капитала с даты запуска          // Finetiq: считаем только живой период
LiveDD = Peak - Equity

IF LiveDD > 1.5 * HistMaxDD                                // автор: превышение на 50%
    KILL
IF торговых дней с последнего максимума > 1.5 * HistMaxFlat   // автор: долгий флэт; Finetiq: 1.5
    KILL

KILL = закрыть позиции, отменить ордера, больше не включать   // автор: «никогда не играет снова»
// автор: множитель 1.4-1.6 допустим, подбор по истории ненадёжен

После отключения (автор)

// не менять параметры отключённой системы
IF принцип системы ещё выглядит рабочим
    новая разработка с нуля: исходная идея без фильтров, новая проверка вне выборки
// на место отключённых добавлять новые независимые системы, ориентир автора: за ~6 месяцев

Вариант B. Titan: временное отключение по результату кривой (автор)

// раз в месяц, по «теневой» кривой: выключенная система продолжает считаться, но не торгуется (автор)
Perf9 = результат за последние 9 месяцев
Perf2 = результат за последние 2 месяца
ON = Perf9 > 0 AND Perf2 > 0 AND Perf2 / 2 > Perf9 / 9
// автор: 2 месяца «в среднем лучше» 9; Finetiq: сравниваем средний месячный результат
// в следующем месяце торгуются системы с ON, лучшие по результату (автор)
// автор сам пишет пороги как пример, их можно менять

Применение к карточке drift-vwap-pullback

// автор той карточки подобрал параметры на 2020–2024 и называет 2024–2026 вне выборки
HistMaxDD = максимальная просадка 2020–2024 на 1 NQ с издержками          // Finetiq
с первого дня 2024 года:
    IF LiveDD > 1.5 * HistMaxDD THEN KILL
// вопрос для проверки: была бы стратегия отключена на собственном out-of-sample участке и когда

Параметры

Параметр Значение Откуда
База максимальная просадка бэктеста автор
Порог просадки 1.5 × базы автор
Допустимый диапазон порога 1.4-1.6 автор
Второй триггер флэт дольше нормы автор
Длина флэта 1.5 × самого длинного флэта в бэктесте Finetiq
Отсчёт живой просадки от максимума после запуска Finetiq
Повторное включение никогда автор
Осторожная база 95-й перцентиль перестановок блоками по 20 дней Finetiq
Частота пересмотра портфеля раз в месяц автор
Вариант B: окна результата 9 и 2 месяца автор
Вариант B: условие оба положительные, 2 месяца в среднем лучше 9 автор

Что проверить

  1. Ложные отключения. Нарежьте историю на окна: 3 года разработки, 2 года торговли. Для каждой своей стратегии посчитайте, срабатывал ли порог и что стратегия делала после. Сравните множители 1.3, 1.5 и 2.0 по доле отключений, после которых стратегия восстановилась.
  2. Какая база. Одно число из бэктеста без издержек, с издержками и 95-й перцентиль перестановок. Посмотрите, насколько сдвигается дата отключения.
  3. Навсегда против временно. Портфель своих стратегий в трёх режимах: всё всегда включено, отключение навсегда, помесячное включение по правилу Titan на теневой кривой.
  4. Порог флэта. 1, 1.5 и 2 самых длинных флэта бэктеста. Для стратегий с редкими сделками флэт может длиться годами без всякой деградации.
  5. Портфель без замены. Прогон, где отключённые стратегии ничем не заменяются. Если у вас 2-3 системы, а не 30 из 100, как у Unger, правило быстро оставит портфель пустым.
  6. Out-of-sample чужой стратегии. Схема из блока «Применение» на drift-vwap-pullback и на любой карточке, где автор назвал период подбора параметров.

Особенности платформ

TradingView (Pine Script)

  • strategy.risk.max_drawdown(value, type) после достижения просадки закрывает позиции и запрещает новые ордера до конца теста. Просадка считается по всей истории теста, включая участок, с которого вы взяли базу. Для отсчёта от даты запуска нужен свой счётчик на strategy.equity и входной параметр с датой.
  • Базу удобно снять отдельным прогоном на участке разработки: strategy.max_drawdown в конце этого прогона.
  • Отключение в бэктесте означает, что до конца графика сделок нет. Чтобы увидеть, что было бы дальше, нужен второй экземпляр стратегии без правила.
  • Pine видит кривую одной стратегии на одном символе. Портфель из многих систем и правило Titan здесь не собрать.

MultiCharts и TradeStation (EasyLanguage)

  • Кривая стратегии: NetProfit + OpenPositionProfit. Максимум и флаг отключения храните в переменных, дату запуска и базу задайте входами.
  • При включении стратегия пересчитывается по всей истории. С датой запуска и базой во входах отключение воспроизводится, но по теоретическим, а не реальным исполнениям. Решение принимайте по отчёту реальных сделок.
  • Сам Unger считает ротацию вне платформы: выгружает из MultiCharts дневной P&L каждой системы и собирает матрицу в своей программе на MATLAB. Для портфеля из десятков стратегий это ближе к его практике, чем код внутри одной стратегии.

MetaTrader 5 (MQL5)

  • ACCOUNT_EQUITY общий для всех советников на счёте. Кривую одной стратегии собирайте из истории сделок по magic: HistorySelect, HistoryDealGetInteger(ticket, DEAL_MAGIC), HistoryDealGetDouble для DEAL_PROFIT, DEAL_COMMISSION, DEAL_SWAP, плюс плавающая прибыль открытых позиций.
  • Флаг отключения храните вне памяти советника, в глобальной переменной терминала или в файле. Иначе перезапуск терминала вернёт систему в торговлю.
  • Своп и комиссия в MT5 идут отдельными полями сделки. Если база снята в тестере без них, живая просадка будет систематически глубже.

Где идея может сломаться

  • Порог 1.5 это эвристика одного трейдера. Unger сам называет подбор порога ненадёжным и не приводит статистики, как часто отключения оказывались верными.
  • База из бэктеста занижена по причинам выше. Без поправки правило отключает часть стратегий, которые просто попали в обычную для себя, но не встреченную в истории просадку.
  • У системы с редкими сделками просадка вне выборки набирается годами. Правило срабатывает поздно, когда основные потери уже случились.
  • Отключение навсегда исключает восстановление. Если стратегия циклична, вариант Titan с теневой кривой может оказаться лучше, но и он требует проверки.
  • Правило рассчитано на конвейер разработки. У Unger сотня стратегий на выбор и регулярная замена. С одной-двумя системами оно превращается в решение «перестать торговать».
  • Длительность флэта автор не назвал. Второй триггер в карточке целиком наша формализация.

Источники

  • 038 - Andrea Unger - 672% Returns? Sure! Would You Like Some Risk with That?

    The Algorithmic Advantage · Andrea Unger · 2025-05-07

    • 02:23Конкурс 2008 года: счёт $15 100, полный риск
    • 04:34Просадка около 46% за месяц
    • 46:10Состав портфеля стратегий меняется раз в месяц
    • 47:05Правила Titan: результат за 9 и 2 месяца
    • 51:29Titan держит систему на скамейке, Zeus убивает
    • 51:54Порог: максимальная просадка × 1.5 или долгий флэт
    • 52:19Убитые системы нужно заменять новыми
    • 1:04:43Бэктест ротации на дневных P&L с 2008 года
    • 1:05:32Выключенная система продолжает считаться
    • 1:08:37Правила выключения не оптимизирует
    • 1:09:22Просадка вне выборки на 50% больше исторической
    • 1:09:50100 стратегий, в торговле около 30
    • 1:20:31Разработка на одном контракте без издержек
    • 1:34:47Обновлённые параметры работали хуже оригинала
    • 1:35:14Без «ботокса»: новая стратегия с нуля

Заявлено автором

Эти цифры и утверждения принадлежат автору. Мы их не проверяли.

  • Andrea Unger четыре раза выигрывал World Cup Trading Championship. В 2008 году он получил +672% на счёте $15 100, торгуя с полным риском, и по ходу конкурса пережил просадку около 46% за один месяц.
  • Для счёта $100 000 в микрофьючерсах автор советует иметь около 100 разработанных стратегий, из которых в торговле окажется около 30.
  • Если за месяц отключено 10 систем, в ближайшие полгода, по словам автора, нужно добавить 10 новых.
  • Процесс включения и отключения стратегий автор проверяет на дневных P&L всех систем начиная с 2008 года.

Похожие идеи

Обновлено: 2026-09-10