Идея коротко
Perry Kaufman торгует акции и фьючерсы одной трендовой моделью. В ней семь индикаторов: пять трендов разной длины и два подтверждения. На акциях он входит только в лонг и только когда все семь указывают вверх.
Бумаги для портфеля он выбирает необычно. Стратегия прогоняется по списку примерно из 500 акций, и для каждой записывается, сколько стратегия на ней заработала за последние месяцы. Все бумаги ранжируются по этой прибыли, а не по росту цены. Затем из рейтинга убираются бумаги, где у стратегии сейчас нет открытой позиции, и из оставшихся в портфель идут 10-20 верхних.
Рейтинг пересчитывается каждый день. Бумага уходит из портфеля, когда опускается на несколько мест ниже границы топа. Kaufman называет это люфтом, в примере четыре места. Стоп-лосса нет, его роль выполняет рейтинг. Бумагу можно продать и в прибыли, если другая работает лучше.
Отличие от карточки «Двойной моментум» и от ротаций по ROC в том, что именно ранжируется. Там рейтинг строится по доходности актива. Здесь по тому, сколько конкретная стратегия смогла из актива извлечь. По словам Kaufman, рейтинг по доходности самих акций у него не сработал.
Почему это может работать
Kaufman опирается на устойчивость движения. Если рынок уже идёт хорошо и все семь индикаторов в лонге, он склонен продолжать какое-то время. Бумаги вроде Nvidia и Apple из его примера делают основную прибыль портфеля.
Ведущий формулирует мысль, с которой Kaufman соглашается: цена сама по себе мало говорит о том, подходит ли бумага. Важно, как стратегия взаимодействует с этой ценой. Прибыль стратегии на бумаге сразу учитывает и силу тренда, и то, насколько он удобен для конкретных правил входа и выхода.
Рейтинг как выход решает известную проблему долгосрочного тренда. Трендовая система на одной бумаге выходит поздно и отдаёт заметную часть прибыли. Здесь бумаге достаточно выпасть из топа, и её место займёт более сильная. По словам автора, удержание сокращается примерно вдвое, а длинные тренды остаются основой отбора.
Всё это объяснения автора. Итоговых цифр доходности метода в интервью нет.
Правила
Базовая стратегия на каждой бумаге
// автор: пять трендов и два подтверждения, в акциях вход, когда все семь в лонге
// индикаторы автор не раскрыл; периоды трендов он выбирает в диапазоне 30-120 дней
// Finetiq: замена для проверки самой идеи ранжирования
T(n) = Close > SMA(Close, n) for n in [30, 45, 60, 90, 120] // Finetiq
Confirm1 = SMA(Close, 30) > SMA(Close, 30)[5] // Finetiq: короткая средняя растёт
Confirm2 = SMA(Close, 60) > SMA(Close, 120) // Finetiq
AllLong = все пять T(n) AND Confirm1 AND Confirm2
// теневая стратегия считается на каждой бумаге всегда,
// независимо от того, есть ли бумага в портфеле
IF AllLong AND нет теневой позиции THEN теневая покупка AT NEXT BAR OPEN
IF Close < SMA(Close, 60) AND есть теневая THEN теневая продажа AT NEXT BAR OPEN // Finetiq: выход не назван
ShadowShares = 10000 / Close на входе // автор: $10 000 на бумагу
ShadowEquity = прибыль закрытых теневых сделок + открытая по текущей цене
W = 63 бара // автор: 3-6 месяцев, в другом месте 30-60 дней; Finetiq: 63
ShadowPnL = ShadowEquity - ShadowEquity[W] // Finetiq: прибыль за окно
Отбор, рейтинг и выход (автор)
Universe = около 500 акций, Close >= 10 // автор: без акций дешевле $10
N = 10 // автор: 10-20
Latitude = 4 // автор: «скажем, четыре» места
// каждый день после закрытия (автор)
Eligible = [x in Universe : у теневой стратегии на x открыта позиция] // автор
Rank(x) = место x в Eligible по ShadowPnL(x), по убыванию // автор: абсолютная прибыль
// автор: ранжирует все бумаги и убирает те, где позиции нет.
// Finetiq: место и люфт считаем уже после исключения, так в топе всегда N бумаг с позицией
FOR each x in Portfolio
IF x NOT in Eligible // Finetiq: базовая стратегия сама вышла
SELL x AT NEXT BAR OPEN
ELSE IF Rank(x) > N + Latitude // автор: выпала из топа с люфтом
SELL x AT NEXT BAR OPEN
WHILE в портфеле меньше N бумаг
BUY лучшую по Rank бумагу из Eligible, которой нет в портфеле, AT NEXT BAR OPEN
// Shares = 10000 / Close (автор)
// стоп-лосса нет (автор)
Перегрев бумаги и всего портфеля (частично автор)
Vol20(x) = StdDev(ln(Close / Close[1]), 20) * sqrt(252) // автор: годовая волатильность за 20 дней
IF Vol20(x) > 50% // автор: порог для типичной акции
ждать признака вершины, затем SELL x AT NEXT BAR OPEN // автор: сразу не продавать
// Finetiq: признак вершины = закрытие ниже минимума последних 5 баров
// автор: когда убытки идут по всему портфелю сразу, он выходит из всего портфеля
// и возвращается после снижения волатильности и стабилизации дневных результатов.
// Правило он назвал секретом. Прозвучало число 0.32 без единиц, формализовать его нельзя
Фьючерсы (автор)
// тот же рейтинг по прибыли стратегии, позиции в обе стороны
// автор: индексы и процентные ставки только в лонг, остальные рынки в обе стороны
Sectors = число разных секторов среди отобранных рынков
IF Sectors = 1 THEN плечо × 0.50 // автор
IF Sectors = 2 THEN плечо × 0.75 // автор: снижение на 25%
IF Sectors >= 3 THEN плечо × 1.00 // автор
Версия для одного-двух символов (Finetiq)
Ранжирование на одном символе не проверить. Можно проверить более слабую форму: брать сигнал стратегии, только когда сама стратегия на этом символе недавно зарабатывала.
IF AllLong AND ShadowPnL > 0 AND нет позиции
BUY AT NEXT BAR OPEN
IF (нет теневой позиции OR ShadowPnL <= 0) AND есть позиция
SELL AT NEXT BAR OPEN
// два символа: реальная позиция открывается там, где ShadowPnL выше
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Базовая модель | пять трендов и два подтверждения, все в лонге | автор |
| Индикаторы модели | пять SMA 30-120 и два подтверждения | Finetiq |
| Выход базовой модели | закрытие ниже SMA 60 | Finetiq |
| Кандидаты | около 500 акций | автор |
| Минимальная цена | $10 | автор |
| Размер | $10 000 на бумагу, делённые на цену | автор |
| Мера рейтинга | абсолютная прибыль стратегии за окно | автор |
| Окно рейтинга | 3-6 месяцев или 30-60 дней | автор (две версии) |
| Окно в барах | 63 | Finetiq |
| Условие отбора | у стратегии открыта позиция | автор |
| Число бумаг | 10-20 | автор |
| Люфт | 4 места | автор (пример) |
| Пересчёт | каждый день | автор |
| Стоп-лосс | нет | автор |
| Порог волатильности | 50% годовых за 20 дней | автор |
| Признак вершины | закрытие ниже минимума 5 баров | Finetiq |
| Фьючерсы: плечо | 1 сектор −50%, 2 сектора −25% | автор |
Что проверить
- Что ранжировать. Одна вселенная и одна базовая стратегия, пять рейтингов: прибыль стратегии, доходность самой акции за то же окно, Sharpe теневых сделок, отношение прибыли к риску (Finetiq: прибыль за окно к максимальной просадке теневой кривой), дни восстановления после просадки. Kaufman утверждает, что работает только первый. Это главная проверка карточки.
- Окно. 30, 60, 90 и 126 дней. Автор назвал два диапазона в одном интервью, проверьте оба.
- Люфт и оборот. Люфт 0, 2, 4 и 8 мест. Смотрите среднее удержание (автор говорит о 16-17 днях), число сделок в год и результат после комиссий и спреда.
- Число бумаг. 10, 20 и 50 против S&P 500 с дивидендами. Автор ожидает, что 50 бумаг дадут результат индекса.
- Рейтинг против стопа. Те же входы, но выход только по сигналу базовой стратегии и стопу 3 ATR. Если рейтинг не лучше, его польза в отборе, а не в выходе.
- Другая базовая стратегия. Замените семь индикаторов пересечением SMA 50 и 200 или пробоем 100 дней. Автор говорит, что ранжирование помогает почти любой стратегии.
- Отбор кандидатов. Прогоните метод на всём индексе с историческим составом и на списке, отобранном по трендовости на всей истории. Разница покажет, сколько результата даёт заглядывание вперёд при составлении списка.
Особенности платформ
TradingView (Pine Script)
- Ранжирование по сотням акций как стратегию не протестировать: торгуется только символ графика, запросы
request.securityограничены. - Проверяется версия на одном символе. Теневые сделки придётся считать вручную в переменных
var:strategy.netprofitи другие поляstrategy.*отражают только исполненные, то есть уже отфильтрованные сделки. - Второй символ читается через
request.security, внутри которого вызывается та же функция теневой прибыли. Торговать этот символ стратегия не сможет. - Размер $10 000 на сделку:
default_qty_type = strategy.cash,default_qty_value = 10000.
MultiCharts и TradeStation (EasyLanguage)
- Ротацию по сотням бумаг делают в портфельном модуле. В MultiCharts Portfolio Trader отбор пишут отдельным портфельным сигналом управления капиталом, который видит значения всех стратегий. В TradeStation Portfolio Maestro заранее проверьте, умеет ли ваша версия ранжировать по значению, которое считает стратегия.
- Главная ловушка:
NetProfit,PositionProfitиOpenPositionProfitсчитают только исполненные сделки. Если портфель не взял бумагу, её прибыль будет нулевой, и бумага никогда не попадёт в рейтинг. Теневую прибыль каждая копия стратегии должна считать сама. - Размер в акциях:
Buy IntPortion(10000 / Close) shares next bar at market. - Ежедневный пересчёт по 500 символам даёт тяжёлый портфельный тест. Фьючерсная версия на 20-40 рынках заметно легче.
MetaTrader 5 (MQL5)
- Вселенной из 500 акций с историей у типичного брокера нет, есть CFD на часть американских бумаг без исключённых из индекса компаний. Для акций идея здесь фактически непроверяема.
- Фьючерсная версия реалистичнее: у многих брокеров есть CFD на индексы, сырьё, облигации и валюты, этого хватит на 20-40 символов мультисимвольного советника.
- Историю сделок терминала для рейтинга использовать нельзя, в ней только реальные сделки. Теневые позиции и прибыль храните в массивах советника по каждому символу.
- Сектора для правила плеча в MT5 не размечены, их придётся задать списком вручную.
Где идея может сломаться
- Семь индикаторов автора не раскрыты. Базовая стратегия здесь наша, и слова Kaufman о результатах к ней не относятся.
- Окно рейтинга названо двумя способами: 3-6 месяцев и 30-60 дней. Крайние окна отличаются больше чем вчетверо (126 дней против 30), и какая версия у автора основная, из интервью не ясно.
- Список кандидатов автор собирал вручную: волатильные бумаги с низким долгом, а новые проверял на трендовость по средним 30-120 дней. Если в тесте отобрать список по всей истории, в него попадёт знание будущего.
- Без стопов портфель уязвим к общему падению сектора. Ведущий указал на такой риск (четыре полупроводниковые бумаги одновременно), Kaufman согласился, что это возможно, хотя у него так не случалось.
- Портфельный выход при общем падении автор не раскрыл. Без него в резком медвежьем рынке защитой служат только выходы базовой стратегии и рейтинг.
- Фраза о ежегодном опережении S&P 500 прозвучала от ведущего, а не от Kaufman, и без цифр.
- Ежедневный пересчёт и люфт в четыре места дают удержание около двух-трёх недель. При позиции $10 000 спред и комиссии заметны, особенно на волатильных бумагах, которые автор предпочитает.