У меня была давняя идея составить Momentum портфель (ETF) на Российском рынке. Первоначально я хотел просто составить список самых быстро растущих акций посмотреть насколько получится (если получится) обогнать индекс ММВБ. По мере составления я задумался над более общей задачей, как формировать любой ETF.
Эта статья разделена на несколько блоков:
- общие вопросы составления ETF
- результаты momentum портфеля (ETF) на индекс ММВБ
- как избежать подгонки результатов под данные (data-mining и overfitting)
1. Как составить портфель
Я решил ориентироваться на методику одного из крупнейших momentum etf — iShares Edge MSCI U.S.A. Momentum Factor ETF (активы — 10 млрд).
A risk adjusted price momentum, defined as the excess return over the risk-free rate divided by the annualized standard deviation of weekly returns over the past 3-years, is calculated for each security in the parent index over 6- and 12-month time periods. The 6- and 12- month risk-adjusted price momentum calculations are then standardized at ±3 standard deviations and the standardized z-scores are translated into an average momentum score. (Методика iShares)
Однако в составление ETF вопросов гораздо больше, чем описано в любой методике.
- Начинается все с определения вселенной акций, которую будем фильтровать: какой размер капитализации, какая страна или какой регион, какие ограничения по кредитному рейтингу, какая ликвидность и free-float? (здесь все понятно — ММВБ)
- Далее, как определить фактор, в моем случае, — momentum: через абсолютный прирост или прирост скорректированный на риск (читай Sharpe ratio)? (Sharpe ratio)
- Далее, одно из самых интересных — отбор акций и определение весов в ETF. Сколько акций брать в индекс? Топ 10%, топ 50 акций, все выше определенного порога? (у меня ровно 15)
- Хорошо, справились с предыдущим вопросов и выбрали необходимое число акций. Как их взвешивать? Равномерно, или с учетом капитализации, или с учетом капитализации и momentum score? Делать ли ограничение на вес одной акции в портфеле? (об этом ниже)
- Теперь у нас есть портфель, но остается вопрос как часто его ребалансировать и на основе каких правил? Полностью или поддерживая определенный уровень turnover? обновлять веса каждый день, раз в неделю, раз в квартал? (раз в квартал)
- Наконец мы придумали его, и что-то нам не нравится в его поведении, например, большая просадка или высокая бета. И возникает вопрос а можно ли веса в портфеле еще оптимизировать, чтобы сгладить эти факторы? К Sharpe ratio можно дополнительно начать считать Sortino, Calmar или Information ratios и на основе какой-нибудь эвристики учитывать в весах. (не пробовал, но хочу сделать)
На пересечение всех этих параметров и условий можно построить огромное количество ETF. Это одна из причин такого многообразия ETF на рынке.
2. Как я делал Momentum портфель (ETF) для ММВБ
Начальные условия:
- Брал ровно 15 акций. с учетом того что индекс ММВБ в среднем включает 46-50 акций, 15 это примерно 1/3.
- Данные с начала 16 года, начало портфеля 15.12.2016.
- Ребалансировал каждый 60 торговых дней (примерно каждый квартал)
- Считал на полной доходности, комиссии не учитывал, налоги тоже.
- Бенчмарк — индекс полной доходности ММВБ (MCFTR)
- Учитывал капитализацию и momentum score в весах.
- Momentum score — это просто Sharpe Ratio посчитанный на аннуализированной квартальной доходности и средней ставки цб деленной на годовую стандартное отклонение (из дневных отклонений).
Я считал веса следующим образом:
- Брал все momentum score, переводил их в z-score и потом z-score переводил в интегральную оценку нормального распределения (normal cdf). Последнее дало мне возможность просто все числа уместить в отрезке от 0 до 1 (На этом месте можно придумать все что угодно).
- Числа из пункта 1) умножал на % капитализации акции в индексе и нормировал с ограничением в 15% для каждой акции.
Получилось, на первый взгляд, очень неплохо.
За 3 года мой портфель вырос на 116%, ММВБ — на 70%, волатильность портфелей оказалась почти идентичной 14%. Я сравнил также свой портфель с портфелем, где ни капитализация, ни уровень momentum score не играют значения (желтая линия) — результат хуже.
Максимальная просадка у моего портфеля даже ниже чем у индекса ММВБ — 15% против 20% у индекса. Также, и это самый большой сюрприз, у моего портфеля бета оказалось ниже чем у индекса — 0,84.
Фактически портфель показывает огромную alpha, так как при низкой корреляции с рынком, имеем в разы более высокую доходность.
Momentum не всегда обгонял индекс: из 36 полных месяцев, только в 23. При этом видно что были продолжительные периоды отставания: с марта 19 по конец июля 19.
Вот так акции отбирались в портфель:
Turnover rate в среднем составил 63%, то есть каждый квартал обновляли более половину активов. Также если взглянуть более внимательно на веса, можно обнаружить определенные проблемы связанные с капитализацией: Газпром, Роснефть, Лукойл всегда, когда попадают в индекс, имеют максимальный вес — 15%. Это к вопросу про балансировку momentum score и капитализации: она необходима, и данный вариант далеко не самый лучший.В целом, меня порадовали результаты моделирования, правда, все то, что я посчитал возможно не имеет статистической значимости, и об этом ниже.
3. А не фигню ли я посчитал?
Я не знаю. Не хватило сил и времени на проверку. Для ответа необходимо проделать ряд статистических упражнений, чтобы удостовериться в устойчивости результатов (robustness):
- Поиграться с параметрами и условиями: брать другие периоды ребалансировки, другие стартовые точки, менять количество акций в индексе, учитывать рыночные комиссии и налогообложение на дивиденды.
- Временной ряд котировок на длинном горизонте — реализация стохастичекого процесса с заданным трендом и волатильностью (процесс Орнштейна-Уленбека). Поэтому для настоящей проверки необходимо сгенерировать множество (хотя бы 100к) сценариев и посмотреть как отработает алгоритм на них.
- Интересный для меня вопрос, какие факторы больше влияют на доходность? Для выяснения этого после пункта 1 и 2 можно собрать все результаты вместе с исходными параметрами и прогнать их через какой-нибудь Random Forest.
В общем, если кому-то интересно, пишите, будем считать вместе.
Посмотреть графики в оригинале
ТЕЛЕГРАМ: @seeking_for_alpha
Сама простая проверка — прогнать это же на другом периоде, где-нибудь с 2010, например.
Сам делал нечто похожее (но, впрочем, менее научно и тщательно). Альфа есть. Еще интересно по периодам. Колебался между ребалансом 1, 2 и 4 раза в год. Примерно одинаково выходило. Но что интересно, почему-то лучше всего портфель — перетрясался весной и осенью. Летний и зимний пересмотр ничего не давали, можно было не трогать фишки. Но возможно, просто случайность, уж слишком странное явление.
Также неплохо было бы для сравнения протестировать параллельную стратегию покупки N «худших» по отношению к индексу, с критериями, максимально похожими на стратегию покупки «лучших».
да, я видел эту статью, спасибо, подход у вас достойный.
Я немного не это имел ввиду.
Меня не очень интересует тема портфельного инвестирования, но читая англоязычную литературу, посвященную алгоритмической торговле, периодически натыкаюсь на протестированную на большой американской истории и большом количестве бумаг идею о том, что акции надо покупать в контртренд, т.е. те, которые отстают от индекса (такой вариант стоимостного инвестирования). А комоды напротив, надо покупать и продавать те, которые опережают условный индекс, т.е. по тренду.
Mean-reversion это не ожидание разворота, это покупка недооцененных.
Про продажу бумаг речи не идет. Возможно у нас это слабо работает из-за низкой ликвидности и малого количества доступных инвестору инструментов.
Но это вам анализировать, я так больше для кругозора пытаюсь понять, почему у нас все наоборот работает.
Но есть один момент — с 2017 рынок РФ растет.
Если бы он падал или флэтил, то были бы шансы обогнать его в падении, тем более что стопов я в системе не увидел.