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