Александр Томтосов
Александр Томтосов личный блог
17 августа 2020, 16:48

Чем меньше риск, тем больше доходность. 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), включая проект по сентименту на развивающихся рынках капитала ФЭН НИУ ВШЭ. Не является индивидуальной инвестиционной рекомендацией.

  • Добавить в Словарь 
    • Новый список слов для Русский -> Русский… 
    • Создать новый список слов...
  • Копировать
26 Комментариев
  • Laukar
    17 августа 2020, 17:50
    Спасибо, интересно. В 4-м варианте продаем при позитивных обсуждениях или негативных?
  • rusquant
    17 августа 2020, 17:52
    здесь важный вопрос встает, а учитывались ли косты? 
  • ves2010
    17 августа 2020, 18:39
    прикольно но
    1 выбор бумаг неудачен для реальной торговли… я бы закладывал хотяб 200мио оборота в день как минимум
    2 если взглянуть на индекс то аптренд с 2014г, было всего 2 36% коррекции и ни одной на 50%... 
    3 можно сделать стресс тест 2008г чтоб убедится в рабтоспособности методы
    4 крайне мало сделок — нет нормальной статистики… т.е скорее всего результат случаен 
    5 я бы не доверял самописному тестировщику
    • ezomm
      18 августа 2020, 18:48
      ves2010, я за -результат случаен тк вся информация в черточке под свечой, те в объеме.
  • Paulmarko
    17 августа 2020, 21:52
    а файлов  py или jupyter не будет?
  • wrmngr
    17 августа 2020, 22:15
    похоже наоборот — оранж это бенчмарк.

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

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

      • wrmngr
        17 августа 2020, 22:31
        Алекс Тотесобунин, хотя бы цены закрытия, но здесь надо внимательно: аукционы отрезать, брать цену закрытия основной сессии. Еще лучше среднюю цену последнего часа 
      • wrmngr
        17 августа 2020, 23:39
        Алекс Тотесобунин, ну и наличие операций с такими бумагами как ARSA не одобрит ни один вменяемый инвесткомитет. Да и вменяемый частный спекулянт будет избегать. Так что, все это требует доработки, в текущем виде это всего лишь красивые картинки 
        • SergeyJu
          18 августа 2020, 10:19
          wrmngr, вполне возможно, что автору это нужно не для реальной торговли, а для диссертации. Тогда все основные возражения в комментариях становятся не актуальными.
            • SergeyJu
              18 августа 2020, 11:05
              Алекс Тотесобунин, значит, надо посчитать по двум биржам, условно, московской и миланской. 
              Я не могу выбрать даже 20 более-менее ликвидных акций на нашей бирже, чтобы торговать вменяемый объем с вменяемым проскальзыванием. Собственно, из этого и надо исходить в реальности. Либо очень ограниченный объем (только для бытового использования) или портфели и медленные системы с набором позиций неделями.
          • wrmngr
            18 августа 2020, 11:17
            Алекс Тотесобунин, такие низколиквиды реально торговать только локально на всплесках ликвидности  1-2 дня, да и то на очень низкие суммы. И стоп по позе — весь размер позы. Все остальное просто нереально. Держать такое в инвест портфеле бессмысленно по куче причин
  • MKS
    17 августа 2020, 22:44
    Я для этих целей обычно отсекал последние 5 минут перед закрытием. И брал крайний ласт. По цене открытия (дневной) согласен — лучше не использовать в таком контексте. 
  • Kot_Begemot
    18 августа 2020, 04:28
    Интересно. Напрягает только одно — выборка, прямо скажем, далеко не худшего участка и, с другой стороны, большая часть доходности приходится на 2020.

    Здесь явно требуются более качественные тесты.
    t-stat>3 сомнителен. Я, правда, и не знаю что такое t-stat 
      • Kot_Begemot
        18 августа 2020, 12:16
        Алекс Тотесобунин, 

        Прикрепляю лог график, кажется более значимым была девальвация 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).
  • Vanches
    18 августа 2020, 08:03
    Было бы интересно посмотреть на результат работы этих стратегий через год.

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

    Или хотя бы сохранить текущий сетап, а через год применить его на исторические данные в неизменном виде.
  • AlexChi
    18 августа 2020, 08:29
    Отличная статья! Спасибо. Побольше бы таких на смартлабе!
  • ezomm
    18 августа 2020, 18:56
     Вся инфа о желании рынка в форме свечи(фракталов из свечей) и ее(их) объеме.Мораль -учимся понимать логику свечей.
  • PK
    30 августа 2020, 21:43
    За проделанный труд и попытку — респект. А что за модель нейронки то используете?
  • Михаил Дунаев
    03 сентября 2020, 12:40
    В четвертом примере большая часть роста обусловлена кратковременным всплеском, что как-бы намекает на то что суммарный результат случаен и статистически недостоверен
    Если всплеск убрать, то что будет?
    Можно еще посмотреть от чего он произошел, сложился ряд событий, но это не заслуга стратегии

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн