Блог им. AlexanderTomtosov

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Привет, после небольшого перерыва возвращаемся к бэктестам. Добавим к простой трендовой стратегии на Мосбирже 4 варианта выхода из позиций с возрастающим уровнем сложности. Для первых двух стратегий особых навыков не требуется, третья требует парсинга Телеграма и для последней потребуется обученная нейронная сеть при разметке сообщений.
Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Это продолжение рассуждений о риске и доходности акций на Московской бирже: https://smart-lab.ru/blog/625771.php Основные выводы из первой части:

1)     Увеличение риска (стандартного отклонения) приводит к снижению будущей доходности акций, а не наоборот;

2)     Стратегия, выстроенная только на основе исторической волатильности, несамостоятельна и проигрывает индексу.

В этот раз возьмем за основу трендовую стратегию в самом простом виде – на пересечении 1-месячной и 3-х месячной скользящей средней. И будем снижать риск разными способами с целью поднять доходность, Шарп, сократить время боковиков и корреляцию с бенчмарком. Об эффективности трендовых стратегий в России можно почитать здесь https://smart-lab.ru/blog/611263.php на глобальных ETF здесь https://smart-lab.ru/blog/617639.php

О выборке и методах тестирования

В этот раз у нас 60 акций с 2014 по 2020гг. 20 голубых фишек из ММВБ 10 + ликвидные металлурги и Яндекс, 20 компаний средней капитализации вроде производителей удобрений и угольщиков + 20 неликвидных бумаг из разных секторов. Период из-за сложно доступности не биржевых данных уменьшился. Зато мы совершаем сделки почти ежедневно и балансируем портфель по ситуации, а не фиксировано раз в месяц как раньше. В портфеле может находится от 0 до 60 акций одновременно, комиссии за сделки взяты среднерыночные, дивиденды не учтены. Наблюдение по цене закрытия, сделка – по цене открытия. Веса в портфеле равные.

1)     Покупаем по тренду и продаем по тренду

«Hello world!» в мире алготрейдинга. В данном случае под риском подразумевается переход к падающему тренду в среднесрочном периоде. Очевидно, запаздывающий индикатор, но годится как бенчмарк для сравнения с более сложными стратегиями. Прогоняем цикл для каждой акции и покупаем при превышении долгосрочного ряда краткосрочной МА. Для отдельной акции помимо метрик получаем моменты сделок. На примере АФК:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

Здесь и далее синяя линия отражает доходность тестируемой стратегии по акции или портфелю, а оранжевая — buy&hold акции или равновесного бенчмарка. Ситуация портфеля в сравнении с индексом из 60 бумаг:
Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

 

Шарп 1.1, среднемесячная доходность 2.78% и значимая месячная альфа 0.97%. Совсем неплохо для минимальных усилий. Из минусов: почти полная корреляция с индексом 0.82, которая еще более заметная если смотреть на скользящую 21-дневную волатильность доходности (0.91):

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

 

В среднем стратегия достигает нового максимума за 9 дней и максимально за 225 дней. Самые популярные бумаги по суммарным дням нахождения в портфеле:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

2)     Покупаем по тренду и продаем по волатильности

 

Правило покупки остается неизменным, но продаем теперь при превышении трейлинг волатильности своего долгосрочного аналога. Сигнал на продажу является старшим, т.е. если у нас в портфеле есть бумаги и одновременно выходит покупка и продажа – мы продаем. Если в такой же ситуации бумаги нет – не покупаем. Результат:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

 

На удивление результаты ухудшились в сравнении с простым вариантом МА. Шарп 0.91, среднемесячная доходность 2.14%, альфа около 0 и незначима. Корреляция с индексом также высока 0.88. Если бы не чуть более сильный рост в 2015-2016гг, то результаты не отличались бы от бенчмарка. Интересно, что в среднем в портфеле было 36 бумаг, а на пике 53, т.е. почти вся выборка.

3)     Покупаем по тренду и продаем против обсуждений толпы

