Александр Румянцев
Александр Румянцев личный блог
09 августа 2017, 22:36

Бэктестинг: пересечение RSI разных периодов

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

Рассмотрим пересечение индикаторов RSI разных периодов. Алгоритмы пишем в Quantopian на Python.

В этот раз:

  • Попробуем быть на шаг впереди, используя 13-дневный и 65-дневный периоды RSI.
  • Попробуем использовать стандартные 14-дневный и 70-дневный периоды RSI.
  • Посмотрим на лучший период прошлого теста и используем 20-дневный и 100-дневный RSI.
  • Попробуем отфильтровать тренды с помощью скользящих средних.

Индикатор RSI показывает отношение средних роста и падения цены. Подробнее о RSI можно прочитать в первой статье. Мы же будем проверять сигналы разворота тенденции движения цены. Как известно, короткий период индикатора быстрее реагирует на изменение цены, а длинный — медленнее. Пересечение этих двух периодов позволит нам получить сигнал разворота, чуть раньше.

Бэктестинг: пересечение RSI разных периодов

На графике показаны периоды, когда мы планируем находиться в позиции. Быстрый индикатор часто пересекает медленный, и для сокращения количества транзакций мы добавим диапазон индикатора RSI для удержания позиции после открытия.

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

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

Сделаем следующее:

  • Откроем длинные позиции, когда быстрый индикатор пересекает медленный снизу вверх, а медленный RSI выше 50.
  • Откроем короткие позиции, когда быстрый индикатор пересекает медленный сверху вниз, медленный RSI ниже 50.
  • Удерживаем открытые позиции, когда значение быстрого RSI в диапазоне ±10 от значения медленного RSI.

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

Условия

  • Торгуем SPY или фондами основных секторов - XLY, XLK, XLI, XLB, XLE, XLP, XLV, XLU, XLF, XLRE.
  • Капитал $100 000.
  • Торгуем с 2004 до 2017 года (13 лет).
  • Торгуем на открытии рынка.
  • Периоды индикаторов (быстрый X медленный): 13x65, 14x70, 20x100.
  • Направления: только длинные позиции, торгуем в обе стороны.
  • Без стопов.

Пересечение 13x65

Бэктестинг: пересечение RSI разных периодов

В первую очередь попробуем реагировать раньше толпы и будем получать сигналы при пересечении 13-дневного и 65-дневного периодов RSI. SPY при этих настройках проявляет себя плохо. Особенно в периоды отсутствия ярко выраженных трендов. Алгоритм находится в открытых позициях 61% времени (за весь период капитал вложен в SPY только 61% времени, примерно 8 из 13 лет).

Код проверки сигналов:

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

Торговля основными секторами позволяет заработать и опередить SPY по стратегии "Купи и держи". При бэктесте лучшие результаты показал алгоритм с диапазоном удержания ±12 от медленного RSI. Опережающая доходность есть только при торговле в длинную. Стратегии с короткими позициями показывают отрицательную доходность, и я их в результаты не добавлял. При тестировании алгоритм находится в открытых позициях 91% времени.

Бэктестинг: пересечение RSI разных периодов

Пересечение 14x70

Бэктестинг: пересечение RSI разных периодов

Стандартный 14-дневный и 70-дневный периоды показывают в сегодняшних тестах лучшую доходность при умеренной просадке в -24%. Алгоритм в открытых позициях 91% процент времени. И снова лучшими были тесты с диапазоном удержания ±12 от медленного RSI. Предположу, что можно подобрать более удачную величину диапазона. Попробуйте.

Пересечение 20x100

Бэктестинг: пересечение RSI разных периодов

Увеличенные периоды до 20 и 100 дней положительно отразились на доходности торговли одиноким фондом SPY. Уменьшив количество сделок в сравнении с 13х65 и увеличив время в позиции до 63%.

Торговля равными долями секторов снова вырвалась вперед. Удалось снизить просадку до -21%. Видно, что стратегия плохо себя ведет в периоды боковика и коррекций с 2015 года. Капитал работает 94% времени, что очень хорошо. Есть явный период простоя в районе 2009 года.

Бэктестинг: пересечение RSI разных периодов

Фильтруем вход по SMA(200)

Бэктестинг: пересечение RSI разных периодов

