Бэктестинг: купи и держи со скользящими средними

5 месяцев назад
42 в quantopian

В этот раз "подкрутим"🔧 стратегию "купи и держи" с помощью скользящих средних на основе этой статьи💡. Там говорится, что при входе выше 200-дневной средней и выходе под ней, мы можем получить аналогичную доходность📈 и сократить просадки📉. Дополнительно появляется возможность припарковать свободный капитал, например, в банк🏦.Будет приведено несколько алгоритмов:

  • пересечение SMA200 и цены;
  • пересечение SMA200 и SMA10;
  • пересечение SMA200 и SMA50;
  • пересечение EMA200 и EMA50;
  • пересечение EMA200 и EMA50 плюс покупка облигаций.

Все происходит на платформе Quantopian, о которой я подробнее пишу в этом посте. Период тестирования для всех алгоритмов - с 01.01.2014 до 29.12.2016. Связано это с тем, что у EMA есть нестабильный период, который необходимо пропустить.

"Купи и держи" за выбранный период

Для наглядности размещу здесь результат стратегии "Купи и держи". Можно заметить, что результат хуже бенчмарка на ~3%, что связано с механизмом просадок и комиссий, используемым по умолчанию в платформе. Об этом поговорим в отдельном обзоре.Внизу видно, что было много транзакций - это связано с реинвестированием дивидендов.

👎Пересечение SMA200 и цены

Справа на картинке не впечатляющие результаты тестирования. Мы входим над 200-дневной скользящей средней и выходим, когда цена опускается под нее. Внизу видно увеличившееся число произведенных транзакций, которые с аппетитом поедали средства на комиссии и проскальзывания. За 50% доходности мы получили сокращение на 22% времени удержания позиции и уменьшение просадки до -22%, что положительно скажется на нервах. Результаты всех измерений доступны в конце статьи, в таблице.

Внизу видно, что транзакции на покупку и продажу сконцентрированы в нескольких местах. Объясняется это тем, что цена очень часто колеблется вокруг 200-дневной средней, являющейся очень сильным уровнем поддержки или сопротивления. Для сокращения колебаний воспользуемся второй короткой средней, SMA(10), и будем входить когда она над длинной, а выходить - наоборот.

Ниже размещен код на Python. Все последующие тесты используют этот же код с минимальными изменениями, которые будут показаны без повторения нетронутых строк.

Код доступен на Quantrum.me.

Для использования этого кода, перейдите на страницу своих алгоритмов, нажмите кнопку "New Algorithm", в названии укажите "Buy and hold SMA200" и нажмите "OK". Скопируйте текущий код и на открывшейся странице вставьте его в левое поле, стерев предварительно все что там было. Для запуска алгоритма нажмите "Build Algorithm".

👎Пересечение SMA200 и SMA10

В этот раз удалось отыграть 20% доходности и сократить просадку до -19%.В следующем тесте проведем проверку с пересечением SMA(50) и SMA(200). Данное пересечение является фактом долгосрочного бычьего или медвежьего трендов. По этому пересечению многие трейдеры держат консервативную часть своего капитала в индексах широкого рынка, таких как S&P 500 (SPY).

В коде тестирования SMA(200) X SMA(10) были поменяны только три строчки, которые представлены ниже: Код доступен на Quantrum.me.

👌Пересечение SMA200 и SMA50

Результаты стали значительно лучше. Не хватает только 9% доходности, а на другой чаше весов сокращение времени удержания позиции на 23%, сокращение просадки на 35% и даже сокращение количества сделок.

В следующем тесте попробуем заменить обычные на экспоненциальные скользящие средние. Ведь они быстрее реагируют на изменения цены, что может позволить нам улучшить результаты теста.

Изменения кода SMA(200) X SMA(50): Код доступен на Quantrum.me.

👌Пересечение EMA200 и EMA50

За последние 12 лет грааль🏆 вроде найден и содержит он простое пересечение EMA(50) и EMA(200). Нам удалось обыграть рынок на 2%, сократить просадку до 18%, сократить количество сделок и сократить время удержания на 18%. И это при учете проскальзываний и комиссий (об этом подробнее в будущих статьях), которые автоматически учитываются на Quantopian.Изменения кода EMA(200) X EMA(50): Код доступен на Quantrum.me.

Помня, что в первый час открытия рынка торговать не рекомендуется из-за повышенной волатильности, мы установим условие, что на рынок будем выходить спустя 1 (один) час после открытия. Данный не хитрый способ позволил нам отыграть еще 4%. Код изменения ниже: Код доступен на Quantrum.me.