Для этого нужен ряд с посчитанным количеством сообщений для каждой акции из популярных Телеграм групп и чатов + некоторых других источников. Если канал-ветка не посвящены отдельной акции, то используем словари и другие методы, чтобы отделить сообщения. При значительном росте сообщений мы продаем/не покупаем бумагу. Результат:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

 

Лучше предыдущего варианта, но хуже скользящих средних с поправкой на сложность. Доходность возросла одновременно с риском, что отразилось на Шарпе 0.91 и альфе 0.42%. Корреляция чуть отклеилась, но остается высокой 0.75. Торгуем в этот раз активно, почти 4 сделки в день:
Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

 

Но держим меньше бумаг в портфеле (19) и не всегда это голубые фишки.

 

4)     Покупаем по тренду и продаем по сложной методике их тональности и активности сообщений частных инвесторов

 

В этот раз мы идем дальше и обучаем нейросеть для разметки сообщений на разные группы тональности. От восхищения до проклятий в отношении акции/компании. И строим на этих данных индикатор, одновременно учитывающий и тональность сообщений, и активность постинга. Сложно назвать эффектом «толпы» позитивный сантимент из 3 сообщений. Или при рассмотрении большого количества сообщений обнаружить, что позитива и негатива там 50-50. Наверное, про этот подход стоит сделать отдельный пост. Результат многодневного чтения и разметки сообщений:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

 

               В этот раз усилия дали результат: накопленная доходность почти х10, Шарп 1.4, максимальная просадка -18%, лучший месячный результат 30.69%, а средний 3.65%. Альфа 2.07 с t-stat >3. Разбивка по месяцам:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

 

Волатильность высокая, но почти не коррелирует с бенчмарком 0.27. И это радует:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Источник: Sentimetrica (2020)

 

               Из минусов можно отметить малое количество бумаг в портфеле, в среднем – 5. Но это лечится увеличением исходной выборки. Лидеры по количеству сделок в портфеле. Список не на 100% пересекается с бумагами по удержанию и отражает более спекулятивные бумаги:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Более существенный минус – это высокое количество дней, за которое мы не достигаем нового максимума по накопленной доходности. В среднем – это 13 дней, а максимально 329. Не нашел расчета такой метрики в базовых пакетах, но задача имеет простое решение:

Чем меньше риск, тем больше доходность. Fact and fiction о риске и доходности на Московской бирже Vol 2. Коллекция простых и сложных бэктестов: от скользящих средних до нейронки

Вывод: все метрики снижения риска улучшили результат. И опять мы получили U-образную кривую эффективности. Если жалко время на разметку и обучение НС, то простые способы дают хороший результат и займут не более 100 строк кода. Если использовать сложные метрики, то в них нужно идти до конца. Промежуточные варианты слабы, но в законченном варианте видим потенциал.

 

Спасибо всем за полезные комментарии и умные вопросы. В заключительной части сделаю бэктест метрик из предложенных в комментариях к 1 части и этому посту. Пилим бета-версию бесплатного сервиса по сантиментам здесь: https://www.sentimetrica.ru/portfel Больше исследований здесь: @sentimetrica t.me/sentimetrica Вопросы можно задать здесь, в чате или в личку @atomtosov.

 

 Работа по тестированию стратегий и формированию баз данных, построению набора факторов влияния на инвестиционную привлекательность реализуется в рамках проектов ЛАФР (www.fmlab.hse.ru), включая проект по сентименту на развивающихся рынках капитала ФЭН НИУ ВШЭ. Не является индивидуальной инвестиционной рекомендацией.

  • Добавить в Словарь 
    • Новый список слов для Русский -> Русский… 
    • Создать новый список слов...
  • Копировать