Фильтрация трендов с помощью скользящих средних SMA(20) и SMA(200) лишь ухудшила наши результаты. Само по себе пересечение разных периодов прекрасно фильтрует направление основной тенденции цены. Лучшие показатели доходности при фильтрации сохранились на максимальных периодах RSI(20x100).

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

Стратегия Доход Просадка Кол-во сделок Alpha Beta
SPY, Long*, 13×65/10** +13% -20% 88/66*** -0.01 0.23
SPY, Long, 13×65/12 +45% -21% 70/49 0.01 0.25
SPY, Long&Short, 13×65/10 +18% -29% 120/105 0.04 -0.23
Sectors, Long, 13×65/10 +271% -29% 1003/1083 0.07 0.44
Sectors, Long, 13×65/12 +273% -25% 946/1016 0.07 0.46
Sectors, Long&Short, 13×65/10 +69% -39% 1285/1413 0.09 -0.33
RSI(14×70)  
SPY, Long, 14×70/10 +54% -21% 77/55 0.01 0.24
SPY, Long, 14×70/12 +60% -21% 69/44 0.02 0.26
SPY, Long&Short, 14×70/10 +75% -25% 103/87 0.07 -0.19
SPY, Long, 14×70/10, SMA20x200 +40% -19% 72/52 0.01 0.20
SPY, Long&Short, 14×70/10, SMA20x200 +59% -26% 89/83 0.07 -0.22
Sectors, Long, 14×70/10 +277% -23% 951/1042 0.07 0.47
Sectors, Long, 14×70/12 +305% -24% 905/988 0.07 0.48
Sectors, Long&Short, 14×70/10 +95% -40% 1209/1348 0.10 -0.32
Sectors, Long, 14×70/10, SMA20x200 +239% -25% 910/997 0.06 0.44
Sectors, Long&Short, 14×70/10, SMA20x200 +104% -34% 1165/1293 0.10 -0.30
RSI(20×100)  
SPY, Long, 20×100/10 +69% -20% 53/33 0.02 0.26
SPY, Long, 20×100/12 +46% -23% 48/28 0.01 0.29
SPY, Long&Short, 20×100/10 +77% -31% 68/54 0.07 -0.18
SPY, Long, 20×100/10, SMA20x200 +48% -16% 48/31 0.01 0.21
SPY, Long&Short, 20×100/10, SMA20x200 +84% -27% 61/49 0.08 -0.22
Sectors, Long, 20×100/10 +290% -24% 736/837 0.07 0.50
Sectors, Long, 20×100/12 +261% -21% 703/782 0.06 0.49
Sectors, Long&Short, 20×100/10 +137% -34% 894/1048 0.10 -0.23
Sectors, Long, 20×100/10, SMA20x200 +250% -27% 668/783 0.06 0.46
Sectors, Long&Short, 20×100/10, SMA20x200 +230% -31% 830/989 0.13 -0.27
  1. Long — только длинные позиции. Long&Short — длинные и короткие позиции.
  2. Периоды индикаторов RSI и величина диапазона удержания. {Быстрый}x{Медленный}/{Удержание}.
  3. Кол-во покупок/ Кол-во продаж.

Код в студию

Поделитесь статьей для доступа к репозиторию с исходным кодом. Вопросы по коду пишите в комментариях.

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

Вывод

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

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

В следующий раз мы протестируем сигналы разворотов по RSI для коротких периодов (2/5 дней).

В комментариях напишите ваше мнение о стратегии. Что можно улучшить? Где есть ошибки?

Обучение внутредневному трейдингу в United Traders.

Александр Румянцев aka «i.am.raa»
Автор Quantrum.me
Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде. Пишите в личку или на email.
5 Комментариев
  • Ivan P
    10 августа 2017, 00:27
    Вы неравнодушны к индикатору RSI — почти все алгоритмы на его основе;) 
    Результаты это, конечно же, хорошо, а вот есть у вас запущенные алгоритмы на реальных счетах?
  • Charging Bull
    10 августа 2017, 09:34
    Попробуйте Macd histogram и прикрутите к ней пробой хай лоу предыдущей свечи. Вроде как работает при правильно насчитанном стопе. Но так и не дошёл до тестов. Там надо прогонять кучу параметров для оптимизации и подбора размера тейка. Для алго вполне перспективно как мне кажется

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

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