Ідея коротко
Це не сигнал, а блок розміру позиції. Він підходить до будь-якого правила, яке видає число зі знаком: до перетину середніх із 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 у відсотках від ціни на склеєному ряду спотворюється. Нижня межа, порахована за склейкою, вимкне або ввімкне не ті інструменти.