★47
26 комментариев
Спасибо, интересно. В 4-м варианте продаем при позитивных обсуждениях или негативных?
avatar
Laukar, Больше учитываются позитивные
здесь важный вопрос встает, а учитывались ли косты? 
avatar
Вячеслав Арбузов, Да, хотя учет костов для неликвидов может быть непредсказуем и не ограничивается брокерской комиссией + бид-аск спредом
прикольно но
1 выбор бумаг неудачен для реальной торговли… я бы закладывал хотяб 200мио оборота в день как минимум
2 если взглянуть на индекс то аптренд с 2014г, было всего 2 36% коррекции и ни одной на 50%... 
3 можно сделать стресс тест 2008г чтоб убедится в рабтоспособности методы
4 крайне мало сделок — нет нормальной статистики… т.е скорее всего результат случаен 
5 я бы не доверял самописному тестировщику
avatar

ves2010, Спасибо:

1) Можно оставить 50 самых ликвидных и поставить условие, чтобы было не менее 10-15 бумаг в любом периоде. Но в Сберах и Норникелях  форумные инвесторы по ощущениями не сильно влияют на ценообразование. А в бумагах вроде распадской и ниже — вполне. В других бэктестах ставил фильтр на среднедневной объем торгов не ниже 10мио за пред. месяц, можно проверить это стратегий 1-3;

2-4) Согласен, но данных по сантименту за тот период не найти, чтобы был нормальный охват % брокерских счетов. Новости и лента не совсем то будет;

5) Почему? Мне он видится наоборот прозрачным — можно поковырять в экселе, перепроверить по шагам. 

ves2010, я за -результат случаен тк вся информация в черточке под свечой, те в объеме.
avatar
а файлов  py или jupyter не будет?
avatar
похоже наоборот — оранж это бенчмарк.

«сделка – по цене открытия» — это плохо

ну и эффективность очень низкая для неликвидов, даже простейшие фильтры дают больше насколько я знаю

avatar
wrmngr, Спасибо, поправил момент с линиями. Вместо открытия предлагаете среднюю цену дня по объемам или другое?
Алекс Тотесобунин, хотя бы цены закрытия, но здесь надо внимательно: аукционы отрезать, брать цену закрытия основной сессии. Еще лучше среднюю цену последнего часа 
avatar
Алекс Тотесобунин, ну и наличие операций с такими бумагами как ARSA не одобрит ни один вменяемый инвесткомитет. Да и вменяемый частный спекулянт будет избегать. Так что, все это требует доработки, в текущем виде это всего лишь красивые картинки 
avatar
wrmngr, вполне возможно, что автору это нужно не для реальной торговли, а для диссертации. Тогда все основные возражения в комментариях становятся не актуальными.
avatar
SergeyJu, моя реальная торговля уже не включает в себя инвесткомитеты или суммы из поста ves2010 :) В диссертации могут быть допущения, но поиск аномалий без учета издержек точно зарубят. Например, в магистратуре пересчитывал модель с учетом комиссий и бид-аск.

Наверное, исследование может включать в себя ARSA подобный бумаги, если это заранее оговорено и не вся выборка будет состоять из 3 эшелона. По ощущениям, опубликоваться статью с данными нашей биржи в не российском журнале очень сложно и пока не похоже на простой путь.
Алекс Тотесобунин, значит, надо посчитать по двум биржам, условно, московской и миланской. 
Я не могу выбрать даже 20 более-менее ликвидных акций на нашей бирже, чтобы торговать вменяемый объем с вменяемым проскальзыванием. Собственно, из этого и надо исходить в реальности. Либо очень ограниченный объем (только для бытового использования) или портфели и медленные системы с набором позиций неделями.
avatar
wrmngr, поищу версию с отдельным тестом по группам капитализации, пока под рукой только общая выборка. Помню, что не очень хороший результат был по группе Сбер-Лукойл-ГМК, но там и параметры надо ослаблять (для выхода из позиции), т.к. сообщений всегда много. Для 2 эшелона и неликвидов результаты были схожи в плане превышения бенчмарка, шарпа и альфы. Доходности, конечно, отличались.

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

