[Из песочницы] 35% доходность акций на альтернативных данных
Торговля на альтернативных (нестандартных) данных становится модным и перспективным. На днях попал в руки любопытный датасет от Московской Биржи по популярным акциям. После поверхностного исследования удалось получить привлекательный результат c хорошими доходностями. Подробности под катом
Содержание датасета
Датасет содержит три значения pv30, pv70, pv100 на каждый день и показывает разницу покупок и продаж группы из топ 30, 70 и 100 крупнейших трейдеров за текущий день. Т.е. отвечает на вопрос, что делали сегодня крупные игроки? Больше покупали или продавали? Например, pv100 = 500 значит, что группа из топ 100 трейдеров в совокупности купила на 500 ед. больше чем продала.
На сайте биржи можно посмотреть полное описание датасета и получить исторические значения
Охват данных:
- 10 акций: SBER, GAZP, LKOH, GMKN, MGNT, ALRS, AFLT, ROSN, SBERP, VTBR
- 4 года: 2014 — 2017 (открытые данные на сайте биржи)
Далее, будем рассматривать данные только по SBER, результаты остальных 9 акций в приложении ниже
Обзор данных
Статистическое описание значений pv для SBER:
Данные в динамике и их распределение:
Все три величины pv30, pv70 и pv100 сильно коррелированы (>0.95) между собой и распределены близко к нормальному с центром около нуля. Наибольший интерквартильный размах у pv30.
Цена SBER и кумулятивная сумму pv100:
Доходность за сегодня сильно коррелирует со значениями pv за сегодня ~0.8. Таким образом, можно предположить, что цену двигают участники, набирающие крупную позицию. Корреляция между движением цены завтра и значением pv за сегодня ~0.1, а это значит, что есть слабая зависимость между ними и можно попытаться предсказывать направление движение цены завтрашнего дня по данным pv за сегодня.
Торговая модель
Построим простую модель, если сегодня значение pv > 0, предполагаем что цена завтра вырастет, а иначе упадет. Значения pv сравниваем с нулем, так как средние и медианные значения pv распределены около нуля. Выражаясь проще, если сегодня крупные игроки покупали (pv > 0) на следующий день мы тоже покупаем и наоборот.
Особенности модели:
- В модели используется только значения pv, и не используются информация о ценах активов
- Открывать позицию будем в 18:40 — 18:50 на аукционе закрытия и закрывать на следующий день, в то же самое время. Время открытия позиции выбрано таким, так как значения pv публикуются в 18:30
- Если pv > 0, открываем длинную позицию (покупаем). Если pv < 0, открываем короткую позицию (продаем)
- Если два и более дня подряд значение pv положительно/отрицательно, ничего не делаем (hold). Таким образом, размер открытой позиции всегда постоянен
- Комиссию за сделку примем равной 0.025%
- Ежедневные доходности будем брать от закрытия к закрытию (close to close)
Результаты торговой модели
Сравним доходности стратегии «купить и держать» (Base) и стратегии по значениям pv30, pv70 и pv100 на отрезке в 4 года по SBER:
RETURN — доходность модели за 4 года
SHARPE — коэффициент Шарпа, безрисковая доходность rf = 6%
CAGR — среднегодовой темп роста
MAX DRAWDOWN — максимальная просадка
TRADES — количество совершенных сделок
GAIN/LOSS DAYS — количество дней, когда угадали и не угадали движение цены
Сравнение моделей в динамике:
Поквартальное сравнение доходностей базовой модели «купить и держать» против индикатора pv
Аналогичные результаты по остальным девяти инструментам можно посмотреть в приложении ниже.
Портфель акций
На примере SBER мы получили высокую доходность относительно самого актива, но тем не менее наблюдаем большую просадку за весь 2015 год. Такая картина наблюдается и по остальным акциям в разные моменты (см. приложение). А что если раскидать деньги по всем десяти акциям? Тогда, вероятно, сможем избежать крупных просадок.
Раскидать можно поровну, а можно и в пропорции соответствующей ликвидности и емкости инструмента. Тыкнув пальцем в небо Исходя из ликвидности и простоты ради выбрал такие веса: {SBER: 0.25; GAZP, LKOH: 0.15; GMKN, MGNT: 0.1, ROSN, ALRS, SBERP, AFLT, VTBR: 0.05} и сравнил доходности стратегий «купить и держать» и pv100:
Портфель из 10 бумаг управляемый значением pv100 показал доходность 35% годовых и меньшую просадку, чем стратегия «купи и держи».
Перебирая веса можно получить и 15% и 50%, но важно то, что раскидывая средства по множеству активов мы избегаем крупных просадок в нашей торговой модели.
Наблюдения, оставленные за рамками данного материала
- Производные значения на основе pv также показывают хорошую доходность (хорошая = выше рынка): sma с короткими периодами, импульсы, нормирование на объем и др. подобные приемы из теханализа
- В периоды пониженной волатильности лучше проявляют себя импульсы значений pv
- Значения pv имеют хорошую чувствительность к редким сильным движениям цены, т.е. процент угадывания движений цены более 3% достигает ~75%, в то время как общий процент угадываний ~50%
- Распределение pv по дням недели различается, особенно сильно пн от пт. Вероятно, в начале недели идет набор позиции, а к концу закрытие
- В торговой модели, рассмотренной выше, значение pv сравнивали с 0, хотя 0 не самая оптимальная точка при максимизации доходности
- Каждый из 10 акций имеет свои особенности по значениям pv
Мои выводы
Гипотеза следования за крупными игроками по значениям pv с лагом в один день показала результат выше рынка на отрезке 2014–2017. Утверждать, что так будет всегда, было бы самонадеянно. Что будет на новых данных? С одной стороны, нет веских оснований, почему все может сломаться, а с другой, кто знает:) Для большей уверенности нужно больше точек и свежие данные.
Модель можно было бы сделать более комплексной и получить фантастические доходности, подстроившись под имеющиеся данные, но тогда высок риск оверфита.
Пара вопросов в зал, что думаете:
- Почему эти данные могут работать?
- Почему эти данные могут не работать?
Приложение
GAZP
LKOH
GMKN
MGNT
ROSN
ALRS
SBERP
AFLT
VTBR