Индикатор KST и другие приключения с ROC

В этот раз повторим на Python🐍 индикатор KST (Know Sure Thing), созданный Мартином Прингом. Если вы подписаны на StockCharts.com, то вы получаете платную рассылку обзоров рынка от Джона Мэрфи и Мартина Принга. Принг в своих анализах постоянно ссылается на свой индикатор KST. И у него всегда всё складно и точно совпадает.

Я же в бессонных😴 поисках граалей🏆 решил повторить индикатор KST и провести коротенький анализ за предыдущие 14 лет.

Также покрутим ROC (Rate-of-Change) и попробуем выжать из него ещё немного идей. Но всё по порядку.

📈 KST

Индикатор KST (Know Sure Thing) (пер. Знать наверняка) был представлен в далёком 1992 году и активно используется автором по сей день. Состоит KST из четырёх индикаторов ROC разных периодов, сглаженных простой скользящей средней. Конечное значение получается суммированием полученных величин, умноженных на свои веса. Чем больше период ROC, тем больше вес. Сигнальная линия получается сглаживанием KST 9-дневной скользящей средней. Формула:

roc_1=SMA(ROC(10), 10)
roc_2=SMA(ROC(15), 10)
roc_3=SMA(ROC(20), 10)
roc_4=SMA(ROC(30), 15)

KST=1*roc_1+2*roc_2+3*roc_3+4*roc_4
KSTsignal=SMA(KST, 9)

На графике это выглядит так:

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

🔬Запускаем Quantopian

Протестируем индикатор KST и другие вариации на тему ROC:

  • Положение KST относительно нуля.
  • Положение KST над сигнальной линией.
  • Индикатор силы тренда TSI > 0.5 из этой статьи.
  • Положение ROC(5) сглаженного на SMA(200) над нулём. (Благодарю за подсказку в комментариях.)

Общие условия тестов:

  • Торгуем SPY.
  • Период: 2004-2018.
  • Проводим сделку за 1 час до закрытия рынка.
  • Капитал 100K.

Код условий:

Результаты на Quantopian:

  • Exposure — время нахождения в позициях.
  • Transactions — количество сделок, включая открытие и закрытие.

Как видим, для SPY лидером остаётся пересечение SMA(50) и SMA(200).

🐍Посмотрим на результаты в Jupyter

Эти же стратегии проверим в Jupyter без тестов, лишь расчётом. Так как это быстро, проверим другие ETF на основные индексы и секторы.

  • bench — бенчмарк, результат удержания актива в течение всего времени;
  • * dd — максимальная просадка при каждом условии;
  • kst — удержание при KST больше нуля;
  • kst_hist — удержания при KST выше сигнальной линии;
  • roc5_200 — удержание при ROC(5), сглаженном на SMA(200) выше нуля;
  • tsi — удержание при ROC(200) выше нуля и TSI выше 0,5;
  • s50x200 — пересечение SMA(50) и SMA(200).

🏁Вывод

Тесты показали, что KST работает хуже SMA(50) и SMA(200). Приятно удивил приличными результатами ROC(5), усреднённый за 200 дней. Все стратегии плохо себя проявляют в коррекциях за последние годы, когда идёт резкое падение и быстрый откуп. Все сглаженные индикаторы дают сигнал на продажу, когда актив уже растёт.

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

Александр Румянцев
Автор на Quantrum.me
Подписывайтесь на telegram-канал📣: @quantiki

Интересуетесь алготрейдингом на Python? Присоединяйтесь к команде.
📈 Участвуйте в IPO американских компаний c United Traders👍.

Исходные коды