Бэктестинг: ловим развороты по RSI

10 месяцев назад

В этот раз мы протестируем⏱ стратегию торговли уровней перекупленности и перепроданности. Разворачивать🔃 нас будет индикатор RSI (Индекс относительной силы). Тестировать будем в Quantopian, а код писать на Python🐍.

На повестке дня:

  • Результаты разворотов🔃 на уровнях перекупленности/перепроданности.
  • Влияние срока⏰ удержания позиции.
  • Сравнение⚖ разных периодов индикаторов.

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

Автор индикатора предлагает использовать 14-ти дневный период. Уровень перекупленности актива находится на 70-ти. От него может начаться откат. На 30-ти - уровень перепроданности, и мы ожидаем подъём. Но, на графике видно, что данные уровни (30/70) отрабатывают не всегда.

Однако, мы это проверим на исторических данных с 2004 года.

🎓Предположение

RSI показывает развороты. Значит мы будем открывать длинную позицию при достижении 30-го уровня, а короткую при достижении 70-го уровня.

Проверим следующее:

  • На входе: открываем длинные позиции, когда RSI(14) пересек 30 сверху вниз и короткие, когда RSI(14) пересек 70 снизу вверх.
  • На выходе: открываем длинные позиции на пересечении 30-ти снизу вверх и короткие на 70-ти сверху вниз.
  • Ограничим удержание открытой позиции 20-тью днями.
  • Сравним результаты за разные периоды RSI(10/14/18).

В конце статьи доступен исходный код и таблица с полученными результатами.

👆Условия

  • Торгуем SPY или фондами основных секторов - XLY, XLK, XLI, XLB, XLE, XLP, XLV, XLU, XLF, XLRE.
  • Капитал $100 000.
  • Торгуем с 2004 до 2017 года.
  • Торгуем на открытии рынка.
  • Без стопов.

🔃Торгуем развороты

В первую очередь тестируем при входе в уровни перекупленности/перепроданности. Сигналы при пересечении 70-ти снизу и 30-ти сверху.

Имеется сильная просадка, которая связана с отсутствием ограничителей и стопов. У нас есть сигнал только на открытие. Открывшись раз, мы закроемся только на противоположном уровне. Если на рынке сохраняется тренд, то до противоположного уровня мы можем быстро и не добраться.

При торговле по RSI необходимо учитывать тренд актива.

В коде мы должны проверять сигнал на вход, сигнал на выход и условия удержания позиции. Ниже выдержки из кода:

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

Внизу график при открытии позиций на выходе из уровней перекупленности/перепроданности. Сигнал на пересечении 70-ти сверху и 30-ти снизу. Количество сделок практически не поменялось. Результаты могли ухудшиться из-за поздней реакции.

⏰Ограничение времени удержания

Ограничение времени удержания позиции позволило сократить просадку. Доходность практически не изменилась. Упешные развороты обычно коротки. Сигналов мало, что позволяет совместить их с другим алгоритмом. Например, торговать SPY по средним, а по сигналу использовать маржу для удваивания позиции на ограниченное время.

Ниже выдержка из кода, как можно управлять ограничением удержания позиции:

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

⚖Сравнение разных периодов

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

Меньше период RSI, больше сигналов. Больше период RSI, меньше сигналов.

🏆Результаты тестов

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

  1. Вход - сигнал при входе в зону перекупленности/перепроданности (например, при пересечении 70-ти снизу вверх). Выход - сигнал при выходе (например, при пересечении 70-ти сверху вниз).
  2. Лонг - только длинные сделки. Шорт - только короткие сделки. Или в обоих направлениях.
  3. 20 дней - максимальное количество дней удержания открытой позиции.
  4. Тест на основных секторах: XLY, XLK, XLI, XLB, XLE, XLP, XLV, XLU, XLF, XLRE. Капитал распределяется равными долями между активами на открытие и удержание.

🎁Код в студию

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

🏁Вывод

На основании результатов видно, что чаще и лучше работают сигналы по тренду. За анализируемый период рынок большую часть времени рос. Лучшая доходность на сигналах покупки от 30-го уровня.

Можно увеличить или уменьшить количество сигналов изменением периода индикатора. Оптимальным решением является предварительный анализ актива. Подбор уровней и периода для достижения наилучших показателей. Также важно учитывать тренд актива.Соглашусь, что это будет подгонка под прошлое. Но кто мешает разработать алгоритм подбора параметров и проверить его на разных периодах? Подобрать оптимальные параметры на одном периоде и проверить результаты на других.

В следующий раз рассмотрим стратегию следования за RSI на разных таймфреймах. Также добавим проверку тренда актива.

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

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

☝Вам интересны криптовалюты? 🎓Учитесь ими торговать здесь👍.

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

Круто! На крипте пробовали?

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

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

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

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

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

Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
vlad, vika-teplo, iamraa
Поэтому я тоже проголосовал за него!
Если Вы проголосуете за этот комментарий, то поможете сделать "Доброго Кита" сильнее!