Идея коротко
Обычное пересечение средних отвечает «да» или «нет»: быстрая выше медленной, значит лонг на полный объём. Rob Carver, бывший руководитель направления в Man AHL, использует ту же разницу двух средних как меру силы тренда. Чем дальше быстрая EMA ушла от медленной относительно обычной волатильности рынка, тем больше позиция. Число переводится в прогноз: 0 означает отсутствие позиции, ±10 среднюю позицию, ±20 максимум.
Одной паре скоростей Carver не доверяет. Он торгует шесть вариаций пересечения, от быстрых трендов до медленных, и берёт взвешенное среднее их прогнозов. Позиция пересчитывается раз в день. Стоп-лосса нет: когда тренд слабеет, средние сближаются, прогноз уходит к нулю, и позиция закрывается постепенно.
Почему это может работать
Трендследование на фьючерсах Carver считает премией за риск, которую может получить любой, а не секретной неэффективностью. Своё преимущество он видит в двух вещах. Первая это диверсификация: в его книге простая трендовая система на 100 рынках вместо одного даёт в 4–5 раз лучший результат при том же сигнале. Вторая это непрерывная позиция, которая, по его словам, даёт более гладкий профиль риска.
Несколько скоростей нужны, потому что тренды бывают разной длины, а заранее угадать лучшую пару нельзя. Усреднение отказывается от этого выбора. Автор отмечает важное следствие: перестановки не требуют дополнительного капитала. Сколько бы вариаций ни было, на выходе одно число и одна позиция на инструмент. Капитал нужен под число инструментов.
Прогноз, выраженный числом, служит ещё и стопом. Если цена разворачивается против позиции, быстрая средняя приближается к медленной, и позиция уменьшается раньше, чем тренд окончательно сломается. Выход растягивается на несколько дней, как и вход.
Проверить, что медленный тренд перестал работать, по мнению автора, почти невозможно. Его оценка периода полураспада такого эджа это одно-два десятилетия, и деградация тонет в статистическом шуме.
Правила
Прогноз по одной паре
// дневные бары, расчёт раз в день после закрытия
Fast = 16 // Finetiq: длины автор не назвал
Slow = 4 * Fast // Finetiq: соотношение 1:4, стартовое
Raw = EMA(Close, Fast) - EMA(Close, Slow) // автор: моментум это пересечения экспоненциальных средних
// Finetiq: нормировка, чтобы число было сравнимо между рынками и годами
Sigma = StdDev(Close - Close[1], 25) // волатильность дневных изменений в пунктах цены
F0 = Raw / Sigma
// автор: прогнозы приводятся к среднему абсолютному значению 10 и режутся на ±20
Scalar = 10 / Average(|F0|) // Finetiq: среднее только по прошлым барам (растущее окно)
F = max(-20, min(+20, F0 * Scalar))
Шесть скоростей в один прогноз
// автор: шесть вариаций пересечения от быстрых трендов к медленным, взвешенное среднее
Pairs = (2,8) (4,16) (8,32) (16,64) (32,128) (64,256) // Finetiq: стартовый набор
F_i = прогноз по паре i, у каждой пары свой Scalar
Combined = (F_1 + F_2 + F_3 + F_4 + F_5 + F_6) / 6 // Finetiq: равные веса
// усреднение похожих прогнозов опускает средний |Combined| ниже 10
Combined = Combined * K // Finetiq: K возвращает средний |Combined| к 10 по прошлой истории
Combined = max(-20, min(+20, Combined)) // автор: кап ±20
Позиция
// автор: +10 средняя позиция, +20 двойная, позиция пропорциональна прогнозу
AvgPos = Equity * 0.5% / (ATR(25) * PointValue) // Finetiq
Target = round(Combined / 10 * AvgPos)
IF |Target - Position| >= max(1, 0.1 * AvgPos) // Finetiq: зона без сделок
торговать разницу AT NEXT BAR OPEN
// стоп-лосса нет (автор). Позиции нет, когда Target округлился до нуля
Вариант B. Дискретно по тому же прогнозу
Автор говорит, что прогноз можно торговать и бинарно: по знаку или только после порога 5–10.
IF Position <= 0 AND Combined >= +10 BUY AvgPos AT NEXT BAR OPEN // автор: порог 5 или 10
IF Position >= 0 AND Combined <= -10 SELL SHORT AvgPos AT NEXT BAR OPEN
// Finetiq: из шорта BUY это переворот: шорт закрывается, открывается лонг на AvgPos.
// SELL SHORT из лонга так же. Где встречный ордер только закрывает позицию, удваивайте объём ордера
IF Position > 0 AND Combined <= 0 EXIT AT NEXT BAR OPEN // Finetiq
IF Position < 0 AND Combined >= 0 EXIT AT NEXT BAR OPEN // Finetiq
// порог 0 и одна пара дают обычное пересечение средних с переворотом
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Таймфрейм | дневные бары, пересчёт раз в день | автор |
| Тип средних | экспоненциальные | автор |
| Число пар скоростей | 6, от быстрых к медленным | автор |
| Длины пар | 2/8, 4/16, 8/32, 16/64, 32/128, 64/256 | Finetiq |
| Нормировка | стандартное отклонение дневных изменений за 25 дней | Finetiq |
| Средний абсолютный прогноз | 10 | автор |
| Кап прогноза | ±20 | автор |
| Веса пар | равные | Finetiq |
| Стоп-лосс | нет | автор |
| Средняя позиция | 0.5% капитала на ATR(25) | Finetiq |
| Зона без сделок | 10% средней позиции, минимум 1 контракт | Finetiq |
| B: порог входа | знак, +5 или +10 | автор |
| B: выход | прогноз вернулся к нулю | Finetiq |
Что проверить
- Непрерывно против бинарно. Одна пара 16/64: непрерывная позиция против полного объёма по знаку разницы. Смотрите доходность на единицу риска, худший месяц и оборот.
- Одна пара против шести. Сглаживает ли усреднение кривую или только размывает сигнал. Сравните каждую пару отдельно и средний прогноз на одних и тех же рынках.
- Окрестность. Соотношение быстрой и медленной средней 1:2, 1:4, 1:8; все длины ×0.5 и ×2; окно нормировки 25 против 60 дней. Результат не должен резко меняться от соседних значений.
- Заглядывание в Scalar. Scalar по всей истории против растущего окна. Первый вариант знает будущее распределение прогноза и завышает тест.
- Издержки по скоростям. Быстрые пары (2/8, 4/16) меняют позицию часто. На каждом рынке посчитайте результат пары после комиссии и спреда и исключите пары, которые не окупают издержки.
- Задержка исполнения. Сигнал на закрытии и исполнение на открытии следующего дня против исполнения днём позже. Автор говорит, что его дневной системе задержка на день не страшна. Проверьте это на своих рынках.
- Свой размер счёта. Тест с округлением до целых контрактов при вашем капитале. Автор сам говорит, что у небольшого счёта мелкие изменения прогноза вообще не меняют позицию.
Особенности платформ
TradingView (Pine Script)
- Шесть пар используют восемь разных длин, от 2 до 256, поэтому достаточно восьми вызовов
ta.ema: у соседних пар длины общие. Разогрев: самая медленная EMA 256 требует 3–4 длины истории, то есть около четырёх лет дневок до первой сделки. История ограничена тарифом. - Растущее среднее |F0| для Scalar накапливайте в
var-переменных (сумма и число баров) после разогрева. Функции с фиксированным окном по всей истории здесь не подходят. - Добор через
strategy.entryограниченpyramiding, по умолчанию дополнительных входов нет. Отправляйтеstrategy.orderна разницу целевой позиции иstrategy.position_size, объём округляйте сами. - Стандартное отклонение считайте от
close - close[1], а не от цены.
MultiCharts и TradeStation (EasyLanguage)
- EMA:
XAverage(Close, 16). Для пары 64/256 грузите историю на несколько лет раньше начала теста, иначе первые сделки пойдут на неустоявшихся средних. - Нормировка:
StdDev(Close - Close[1], 25). Это генеральное отклонение, как и в других платформах. - Добор разрешается в свойствах стратегии, частичное сокращение
Sell N contracts total next bar at market.Sell Shortпри открытом лонге переворачивает всю позицию сразу. - На склеенном непрерывном фьючерсе нормировку делайте в пунктах, как в правилах. Деление на цену на рядах, ушедших к нулю или в минус, ломается.
MetaTrader 5 (MQL5)
iMA(..., MODE_EMA, ...)требует отдельный хэндл на каждую длину, восемь хэндлов на символ. Сверьте первые значения с расчётом по формуле: старт у EMA на разных платформах разный.iStdDevсчитает отклонение цены от скользящей средней, а не разброс дневных изменений. Для нормировки из правил считайте стандартное отклонение изменений сами.- Неттинг и хеджинг ведут себя по-разному при частичном сокращении и перевороте. Объём округляйте до
SYMBOL_VOLUME_STEP, на минимальном лоте непрерывная позиция превращается в бинарную. - Дневные бары брокера с воскресными свечами меняют и EMA, и волатильность. Перед тестом сравните дневной ряд с TradingView.
Где идея может сломаться
- В интервью автор дал каркас: пересечения EMA, шесть скоростей, шкала ±10 и ±20, отсутствие стопа. Длины, нормировку, веса и размер позиции задали мы. Полные формулы автор публикует в книгах и открытом коде, с интервью мы их не сверяли.
- Результат автора получен на 200+ фьючерсах вместе с десятком других правил. Одно пересечение на одном рынке даёт гораздо более шумную картину, и автор прямо связывает основной выигрыш с диверсификацией.
- Медленный тренд может годами не зарабатывать, и по статистике это не отличить от поломки. Готовьтесь к длинным плоским периодам.
- Малый счёт: округление и зона без сделок съедают непрерывность, быстрые пары съедают издержки.
- Нормировка по волатильности увеличивает прогноз после спокойных периодов, как раз перед всплесками.
- Прогноз пересчитывается по закрытию. Внутри дня позиция ничем не защищена, и гэп против большой позиции переносится целиком.