← Все идеи
#045Размер позицииПозиционная

Размер по ATR, зафиксированный на входе, против ежедневного vol-targeting

Takahé Capital считают размер позиции по ATR один раз при входе, от условного капитала по закрытым сделкам, и не пересчитывают его до выхода. Карточка задаёт блок и честное сравнение с ежедневной подстройкой под волатильность.

The Algorithmic Advantage · Moritz Seibert, Moritz Heiden · Смотреть видео

Рынки

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

Таймфрейм

D1

Данные

OHLC

Правила

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

Сложность

Средняя

Статус

Не проверено

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

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

Идея коротко

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

Moritz Seibert и Moritz Heiden из Takahé Capital торгуют первым способом. ATR замеряется один раз в момент открытия сделки, и размер держится до выхода. Капитал для расчёта (trade level) берётся не из текущего счёта, а из условной величины. Её пересматривают редко и только по реализованной прибыли, открытая прибыль в расчёт не входит.

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

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

Аргументы авторов:

  • Меньше сделок. Каждая подстройка платит комиссию и спред, а фиксированный размер их не платит совсем.
  • Волатильность плохая мера риска. Она симметрична и одинаково считает движение в вашу сторону и против вас.
  • Подстройка ломает логику системы. Шорт в падающем рынке обычно попадает на рост волатильности, и правило урезает выигрышную позицию. Пример авторов: нефть в 2020 году.
  • Подстройка срезает правый хвост. Кривая становится глаже, но трендовая система живёт редкими огромными сделками, и именно их размер уменьшается.
  • Тезис «волатильность растёт у разворотов» их данные не подтверждают. Облигации годами падали плавно. Контроль волатильности в такой ситуации наращивал бы позицию, которая начала терять.

Про свой подход авторы честно говорят: единственный замер может прийтись на момент необычно низкой или высокой волатильности, и это бывает и плюсом, и минусом. Исследование, на которое они ссылаются, в интервью не раскрыто. Цифр по нему нет.

Trade level по закрытым сделкам авторы называют консервативным: плечо не наращивается автоматически на каждой волне открытой прибыли.

Правила

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

// считается только в момент сигнала на вход
// trade level: условный капитал для расчёта размера (авторы)
// держится постоянным и пересматривается по реализованной прибыли, когда P&L заметно изменился
ClosedEquity = InitialCapital + сумма закрытых сделок          // открытая прибыль не входит (авторы)
IF первый торговый день месяца                                  // Finetiq: проверка раз в месяц
   AND |ClosedEquity / TradeLevel - 1| >= 10%                   // Finetiq: порог «заметного» изменения
    TradeLevel = ClosedEquity

ATRe      = ATR(20) на закрытии сигнального бара                 // авторы: недавний средний диапазон; Finetiq: 20
RiskMoney = TradeLevel * 0.25%                                   // авторы: «определённый процент»; Finetiq: 0.25%
StopDist  = 3 * ATRe                                             // авторы: начальный стоп есть; Finetiq: 3 ATR
Contracts = floor(RiskMoney / (StopDist * PointValue))

BUY Contracts AT NEXT BAR OPEN     // или SELL SHORT
// после входа Contracts не меняется до выхода (авторы): ни при росте ATR, ни при падении
// одинаковый риск для всех рынков и для лонга и шорта (авторы)

Контрольный вариант: ежедневный vol-targeting (Finetiq)

// тот же вход, тот же выход, тот же TradeLevel; меняется только ведение размера
Target(t) = floor(TradeLevel * 0.25% / (3 * ATR(20)[t] * PointValue))

IF |Target(t) - CurrentContracts| >= MAX(1, 20% * CurrentContracts)   // Finetiq: зона нечувствительности
    довести позицию до Target(t) AT NEXT BAR OPEN
    пометить сделку ярлыком "vol-adj"

Корзина корректировок (метод авторов, учёт Finetiq)

// авторы: сложить все корректирующие сделки отдельно, с комиссией и спредом 0.5-1 тик
// Finetiq: каждая добавка закрывается при ближайшем сокращении или на общем выходе (LIFO)
AdjPnL = Σ по сделкам "vol-adj": (цена закрытия части - цена открытия части) * контракты * PointValue
         - комиссия - (0.5 или 1 тик) * контракты * 2