Сейчас мы видим последнюю проблему, которая поражает наш алгоритм - это резкое падение, которое было в августе 2015. Есть несколько возможных решений, например:

  • Закрывать позицию при резком падении на определенное кол-во процентов от цены.
  • Оставлять допуск на разворот в области пересечения ±2%. То есть закрывать позицию, когда EMA50 на 2% ниже EMA200, а открывать, когда на 2% выше EMA200.

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

👍Пересечение EMA200 и EMA50, при выходе сидим в TLT

Каждый раз на слабом рынке мы выходили в кэш. А что будет, если при выходе в кэш искать возможность войти в облигации, а именно в ETF на 20-летние облигации TLT? А все будет значительно лучше, что показывают результаты в таблице ниже. Доходность вырастает до 198%, что на 40% выше эталона, а деньги находятся в рынке 94% времени.

Остаются проблемы августа 2015, решая которые можно скорее навредить, подогнав алгоритм под историю, нежели улучшить.

Исходный код с торговлей облигациями доступен в обмен на вашу социальную активность.

Код доступен на Quantrum.me.

🥇Результаты

Результаты доступны на Quantrum.me.

  • Время торгов - время, когда алгоритм начинает торговать: Open - открытие рынка, Open+1 - через 1 час после открытия рынка.
  • Кол-во сделок - количество сделок на покупку и продажу. В поле указаны Покупки/Продажи. Реинвестиция дивидендов считается отдельными сделками.
  • Срок в позиции - количество дней в позиции. В первый день мы начинаем закупаться, отсюда 99%.

🏁Заключение

💬Напишите в комментариях, что можно улучшить в данных алгоритмах. Или предложите, какие стратегии стоит рассмотреть в будущем.

Александр Румянцев aka "iamraa"
Автор Quantrum.me
Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде. Пишите в личку или на email.

Готовы начать торговать💰? Тогда открывайте счет поближе к профессионалам.👍

Авторы получают вознаграждение, когда пользователи голосуют за их посты.
Голосующие читатели также получают вознаграждение за свой голос.
Порядок сортировки:  Популярное

Привет! Я робот. Хозяин поручил мне проголосовать за Ваш пост! Я нашла похожий контент, который может быть интересен читателям ГОЛОСа:
https://quantrum.me/743-bektesting-kupi-i-derzhi-so-skolzyashhimi-srednimi/

68
  ·  5 месяцев назад

@iamraa Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:

Награда за количество полученных голосов

Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь

Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом стоп

Голосуя за это уведомление, вы помогаете всем пользователям Голоса. Узнайте, как здесь.

69
  ·  5 месяцев назад

Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
losos, goracio
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!


Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
72
  ·  5 месяцев назад

Мы - проект на Голосе, который направлен на борьбу с плагиатом, копипастой и кражей личности.

Чтобы предотвратить кражу личности и использование чужого контента в целях заработка, мы просим публичных личностей, авторов блогов и статей на популярных вебсайтах, деятелей искусства и других людей, которые настаивают на авторстве контента, существующего на просторах Интернета или других источниках вне Голоса, подтвердить свою личность.

Для подтверждения личности Вы можете:

  • Создать пост в соответствующем данной личности аккаунте в социальных сетях (ВКонтакте, Facebook, Twitter, Instagram, Reddit, и др.) со ссылкой на Голос, после чего поделиться этим постом в Голосе, чтобы у сообщества была возможность удостовериться в том, что это действительно Вы.

  • Если Вы владелец сайта или блога - разместите там пост или ссылку на свой аккаунт в Голосе, после чего поделитесь этим постом в Голосе, чтобы у сообщества была возможность удостовериться в том, что это действительно Вы.

  • Также подтверждение личности возможно через эл. почту. Для этого свяжитесь с нами в Telegram чате Культуры Голоса., и мы обсудим конкретные шаги по подтверждению личности в Вашем конкретном случае.

  • В некоторых ситуациях принимается фотография в качестве подтверждения личности - например, публикация фотографии, на которой видны ранее опубликованные художественные работы, но при этом на фотографии присутствует листик, на котором указана дата и Ваше имя пользователя в Голосе.

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

Спасибо Вам за сотрудничество!

·

Добавил ссылку на свой аккаунт:
https://quantrum.me/mne-nravitsya/

72
  ·  5 месяцев назад

@iamraa,
спасибо за верификацию. Мы внесли Вас в базу верифицированных пользователей.
Если вы также хотите, чтобы @cheetah бот добавил вас в свой белый список, ознакомьтесь, пожалуйста, с условиями занесения в белый список в статье: Что такое "Белый список" Cheetah?

·

Благодарю. Ссылку на первоначальный пост всегда публикую.