Идея коротко
Это не сигнал, а блок размера позиции. Он подходит к любому правилу, которое выдаёт число со знаком: к пересечению средних из ma-cross-continuous-forecast, к положению цены в диапазоне из range-position-breakout, к собственному индикатору.
Rob Carver, бывший руководитель направления в Man AHL, приводит сигнал каждого правила к прогнозу. 0 значит нет мнения, ±10 средняя позиция, ±20 максимум. Прогнозы нескольких правил он сводит взвешенным средним в одно число на инструмент. Позиция равна средней позиции, умноженной на прогноз / 10. Средняя позиция считается по риску, одинаково для всех инструментов.
У размера по риску есть слабое место: чем тише инструмент, тем больше контрактов. Поэтому у автора два ограничителя. Пол волатильности: ниже него инструмент не торгуется. Жёсткий потолок размера: номинал позиции не превышает заданной доли капитала, даже если волатильность упала между пересмотрами.
Почему это может работать
Размер по риску выравнивает вклад инструментов. Без него золото и двухлетние облигации в одном портфеле живут в разных масштабах, и результат определяет самый волатильный рынок. Прогноз добавляет вторую ось: сильный сигнал получает больше риска, слабый меньше. По словам автора, это даёт естественный стоп. Когда цена идёт против позиции, прогноз снижается, и позиция сокращается постепенно, так же как набиралась. Кап ±20 он объясняет ограничением риска одного инструмента.
Слабое место автор называет сам. Инструмент, который выглядит безопасным из-за низкой волатильности, получает огромную позицию в номинале. Его пример: при номинале в 100% капитала падение инструмента на 10% стоит 10% счёта. При пяти номиналах это уже половина счёта. Пол отсекает такие инструменты заранее. Потолок страхует между пересмотрами списка, которые у автора проходят раз в несколько месяцев: если волатильность за это время упала, позиция и плечо растут сами.
Выигрыш блока автор получает на портфеле из примерно 200 фьючерсов. На одном инструменте прогноз, пол и потолок работают так же, но их эффект виден хуже.
Правила
Прогноз (автор, нормировка Finetiq)
// дневные бары, расчёт раз в день после закрытия
// любое правило i выдаёт сырое число RawF_i со знаком
Scalar_i = 10 / Average(|RawF_i|) // автор: средний |прогноз| = 10; Finetiq: среднее только по прошлым барам
F_i = max(-20, min(+20, RawF_i * Scalar_i)) // автор: кап ±20
F = Σ w_i * F_i // автор: взвешенное среднее; Finetiq: веса равные, Σ w_i = 1
F = F * K // Finetiq: K возвращает средний |F| к 10 по прошлой истории
F = max(-20, min(+20, F))
Средняя и целевая позиция
// автор: одинаковый расчёт риска для всех инструментов, бюджет делится сверху вниз по секторам
RiskPerInstr = 0.5% // Finetiq: доля капитала на один дневной ATR(25) для одного инструмента
// это не средний вес инструмента около 0.5% из заявлений автора: там доля в портфеле из ~200 фьючерсов,
// числа совпали случайно; в портфеле делите общий бюджет риска по весам
AvgPos = Equity * RiskPerInstr / (ATR(25) * PointValue) // Finetiq: как в карточках Carver этой базы
Target = F / 10 * AvgPos // автор: +10 средняя позиция, +20 двойная
IF AvgPos < 4 // автор: меньше 4 контрактов, непрерывности нет
// Finetiq: дискретный режим по тому же прогнозу
Target = sign(F) * max(1, round(AvgPos)) IF |F| >= 10, иначе 0
// Finetiq: дискретный режим считается до пола и потолка, чтобы они могли обнулить или срезать и его
Пол волатильности (автор, порог Finetiq)
// автор: список инструментов пересматривается раз в несколько месяцев
Review = каждые 63 торговых дня // Finetiq: квартал
VolPct = Average(ATR(25) / Close, 63) // Finetiq: по цене текущего контракта, не склейки
IF VolPct < 0.2% THEN Tradable = FALSE // автор: ниже минимума не торгуем; Finetiq: порог 0.2% в день
IF NOT Tradable THEN Target = 0
// автор: риск можно перенести в коррелированный и более волатильный инструмент,
// пример: двухлетние облигации США → 5- или 10-летние
// автор: там же лимиты ликвидности и издержек; пороги Finetiq задайте под свой счёт
Потолок номинала (автор, множитель Finetiq)
Notional = |Target| * Close * PointValue
MaxNotional = 1.0 * Equity // автор: «не пять капиталов»; Finetiq: 1.0
IF Notional > MaxNotional
Target = sign(Target) * floor(MaxNotional / (Close * PointValue))
// автор: потолок срабатывает между пересмотрами, когда волатильность упала и позиция выросла
// автор: такой инструмент на пересмотре кандидат на исключение
Округление и исполнение
// порядок: целевая позиция и дискретный режим → пол → потолок → округление
Target = round(Target)
IF |Target - Position| >= max(1, 0.1 * AvgPos) // Finetiq: зона без сделок
торговать разницу AT NEXT BAR OPEN
// автор в бэктесте исполняет по закрытию следующего дня; сравните оба варианта
Пример применения
Счёт 500 000 долларов. На фьючерсе Micro E-mini S&P 500 (MES, 5 долларов за пункт) работают два правила из соседних карточек. Цены и ATR условные.
F_ma = +12 // ma-cross-continuous-forecast: шесть скоростей EMA
F_range = +18 // range-position-breakout: окно 80 дней
F = 0.5 * 12 + 0.5 * 18 // = +15, равные веса (Finetiq), K = 1 для простоты
Close = 5000, ATR(25) = 62 пункта
VolPct = 62 / 5000 = 1.24% // выше пола 0.2%
AvgPos = 500000 * 0.5% / (62 * 5) = 8.06 // больше 4, режим непрерывный
Target = 15 / 10 * 8.06 = 12.1 → 12 контрактов
Notional = 12 * 5000 * 5 = 300000 // 0.6 капитала, ниже потолка 1.0
Второй инструмент тихий: фьючерс на двухлетние облигации США (ZT, 2000 долларов за пункт), условно Close = 104, ATR(25) = 0.12 пункта.
VolPct = 0.12 / 104 = 0.115% // ниже пола 0.2%: Tradable = FALSE
// что было бы без пола, при F = +20
AvgPos = 500000 * 0.5% / (0.12 * 2000) = 10.4
Target = 20 / 10 * 10.4 = 20.8 → 21 контракт
Notional = 21 * 104 * 2000 = 4368000 // 8.7 капитала
// потолок 1.0 срезал бы позицию до floor(500000 / 208000) = 2 контрактов,
// а 2 контракта меньше 4: для этого счёта инструмент фактически дискретный
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Шкала прогноза | средний модуль 10, кап ±20 | автор |
| Объединение правил | взвешенное среднее | автор |
| Веса правил | равные | Finetiq |
| Позиция | прогноз / 10 × средняя позиция | автор |
| Средняя позиция | по риску, одинаково для всех инструментов | автор |
| Риск на инструмент | 0.5% капитала на ATR(25), не путать с весом 0.5% у автора | Finetiq |
| Пол волатильности | есть, ниже него инструмент не торгуется | автор |
| Порог пола | ATR(25) / цена ниже 0.2% в день | Finetiq |
| Потолок номинала | есть, пример «не пять капиталов» | автор |
| Множитель потолка | 1.0 капитала на инструмент | Finetiq |
| Пересмотр списка | раз в несколько месяцев | автор |
| Период пересмотра | 63 торговых дня | Finetiq |
| Минимум для непрерывного режима | 4 контракта | автор |
| Дискретный режим | по знаку прогноза при |F| от 10 | Finetiq |
| Зона без сделок | 10% средней позиции, минимум 1 контракт | Finetiq |
| Исполнение в бэктесте | закрытие следующего дня | автор |
Что проверить
- Блок против фиксированного объёма. Одно правило, например пересечение EMA 16/64, в трёх режимах: всегда 1 контракт, размер по риску без прогноза, полный блок. Сравните доходность на единицу риска, худший месяц и число сделок.
- Пол волатильности. 10-20 фьючерсов, включая облигации и короткие ставки. С полом и без, порог 0.1%, 0.2%, 0.4%. Главная метрика: худший день портфеля в процентах капитала, а не годовая доходность.
- Потолок номинала. Множитель 0.5, 1, 2 и без потолка. Найдите периоды, когда потолок срабатывал, и посмотрите, что было с инструментом после.
- Округление на вашем счёте. Дробные контракты против целых при вашем капитале. Посчитайте долю инструментов со средней позицией меньше 4 контрактов: для них гладкость из теста на счёте недоступна.
- Задержка. Исполнение на открытии следующего дня, по закрытию следующего дня, через 5 и 10 дней. Автор оценивает две недели простоя примерно в 10% результата. Если у вас потеря намного больше, ваши правила быстрее, чем у него.
- Зона без сделок. 0%, 10% и 25% средней позиции. Число сделок в год против результата после комиссии и спреда.
- Заглядывание вперёд. Средний |прогноз| для Scalar и K по всей истории против растущего окна. Первый вариант знает будущее распределение и завышает тест.
Особенности платформ
TradingView (Pine Script)
- Стоимость пункта
syminfo.pointvalue, капиталstrategy.equity. Объём округляйте сами (math.round), иначе тест пойдёт дробными контрактами. - Позицию меняйте на разницу:
strategy.orderнаtarget - strategy.position_size. Черезstrategy.entryдобор ограниченpyramiding, по умолчанию дополнительных входов нет. - Стратегия торгует один символ. Общий бюджет риска на портфель и замену тихого инструмента в Pine не собрать: считайте каждый инструмент отдельно с его долей капитала.
ta.atrсглаживает по Уайлдеру, а встроенный ATR в EasyLanguage и MQL5 простой. Средняя позиция на платформах совпадёт, только если ATR посчитан одинаково.
MultiCharts и TradeStation (EasyLanguage)
- Стоимость пункта
BigPointValue. Частичное сокращениеSell N contracts total next bar at market, добор разрешается в свойствах стратегии. Sell Shortпри открытом лонге переворачивает всю позицию сразу. Переход прогноза через ноль делайте в два шага: сокращение лонга, затем шорт.- На склеенном вычитанием фьючерсе цена может уйти к нулю и в минус. Пол и потолок считайте по цене текущего контракта (отдельный поток данных без склейки), ATR в пунктах можно брать со склейки.
- Портфельный бюджет риска и замена тихих инструментов: Portfolio Trader в MultiCharts или Portfolio Maestro в TradeStation.
MetaTrader 5 (MQL5)
- Объём из риска:
SYMBOL_TRADE_TICK_VALUEиSYMBOL_TRADE_TICK_SIZE, округление доSYMBOL_VOLUME_STEP, не нижеSYMBOL_VOLUME_MIN. На минимальном лоте непрерывный режим становится дискретным. - Номинал считайте через размер контракта символа (
SYMBOL_TRADE_CONTRACT_SIZE) и цену. Плечо брокера не ограничитель риска: маржа позволит позицию намного больше потолка. - Мультисимвольный советник может вести весь список и заменять инструменты, но у брокера должны быть все символы. Облигационных фьючерсов у CFD-брокеров часто нет.
- Дневные бары строятся по серверу брокера, короткие воскресные бары занижают ATR. Позиции держатся неделями: заложите своп в тест.
Где идея может сломаться
- Порог пола, множитель потолка, риск на инструмент, веса правил и период пересмотра автор не называет. Числа в карточке наши стартовые значения.
- Выигрыш блока автор описывает на портфеле из примерно 200 фьючерсов. На одном-двух инструментах пол может просто выключить торговлю, а потолок сделать позицию одноконтрактной.
- Малый счёт. При средней позиции меньше четырёх контрактов прогноз меняет позицию ступенями, и преимущества непрерывной торговли пропадают. На дорогих контрактах потолок номинала срезает позицию до одного-двух контрактов.
- Размер по риску растёт после спокойных периодов. Всплеск волатильности застаёт систему с большой позицией, и пол с потолком защищают от этого лишь частично.
- Потолок не защищает от гэпа. При номинале в 100% капитала падение на 10% всё равно стоит 10% счёта, как в примере автора.
- Задержка безопасна только для медленных правил. Цифра про две недели относится к системе автора, быстрый прогноз может потерять на лаге в день заметно больше.
- ATR в процентах от цены на склеенном ряду искажается. Пол, посчитанный по склейке, выключит или включит не те инструменты.