// AdjPnL < 0: подстройка стоит денег (утверждение авторов)

Применение к карточке always-in-breakout

// там размер уже считается в момент переворота: Units = Equity * 0.2% / (ATR20 * PointValue)
// блок меняет две вещи:
Equity  -> TradeLevel по закрытым сделкам, пересмотр раз в месяц при изменении от 10%
ATR20   -> фиксируется на баре переворота и не пересчитывается до следующего переворота
// контрольный вариант: те же перевороты, Units пересчитываются каждый день по ATR20[t]

Параметры

Параметр Значение Откуда
Замер волатильности один раз при входе автор
Мера волатильности недавний ATR автор
Капитал для расчёта trade level по закрытым сделкам автор
Пересмотр trade level когда P&L заметно изменился автор
Порог пересмотра 10%, проверка раз в месяц Finetiq
Период ATR 20 Finetiq
Риск на сделку 0.25% trade level Finetiq
Стоп для расчёта размера 3 ATR Finetiq
Лонг и шорт одинаковый бюджет риска автор
Контроль: частота пересчёта каждый день Finetiq
Контроль: зона нечувствительности 1 контракт или 20% Finetiq
Издержки в корзине 0.5-1 тик спреда плюс комиссия автор

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

  1. Главное сравнение. Одни и те же сигналы (например, always-in-breakout или turtle-4w-2w на 20-30 фьючерсах), размер на входе против ежедневного vol-targeting. Смотрите доходность, максимальную просадку, средний убыток, среднюю прибыль и асимметрию распределения сделок.
  2. Корзина корректировок. Посчитайте AdjPnL при 0.5 и при 1 тике. Это прямая проверка утверждения авторов, что подстройка сама по себе приносит убыток.
  3. Правый хвост. Доля итоговой прибыли, которую дают 5% лучших сделок, в обоих вариантах. Если vol-targeting заметно её снижает, он меняет саму природу трендовой системы, о чём и говорят авторы.
  4. Частота между крайностями. Пересчёт каждый день, раз в неделю, раз в месяц, только при изменении размера от 50%. Так видно, где исчезает разница.
  5. Чувствительность единственного замера. Период ATR 10, 20, 50. Отдельно сделки, открытые сразу после всплеска волатильности: при коротком ATR их размер будет крошечным на всю сделку.
  6. Капитал для расчёта. Trade level с пересмотром, закрытый капитал на каждой сделке, полный капитал с открытой прибылью. Сравните поведение просадки в конце длинного тренда, когда открытая прибыль возвращается.
  7. Размер счёта. При 1-3 контрактах на рынок ежедневная подстройка почти всегда округляется в ноль изменений. Прогоните сравнение на капитале, с которым будете торговать, а не на миллионах.

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

TradingView (Pine Script)

  • Закрытый капитал: strategy.initial_capital + strategy.netprofit. strategy.equity уже включает открытую прибыль и для trade level не подходит.
  • Размер на входе считайте на сигнальном баре и передавайте в strategy.entry(..., qty = n). Стоимость пункта: syminfo.pointvalue.
  • Контрольный вариант требует добора и частичного сокращения: pyramiding в strategy() и strategy.close(..., qty = x). Без pyramiding добавки молча не исполнятся, и сравнение покажет два одинаковых результата.
  • Портфельного теста нет: trade level на весь портфель в Pine не посчитать, только на один символ (раздел 5 справочника). ta.atr сглаживает по Уайлдеру.

MultiCharts и TradeStation (EasyLanguage)

  • Закрытая прибыль стратегии: NetProfit, открытая: OpenPositionProfit. Начальный капитал удобнее задать входом, чтобы trade level считался одинаково в бэктесте и в торговле.
  • Стоимость пункта BigPointValue. AvgTrueRange это простое среднее TrueRange, а не Уайлдер.
  • Размер фиксируется в переменной на сигнальном баре: Buy Contracts_ contracts next bar at market. Контрольный вариант требует разрешить несколько входов в одну сторону в свойствах стратегии и сокращать позицию именованными выходами с числом контрактов.
  • Общий trade level на много рынков считается в Portfolio Maestro или Portfolio Trader. На одном графике стратегия видит только свою прибыль.