Читал в работе Size Matters if You Control Your Junk (2018, Asness et al), что последний дециль по капитализации дает плохое соотношение риска и доходности. Но если отфильтровать группу по фактору Quality (без убыточных и совсем закредитованных), то ситуация сильно меняется.
Алекс Тотесобунин, такие низколиквиды реально торговать только локально на всплесках ликвидности  1-2 дня, да и то на очень низкие суммы. И стоп по позе — весь размер позы. Все остальное просто нереально. Держать такое в инвест портфеле бессмысленно по куче причин
avatar
Я для этих целей обычно отсекал последние 5 минут перед закрытием. И брал крайний ласт. По цене открытия (дневной) согласен — лучше не использовать в таком контексте. 
avatar
Интересно. Напрягает только одно — выборка, прямо скажем, далеко не худшего участка и, с другой стороны, большая часть доходности приходится на 2020.

Здесь явно требуются более качественные тесты.
t-stat>3 сомнителен. Я, правда, и не знаю что такое t-stat 
avatar
Kot_Begemot, Спасибо. По выборке ответил чуть выше: хотелось бы взять и 2008 и 1998, но нормальной истории по сообщениям раньше 2014 найти не удается. 

Прикрепляю лог график, кажется более значимым была девальвация 2014-2015 и ралли 2016г:

Можете предложить дополнительные тесты на проверку устойчивости? Пока приходит в голову только протестить отдельно на аптренде/падении/боковике/сильной и слабой воле + посмотреть результат без 1-3 лучших акций, которые дали наибольший профит

Алекс Тотесобунин, 

Прикрепляю лог график, кажется более значимым была девальвация 2014-2015 и ралли 2016г:

У меня на Марковице тоже так — 2014-2017 обгоняю рынок, 2018-2020 чуть отстаю. В целом, это скорее нормально для любых систем ставящих целью обогнать рынок, так как рынок обогнать можно только на сильных трендах, которых последние два года и не было.

Пока приходит в голову только протестить отдельно на аптренде/падении/боковике/сильной и слабой воле + посмотреть результат без 1-3 лучших акций, которые дали наибольший профит

Тесты в различных фазах нужны скорее как генерация идей, а не как тесты. То есть, если на боковике вы уходите в глубокий минус, то это повод ввести некоторый фильтр «пилы». Сам по себе тест конкретно на боковике или конкретно на тренде не имет никакого значения.

В целом же я ориентируюсь на z-test. Для вашей системы он будет примерно равен:

256*6=1536 дней
стандартное отклонение шарпа = 1/(1536)^0.5 = 0.025
годовое ст. отклонение шарпа = 0.025 * 16 = 0.4
Шарп в ст. отклонениях = 1.4/0.4 = 3.5 

То есть с вероятностью более 99.99% система является прибыльной. 
Если нужно проверить на преимущество к бенчмарку, то шарп бенчмарка нужно вычитать из шарпа системы и делать то же самое.

Вряд ли существует некоторая общая и при этом более качественная оценка. В данном случае здесь по бенчмарку вопросы — уж очень у него высокий Шарп (вероятно около 0.8-1).
avatar
Было бы интересно посмотреть на результат работы этих стратегий через год.

Что будет если простую и нейросетевую запустить в рынок?

Или хотя бы сохранить текущий сетап, а через год применить его на исторические данные в неизменном виде.
avatar
Отличная статья! Спасибо. Побольше бы таких на смартлабе!
avatar
 Вся инфа о желании рынка в форме свечи(фракталов из свечей) и ее(их) объеме.Мораль -учимся понимать логику свечей.
avatar
За проделанный труд и попытку — респект. А что за модель нейронки то используете?
avatar
В четвертом примере большая часть роста обусловлена кратковременным всплеском, что как-бы намекает на то что суммарный результат случаен и статистически недостоверен
Если всплеск убрать, то что будет?
Можно еще посмотреть от чего он произошел, сложился ряд событий, но это не заслуга стратегии
avatar

теги блога Александр Томтосов

....все тэги



UPDONW
Новый дизайн