Идея коротко
Andreas Clenow искал меру моментума для отбора акций, в которой есть и сила движения, и оценка её надёжности. Простое изменение цены за период, даже делённое на ATR, он считает наследием эпохи расчётов на бумаге.
Его индикатор строится в два шага. Сначала через цены за окно проводится экспоненциальная регрессия, то есть прямая через логарифм цены. Её наклон показывает рост в процентах за день, а не в долларах, и одинаково читается на дешёвой и дорогой бумаге. Затем наклон умножается на R², коэффициент детерминации. R² лежит от 0 до 1 и показывает, насколько ровно цены легли вдоль прямой. Бумага, которая месяц стояла, а потом удвоилась, получает крутой наклон и низкий R², и её оценка падает. В интервью наклон назван в процентах за день. В книге автора «Stocks on the Move» наклон переводится в годовой процент, и на R² умножается уже он.
Индикатор и ранжирование стоит разделять. Индикатор это одна формула на одном ряде, она переносится на любую платформу. Ранжирование это портфельная система: сотни акций, топ-25 или больше, периодическая замена и размер позиции по риску. Её параметры в интервью не названы, здесь они наши.
Отличие от карточки «Двойной моментум»: там сравниваются доходности нескольких индексов за период, здесь оценивается качество тренда отдельной акции внутри большой вселенной.
Почему это может работать
Clenow различает трендследование и моментум. Трендовая модель фьючерсов держится на рынках, которые двигаются независимо (сырьё, валюты, облигации), и на дешёвом плече. В акциях нет ни того, ни другого: в бычьем рынке растут почти все бумаги, в медвежьем почти все падают, плечо дорогое и опасное. По его словам, стандартная трендовая модель фьючерсов на акциях проваливается. Акциям нужен отбор: из множества похожих бумаг выбрать те, где движение сильнее и устойчивее.
Умножение на R² отдаёт предпочтение ровному росту перед рывком. Мы трактуем это так: рывок часто вызван одним событием (отчёт, слух о покупке компании) и не обязательно продолжится, а ровный рост ближе к тому, что Clenow называет качеством тренда. Это наша интерпретация, в интервью её нет.
Сам автор говорит, что долгосрочный моментум давно подтверждён и на практике, и в академических работах, но магии в нём нет. В своём сервисе он использует его лишь для небольшой поправки весов.
Правила
Индикатор (автор)
// регрессия логарифма цены по номеру бара за последние L баров
y[i] = ln(Close[i]), x[i] = 0, 1, ..., L-1 // x растёт от старого бара к текущему
b = наклон МНК-прямой y = a + b * x
R2 = (корреляция x и y)^2 // от 0 до 1 (автор)
SlopePct = exp(b) - 1 // рост в процентах за бар (автор: наклон в процентах)
Score = SlopePct * R2 // автор: наклон, умноженный на R²
L = 90 // Finetiq: длину окна автор в интервью не назвал
Годовой масштаб (книга автора)
// книга автора «Stocks on the Move»: годовой наклон, умноженный на R².
// В интервью годовой масштаб не прозвучал
AnnualSlope = exp(b * 252) - 1 // Finetiq: 252 торговых дня в году
ScoreAnn = AnnualSlope * R2 // книга автора
// порядок бумаг по Score и по ScoreAnn может различаться: у крутого наклона
// годовой масштаб растёт быстрее, и R² сдерживает его слабее
Ранжирование акций (логика автора, параметры Finetiq)
// вселенная: акции индекса с историческим составом
// автор: крупные или малые компании это вопрос цели, лучшей вселенной нет
// решение раз в неделю на закрытии, исполнение на открытии следующего бара // Finetiq
Candidates = [x in Universe : Score(x) > 0] // Finetiq: только растущие; автор: только лонг
N = 25 // автор: для обычного использования 25-30
Top = N бумаг с максимальным Score
SELL держимые бумаги, которые опустились ниже места 2 * N // Finetiq: буфер против лишних сделок
BUY бумаги из Top на свободные места
// размер по риску (автор), мера риска Finetiq
ATRpct(x) = ATR(x, 20) / Close(x)
Weight(x) = (1 / ATRpct(x)) / Σ(1 / ATRpct по бумагам портфеля)
// ребалансировка доли, только когда она ушла дальше ±20% от цели
// автор: зона без сделок; Finetiq: ширина зоны
// фильтр рынка (автор: модель из книги постепенно выходит из рынка)
IF Close(Index) < SMA(Close(Index), 200) // Finetiq: форма фильтра
новых покупок нет, освободившиеся места остаются в кэше
Индикатор на одном-двух символах (Finetiq)
// фильтр качества тренда на одном рынке, решение на закрытии дня
IF Score > 0 AND R2 >= 0.5 AND нет позиции // Finetiq: стартовый порог R²
BUY AT NEXT BAR OPEN
IF Score <= 0 AND есть позиция
SELL AT NEXT BAR OPEN
// два символа: держим тот, у кого Score выше, если его Score > 0, иначе кэш
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Регрессия | экспоненциальная (по логарифму цены) | автор |
| Наклон | в процентах за день | автор |
| Поправка на качество | умножение на R² | автор |
| Окно регрессии | 90 баров | Finetiq |
| Годовой масштаб | exp(b × 252) − 1 | автор (книга Stocks on the Move), 252 дня Finetiq |
| Направление | только лонг | автор |
| Число позиций | 25 | автор (25-30) |
| Частота ранжирования | раз в неделю | Finetiq |
| Буфер на выход | ниже места 2 × N | Finetiq |
| Размер позиции | по риску | автор |
| Мера риска | ATR(20) в процентах цены | Finetiq |
| Зона без сделок | ±20% от целевой доли | Finetiq (автор: зона есть) |
| Фильтр рынка | индекс выше SMA 200 | Finetiq (автор: фильтр тренда в книге) |
| Порог R² для одного символа | 0.5 | Finetiq |
Что проверить
- Даёт ли что-то R². Три рейтинга на одной вселенной: ROC за 90 дней, ROC, делённый на ATR (простой вариант, который упоминает автор), и Score. Если Score не лучше второго, красота формулы результата не даёт.
- Окно. 60, 90, 125 и 250 баров. Смотрите на всю кривую результатов, а не на лучшую точку.
- Score против ScoreAnn. Сравните состав топ-25 каждую неделю и итоговый результат. В книге автора используется годовой вариант. Если разница большая, зафиксируйте в своей системе, какой вариант используется.
- Нужен ли фильтр рывков. Исключите бумаги с дневным движением больше 15% внутри окна. Если результат не меняется, R² уже справляется с рывками сам.
- Число позиций. 10, 25 и 50 бумаг: доходность, волатильность, просадка. Это прямая проверка слов автора о диверсификации.
- Фильтр рынка против постоянного присутствия. Clenow строил оба типа моделей. Сравните их на 2008, 2020 и 2022 годах.
- Частота и издержки. Раз в неделю против раз в месяц, зона без сделок 10%, 20% и 40%. Считайте оборот и результат после комиссий.
Особенности платформ
TradingView (Pine Script)
- Индикатор пишется в несколько строк. Наклон:
ta.linreg(math.log(close), 90, 0) - ta.linreg(math.log(close), 90, 1), это разница двух соседних точек одной прямой. R²:math.pow(ta.correlation(math.log(close), bar_index, 90), 2). - Ранжирование сотен акций как стратегию не протестировать: стратегия торгует только символ графика, число запросов
request.securityограничено. Проверяется версия на одном символе. - Первые 90 баров значения нет, фильтру SMA 200 нужна ещё более длинная история.
- У дивидендных акций цена падает в дату отсечки. Без корректировки (
adjustment.dividendsвticker.modify) логарифмическая регрессия видит это как падение, и R² снижается.
MultiCharts и TradeStation (EasyLanguage)
- Наклон по логарифму:
LinearRegSlope(Log(Close), 90). R² надёжнее посчитать самим в цикле по суммам x, y, xy, x² и y², чтобы не зависеть от встроенных функций разных версий. - Ранжирование делают в портфельном модуле: TradeStation Portfolio Maestro или MultiCharts Portfolio Trader. Список символов задаётся заранее, и текущий состав индекса даёт ошибку выжившего.
- Размер по риску и ребалансировка долей требуют капитала всего портфеля. Копия стратегии на отдельном символе его сама не знает.
- Для двух символов хватает обычного графика: стратегия на Data1 считает Score и по второму ряду (Data2).
MetaTrader 5 (MQL5)
- Встроенной регрессии нет. Считайте наклон и R² по массиву из
CopyCloseна закрытых барах, начиная с индекса 1. - Вселенной акций для ранжирования у типичного брокера нет: CFD на несколько сотен бумаг, короткая история, без исключённых из индекса компаний.
- У CFD на акции дивиденды приходят корректировкой баланса, а цена на графике падает в дату отсечки. Регрессия по такому ряду занижает Score дивидендных бумаг.
- Версия на одном-двух символах (индексные CFD, фьючерсы) переносится без проблем.
Где идея может сломаться
- В интервью описан только принцип. Окно регрессии, фильтры, частота и число бумаг модели из книги не прозвучали, наши значения стартовые. Если хотите проверить именно версию автора, сверяйте их с его книгой.
- Clenow сам называет модели своих книг учебными: их задача объяснить механизм, а не дать готовую систему для торговли.
- Автор предупреждает о двух ошибках данных, которые завышают результат: нынешний состав индекса вместо исторического и цены без учёта дивидендов.
- R² вознаграждает ровный рост. Портфель смещается к спокойным бумагам, а размер по риску добавляет таким бумагам ещё больше веса. Проверьте, не повторяет ли итог обычную ставку на низкую волатильность.
- После медвежьего рынка разворот часто резкий. Лидеры за последние 90 дней в этот момент это бумаги, которые меньше падали, а бумаги отскока попадут в рейтинг с опозданием.
- 25-30 позиций с размером по риску требуют капитала или дробных акций. На маленьком счёте округление долей искажает веса.