Индикатор силы тренды TSI на Python

📈The trend is your friend. Одна из стратегий на рынке — это покупка активов в направлении тренда. Узнать тренд можно множеством способов и каждый имеет свои плюсы и минусы. Самый известный и одновременно рабочий способ определения долгострочного тренда — это 200-дневная скользящая средняя.

Но хочется знать на сколько всё хорошо. Какова вероятность, что мы вскочим в рынок и он не рухнет😱 вместе с нами? Для этой цели мы сегодня исследуем индикатор силы тренда (TSI), найденный мною на просторах интернета.

Для определения основного тренда будем использовать индикатор Rate-of-Change (ROC), показывающий скорость изменения цены. И его сглаженный вариант.

📈Тренд на рынке по ROC(200)

Индикатор ROC показывает процент изменения текущей цены относительно  прошлого значения. Параметр индикатора — кол-во дней, между которыми сравниваем цены. Формула:

ROC(200)=(\frac{close}{close[-200]}-1)*100

ROC(200) может быть использован, как альтернатива SMA(200) (обычная скользящая средняя), тест которой описан в этой статье. Если ROC(200) выше нуля — тренд бычий, если ниже — медвежий.

🎢Сглаженный ROC(200)

Для удаления резких колебаний мы сгладим исходные значения ROC(200) по следующей формуле:

smooth ROC(200)=\frac{roc[-1]+roc[-2]*2+roc[-3]*2+roc[-4]}{6}

Ниже результат для сравнения:

сравнение ROC индикаторов

💪Сила тренда TSI

Для измерения силы тренда создадим индикатор по шагам:

  1. Получим абсолютные значения изменения цены за короткий период (например, 10 дней).
  2. Получим ATR за короткий период.
  3. Получим историю соотношений изменений цены к ATR.
  4. Дважды сгладим полученные значения на короткий и длинный (например, 50 дней) периоды.

Наиболее сильный тренд, это когда изменение цены больше значения ATR за один и тот же период. Убедительное изменение цены при низкой волатильности, по логике, должны привести к успеху. Формула:

ratio=\frac{abs(close-close[-10])}{ATR(10)}

TSI=SMA(SMA(ratio, 10), 50) - 1

Значения TSI всегда положительные. Для наглядности графика мы умножим эти значения на знак положения ROC(200):

Если приглядеться, то на графике видно, что периоды сильного роста сопровождаются значением TSI более 0.5 (пунктирная линия). Но так ли это на самом деле?

🔬Немножко анализа

Попробуем быстренько посмотреть, какое значение TSI для NASDAQ:QQQ является наиболее удачным исторически. Да и вообще, есть ли такое значение? Для этого проверим TSI выше определённого значения и соберём некоторые показатели. Таблица:

  • TSI — значение силы тренда.
  • Growth Days — количество растущих дней в выборке.
  • Total Trend — количество дней с силой тренда выше выбранного значения.
  • Ratio — отношение растущих дней к продолжительности тренда.
  • Tradable — процент дней удержания позиций ко всей истории.
  • TSI Change — сумма абсолютных изменений цены за время сильного тренда.
  • ROC/s.ROC(200) Change — сумма абсолютных изменений цены за бычий тренд по обоим ROC(200).
  • Total Change — сумма абсолютных изменений цены за всё время.

Таблица наглядно показала, что со сглаженным значением s.ROC(200) мы промахнулись. Итог хуже простого удержания.

А вот сам по себе ROC(200) показывает лучшие результаты, хоть и хуже SMA(200). Значение Ratio находящееся чуть выше 50% говорит о слабом преимуществе.

Ниже графики зависимости некоторых показателей от TSI:

На графиках видно, что обогнать ROC(200) сам по себе мы не сумели, но сохранили доходность сократив время удержания. Так для TSI>=0.4 мы можем находиться в рынке 58% времени и получить доходность всего на ~5% ниже ROC. Гипотетически.

🏁Вывод

Это поверхностный анализ и результаты стоит проверить в торговых стратегиях, чем мы и займёмся на следующей неделе. Сделаем тест ROC(200) против «купи и держи».

💬В комментариях пишите, ваши вопросы по индикатору и наблюдениям. Запрашивайте код. Также можете написать ваши соображения, почему всё получилось именно так.

Александр Румянцев
Автор Quantrum.me
Telegram-канал📣: @quantiki

Подбор и тестирование портфелей. Подключение стратегий к IB.
🎓 Учимся торговать внутри дня с профессионалами👍.