[Из песочницы] 35% доходность акций на альтернативных данных

0bzftyu-_rhx-snnzsvqog2nejg.png

Торговля на альтернативных (нестандартных) данных становится модным и перспективным. На днях попал в руки любопытный датасет от Московской Биржи по популярным акциям. После поверхностного исследования удалось получить привлекательный результат 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:

kqidm1imjjiqmmnwodo21fqjdye.png

Данные в динамике и их распределение:

z4lkt6dbn6xqwc9ikv04b7eguny.png

Все три величины pv30, pv70 и pv100 сильно коррелированы (>0.95) между собой и распределены близко к нормальному с центром около нуля. Наибольший интерквартильный размах у pv30.

Цена SBER и кумулятивная сумму pv100:

gmgj8uhkmlv-3dfurqt6owtht8u.png

Доходность за сегодня сильно коррелирует со значениями pv за сегодня ~0.8. Таким образом, можно предположить, что цену двигают участники, набирающие крупную позицию. Корреляция между движением цены завтра и значением pv за сегодня ~0.1, а это значит, что есть слабая зависимость между ними и можно попытаться предсказывать направление движение цены завтрашнего дня по данным pv за сегодня.

Торговая модель


Построим простую модель, если сегодня значение pv > 0, предполагаем что цена завтра вырастет, а иначе упадет. Значения pv сравниваем с нулем, так как средние и медианные значения pv распределены около нуля. Выражаясь проще, если сегодня крупные игроки покупали (pv > 0) на следующий день мы тоже покупаем и наоборот.

Особенности модели:

  1. В модели используется только значения pv, и не используются информация о ценах активов
  2. Открывать позицию будем в 18:40 — 18:50 на аукционе закрытия и закрывать на следующий день, в то же самое время. Время открытия позиции выбрано таким, так как значения pv публикуются в 18:30
  3. Если pv > 0, открываем длинную позицию (покупаем). Если pv < 0, открываем короткую позицию (продаем)
  4. Если два и более дня подряд значение pv положительно/отрицательно, ничего не делаем (hold). Таким образом, размер открытой позиции всегда постоянен
  5. Комиссию за сделку примем равной 0.025%
  6. Ежедневные доходности будем брать от закрытия к закрытию (close to close)


Результаты торговой модели


Сравним доходности стратегии «купить и держать» (Base) и стратегии по значениям pv30, pv70 и pv100 на отрезке в 4 года по SBER:

oqjuviro5kn6offhijyrokvt2ww.png

RETURN — доходность модели за 4 года
SHARPE — коэффициент Шарпа, безрисковая доходность rf = 6%
CAGR — среднегодовой темп роста
MAX DRAWDOWN — максимальная просадка
TRADES — количество совершенных сделок
GAIN/LOSS DAYS — количество дней, когда угадали и не угадали движение цены

Сравнение моделей в динамике:

wewy8ynsdcz2ttj0h0tvbdye0bs.png

Поквартальное сравнение доходностей базовой модели «купить и держать» против индикатора pv

vzm9xe4vbyowgmv5wwfnqgjkbha.png

Аналогичные результаты по остальным девяти инструментам можно посмотреть в приложении ниже.

Портфель акций


На примере SBER мы получили высокую доходность относительно самого актива, но тем не менее наблюдаем большую просадку за весь 2015 год. Такая картина наблюдается и по остальным акциям в разные моменты (см. приложение). А что если раскидать деньги по всем десяти акциям? Тогда, вероятно, сможем избежать крупных просадок.

Раскидать можно поровну, а можно и в пропорции соответствующей ликвидности и емкости инструмента. Тыкнув пальцем в небо Исходя из ликвидности и простоты ради выбрал такие веса: {SBER: 0.25; GAZP, LKOH: 0.15; GMKN, MGNT: 0.1, ROSN, ALRS, SBERP, AFLT, VTBR: 0.05} и сравнил доходности стратегий «купить и держать» и pv100:

kt2jrlw9ztnh9eigfrjccwznqhg.png

Портфель из 10 бумаг управляемый значением pv100 показал доходность 35% годовых и меньшую просадку, чем стратегия «купи и держи».

Перебирая веса можно получить и 15% и 50%, но важно то, что раскидывая средства по множеству активов мы избегаем крупных просадок в нашей торговой модели.

Наблюдения, оставленные за рамками данного материала


  • Производные значения на основе pv также показывают хорошую доходность (хорошая = выше рынка): sma с короткими периодами, импульсы, нормирование на объем и др. подобные приемы из теханализа
  • В периоды пониженной волатильности лучше проявляют себя импульсы значений pv
  • Значения pv имеют хорошую чувствительность к редким сильным движениям цены, т.е. процент угадывания движений цены более 3% достигает ~75%, в то время как общий процент угадываний ~50%
  • Распределение pv по дням недели различается, особенно сильно пн от пт. Вероятно, в начале недели идет набор позиции, а к концу закрытие
  • В торговой модели, рассмотренной выше, значение pv сравнивали с 0, хотя 0 не самая оптимальная точка при максимизации доходности
  • Каждый из 10 акций имеет свои особенности по значениям pv


Мои выводы


Гипотеза следования за крупными игроками по значениям pv с лагом в один день показала результат выше рынка на отрезке 2014–2017. Утверждать, что так будет всегда, было бы самонадеянно. Что будет на новых данных? С одной стороны, нет веских оснований, почему все может сломаться, а с другой, кто знает:) Для большей уверенности нужно больше точек и свежие данные.

Модель можно было бы сделать более комплексной и получить фантастические доходности, подстроившись под имеющиеся данные, но тогда высок риск оверфита.

Пара вопросов в зал, что думаете:

  • Почему эти данные могут работать?
  • Почему эти данные могут не работать?


Приложение


GAZP


_cc5wjfzg4sr_b5h158l-lmsea8.png

oxfab4wdc2vrvjsreoplijd0_e8.png

sn0fer0lgw0eyr5bcwizmpv0fgm.png

LKOH


ot-33dhzeyoa1kg0r3vz5x5qazm.png

9szjqlktbymzntypb4geciu3tju.png

dkkxor-p4ncojnu2ntnsawu_qy4.png

GMKN


brhyvod1m17mteu3wz0ho-6xpbi.png

ylvdrrn0ee034-4ufv9s39h7w1s.png

x4qrf5j7xzrn0c3gimhaffm6d1a.png

MGNT


vqobs--fd6cbncj-ki2bs9zajne.png

pqwydipvm9ni8o3a22wmbutkqvy.png

rd8tfckozcm1_2fnqpcvh1rkca4.png

ROSN


3ryoypn2ss0jfeavb-o74auivf8.png

ifl_gagp6vmogcextoytnxbypr4.png

-1ovuwbm8o05lk_nnhbvscyczc4.png

ALRS


kwyrhnyuoy-zgfbohtdwunxe83y.png

jfyzymk_gdho-fjd_-ltkmm1hs0.png

0mlisj-a-nmib67ksttlkqir5lw.png

SBERP


6dyvf7i2biksumtmbuc7v73ga1k.png

e-gpv2ansxwajbsaafddisxeme4.png

mev7efz6cse81dxqc4hqfosifla.png

AFLT


l3hz6bkkmdwparjwvujxwhqgdqs.png

boyalw9u0pfrsisgwg5y-ia6nq0.png

byohdguz5t4uz_52eib6dy8wav0.png

VTBR


kuwae6niug9awq5hdlulcyq_-sw.png

3-ixxllbaqaufgqco5czvjpzqui.png

yjnhy1ao6nfhusdghsxcuhwtmb0.png

© Habrahabr.ru