Идея коротко
Marc Malek (Conquest Capital Partners) в начале 2000-х строил дешёвую замену трендследящим CTA для фонда Колумбийского университета. Для правила входа он выбрал самый простой пробой. Позиция открыта всегда. Лонг держится, пока цена не обновит минимум последних N дней. В этот момент позиция переворачивается в шорт, и шорт живёт до нового N-дневного максимума. Флэта нет.
Параметр один: N. Malek прогнал все значения от 1 до 200 на портфеле примерно из 55 фьючерсных рынков. Лучшее соотношение доходности и риска получилось около 70 дней. По его же правилу удержание в среднем 1.5 × N, то есть около 105 дней. На одном рынке это два-три переворота в год.
Почему это может работать
Malek объясняет доходность трендследящих фондов двумя вещами: какими рынками они торгуют и на каком горизонте ловят тренд. Конкретная техника (скользящие средние или пробои) вторична. Пробой он выбрал за математическую простоту. Если это верно, 70-дневный пробой на широком наборе рынков повторяет бету всей индустрии CTA. Косвенный довод автора: индексы CTA и отдельные фонды сильнее всего коррелируют именно с этой длиной. Раз профессионалы продают эту бету, они хотя бы выбрали лучшую по риску версию.
Второй тезис касается кризисов. Malek написал статью о том, что долгосрочный тренд не ставка на рост волатильности, в лучшем случае это long gamma: заработок появляется, когда тренд уже идёт. Тренды бывают и в спокойном рынке, и в панике, поэтому CTA почти безразличны к режиму. Очень короткие пробои ведут себя иначе. Их доходность похожа на длинную позицию по волатильности: в среднем они хуже по риску, зато сильнее помогают в резких обвалах.
Цифр результата в видео нет: ни доходности, ни Sharpe, ни периода теста. Ранжирование длин и корреляции пересказаны устно. Мы их не проверяли.
Правила
Основная система (автор)
// дневные бары, каждый рынок считается отдельно
N = 70
Upper = максимум High за N последних закрытых баров
Lower = минимум Low за N последних закрытых баров
// Finetiq: уровни пересчитываются на закрытии бара и действуют на следующий бар
IF position = LONG
SELL SHORT STOP at Lower // новый N-дневный минимум: переворот в шорт
IF position = SHORT
BUY STOP at Upper // новый N-дневный максимум: переворот в лонг
// старт, пока позиции ещё нет
IF position = FLAT
BUY STOP at Upper
SELL SHORT STOP at Lower // Finetiq: какой уровень пробит первым, туда и входим
// отдельного стоп-лосса и цели нет:
// противоположный уровень одновременно стоп и точка переворота (автор)
Момент переворота: две трактовки
// Трактовка 1: стоп-ордер, переворот в момент касания уровня внутри бара
SELL SHORT STOP at Lower
// Трактовка 2: по закрытию
LowerPrev = минимум Low за N баров до текущего
IF position = LONG AND Close < LowerPrev
SELL SHORT AT NEXT BAR OPEN
// Finetiq: автор говорит «сделал N-дневный минимум» без уточнения. Проверьте обе
Размер позиции (Finetiq)
// автор метод сайзинга в выпуске не назвал. Стартовый вариант для проверки
ATR20 = ATR(20) // Уайлдер
Units = Equity * 0.2% / (ATR20 * PointValue) // Finetiq: 1 ATR движения = 0.2% капитала
// 0.2% рассчитано на портфель из 20–50 рынков. На одном рынке можно брать 0.5–1%
// размер пересчитывается только в момент переворота
Вариант: ансамбль длин (автор, выбор длин Finetiq)
// автор взял 20 длин из 200, какие именно, не раскрыл
Lengths = 20 значений N равномерно в логарифмической шкале от 5 до 200 // Finetiq
FOR EACH N IN Lengths
отдельная система по правилам выше с размером Units / 20
// итоговая позиция на рынке = сумма 20 позиций:
// от полного шорта до полного лонга, с промежуточными значениями
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| N (длина канала) | 70 дней | автор |
| Диапазон перебора | 1–200 | автор |
| Позиция | всегда лонг или шорт | автор |
| Выход | только переворот на противоположном пробое | автор |
| Рынки | около 55 фьючерсов: товары, валюты, облигации, индексы | автор |
| Момент переворота | касание уровня или закрытие за ним | Finetiq, две трактовки |
| Размер позиции | 0.2% капитала на 1 ATR(20) | Finetiq |
| Число длин в ансамбле | 20 | автор |
| Какие длины в ансамбле | от 5 до 200, логарифмическая шкала | Finetiq |
Что проверить
- Кривая по N. Прогоните N = 10, 20, 40, 70, 100, 150, 200 на одном наборе рынков и постройте доходность к просадке по N. Автор говорит о пике около 70. Важнее форма: широкое плато от 50 до 100 говорит об устойчивости, одиночный пик о случайности.
- Правило 1.5 × N. Посчитайте среднюю длительность сделки для каждого N. Если на ваших данных она сильно отличается от 1.5 × N, рынки или период ведут себя не так, как в исследовании автора.
- Один рынок против портфеля. Сравните медиану результата по отдельным рынкам с портфелем из 20–50 рынков с равным риском. Заявления автора относятся к портфелю. На одном рынке у 70-дневного пробоя будут годы без тренда.
- Касание против закрытия. Трактовка 1 против трактовки 2 на тех же данных. Разница покажет, сколько стоят гэпы, проскальзывание и ложные касания уровня.
- Кризисные месяцы. Сравните N = 5–10 и N = 70 в периоды резких обвалов: осень 2008, март 2020. Автор утверждает, что короткие пробои в такие периоды ведут себя как long volatility.
- Корреляция с индексом CTA. Если у вас есть месячные доходности индекса CTA (в выпуске упоминается индекс SocGen CTA), посчитайте корреляцию с портфелем для разных N. Так проверяется главный тезис о репликации.
- Издержки и перекладка. Для N меньше 20 учтите комиссию и проскальзывание на каждом перевороте. Для N = 70 учтите перекладку фьючерсов или своп по CFD: позиция живёт месяцами.
Особенности платформ
TradingView (Pine Script)
ta.highest(high, 70), посчитанный на закрытии бара, уже включает этот бар. Для стоп-ордера на следующий бар это правильный уровень. Сдвиг[1]нужен в трактовке 2, где закрытие сравнивается с каналом до текущего бара:close < ta.lowest(low, 70)[1].strategy.entryв противоположную сторону сам закрывает текущую позицию и открывает новую. Переворот делается одной командой.- Стратегия торгует только символ графика. Портфель из десятков рынков с равным риском в Pine не собрать, а заявления автора относятся именно к портфелю. Рынки проверяются по одному, свод результатов делается вне TradingView.
- Для N = 200 и сделок длиной в сотни дней нужна длинная история, она ограничена тарифом. На непрерывных фьючерсах проверьте корректировку склеек: без неё скачок цены при смене контракта даёт ложный пробой.
MultiCharts и TradeStation (EasyLanguage)
Buy next bar at Highest(High, 70) stopживёт один бар. Отправляйте ордер на каждом баре, пока позиция не сменится.Buyпри открытом шорте сам переворачивает позицию.- Kevin Davey (The Algorithmic Advantage #036): у фьючерсов в TradeStation закрытие дневного бара это биржевой settlement, а у 1440-минутного бара последняя сделка. Пробой может сработать на одном виде бара и не сработать на другом. Тестируйте и торгуйте на одном виде.
- Портфельный тест: Portfolio Trader в MultiCharts или Portfolio Maestro в TradeStation.
AvgTrueRangeэто простое среднее TrueRange. Для сайзинга по ATR Уайлдера считайте его сами:ATRw = ATRw[1] + (TrueRange - ATRw[1]) / 20.
MetaTrader 5 (MQL5)
- Дневной бар строится по времени сервера брокера. Короткие воскресные бары считаются полноценными барами, и 70 баров перестают быть 70 торговыми днями. Сравните дневной график брокера с биржевым.
- На неттинговом счёте переворот это сделка двойным объёмом. На хеджинговом старую позицию нужно закрыть явно, иначе на счёте окажутся лонг и шорт одновременно.
- Позиция на 70-дневном пробое живёт месяцами. У CFD каждую ночь начисляется своп. Проверьте, что тестер учитывает своп из спецификации символа, иначе результат завышен.
- Уровни берите с закрытых баров:
iHighest(_Symbol, PERIOD_D1, MODE_HIGH, 70, 1)иiHighпо найденному индексу. Сигнал пересчитывайте один раз при появлении нового дневного бара.
Где идея может сломаться
- В видео нет ни одной цифры результата. Есть устное ранжирование длин и корреляций, без периода, доходности и просадки.
- Длина 70 выбрана перебором 200 вариантов на той же истории, по которой её оценивали. Исследование сделано под продукт 2004 года, с тех пор горизонты индустрии CTA могли сместиться.
- Идея портфельная. На одном рынке система всегда в позиции и в боковике переворачивается туда и обратно, отдавая ширину канала на каждом ложном пробое.
- Шорт включён всегда. На фондовых индексах с долгим ростом шортовая половина может систематически терять.
- Размер позиции автор не назвал. От сайзинга итог портфеля зависит не меньше, чем от точного N.