MetaTrader 5 (MQL5)

  • AccountInfoDouble(ACCOUNT_BALANCE) это баланс без плавающей прибыли, ACCOUNT_EQUITY с ней. Для trade level нужен баланс, но он общий для всех советников на счёте.
  • Лот из риска: SYMBOL_TRADE_TICK_VALUE, SYMBOL_TRADE_TICK_SIZE, округление до SYMBOL_VOLUME_STEP. Зафиксированный лот храните в переменной, а при перезапуске советника берите объём открытой позиции.
  • На неттинговом счёте подстройка меняет объём одной позиции, на хеджинговом создаёт отдельные позиции. Корзину корректировок проще вести на хеджинговом счёте.
  • iATR это простое среднее TR. У CFD каждая подстройка платит спред, а позиция, которую держат 200 дней, ещё и своп. Для CFD издержки в корзине будут выше, чем у авторов на биржевых фьючерсах.

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

  • Исследование авторов не опубликовано в интервью. Все утверждения о среднем убытке и корзине корректировок пока словесные.
  • Авторы торгуют долгосрочный тренд со средней сделкой около 200 дней. За такое время волатильность меняется сильно, и разница между двумя способами заметна. У системы со сделками на 3-10 дней ATR почти не успевает измениться, и сравнение может ничего не показать.
  • Единственный замер ATR может прийтись на всплеск или затишье. Если после затишья волатильность выросла в разы, риск позиции в деньгах тоже вырос в разы, и блок это сознательно не исправляет.
  • Trade level консервативен только на росте. После глубокой просадки он остаётся высоким до пересмотра, и риск в процентах от реального капитала становится больше плана.
  • Процент риска, период ATR, множитель стопа и порог пересмотра trade level авторы не назвали. Значения в таблице стартовые и требуют проверки.
  • На маленьком счёте округление до целых контрактов сильнее, чем выбор между двумя способами. Фиксированный процент риска там выдерживается только приблизительно.

Источники

  • 003 - Two Quants - Moritz Seibert & Mortiz Heiden (Part 1)

    The Algorithmic Advantage · Moritz Seibert, Moritz Heiden · 2023-09-18

    • 26:32Бюджет риска: одинаковое ожидание через размер
    • 33:30Размер от trade level, открытая прибыль не в счёт
    • 34:30Trade level пересматривают, когда P&L заметно изменился
    • 57:18Два способа: фиксированный размер или подстройка
    • 58:45Портфельная подстройка режет выигрышные позиции
    • 59:50Глаже кривая, но срезан правый хвост
    • 1:01:29ATR замеряется один раз при открытии сделки
    • 1:02:22Экономия на комиссиях и спреде
    • 1:05:52Облигации: падение без роста волатильности
    • 1:07:02Нефть 2020: шорт урезан почти до нуля
    • 1:07:42Исследование: средний убыток больше, корзина в минусе
  • 004 - Two Quants - Moritz Seibert & Moritz Heiden (Part 2)

    The Algorithmic Advantage · Moritz Seibert, Moritz Heiden · 2023-09-21

    • 11:53Средняя сделка 200 дней, лучшие 600-700
    • 12:07Без vol-targeting: % от trade level и размер по ATR

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

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

  • Средняя сделка трендовой программы Takahé Capital длится около 200 дней, отдельные прибыльные держатся 600-700 дней. Размер задаётся по недавнему ATR, vol-targeting не применяется.
  • По исследованию авторов, контроль волатильности статистически увеличивает средний убыток. Если сложить все корректирующие сделки в отдельную корзину с комиссией и спредом от половины до целого тика, итог отрицательный. Точных чисел в интервью нет.
  • Пример авторов: в 2020 году, когда нефть ушла в отрицательные цены, контроль волатильности урезал бы прибыльный шорт почти до нуля.

Похожие идеи

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