Блог им. uralpro

Использование CART в предсказании направления рынка

    • 21 апреля 2015, 10:19
    • |
    • uralpro
  • Еще

tree

Интересный подход к предсказанию направления  рынка рассмотрен в статье "Using CART for Stock Market Forecasting". Для того, чтобы предугадать движение цены на недельном отрезке используется техника под названием CART (Classification And Regression Trees) — построение классификационного графа (дерева) с целью предсказать значение  целевой характеристики (цены) на основании набора объясняющих переменных. CART находит применение во многих областях науки и техники, но применим и в торговле, так как обладает набором свойств, хорошо подходящими для этой цели:

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

Для построения дерева автор использует библиотеку языка R, вычисляющую рекурсивное разделение (Recursive Partitioning) rpart.

Исходные данные для тестирования алгоритма взяты следующие: цены наиболее ликвидных американских ETF с января 2000 до декабря 2013 года. Обучающий период (in-sample) — с 2000 по 2010 год, остальной период — проверочный (out-of-sample).

В качестве целевой переменной берется предсказание цены на 1 неделю, которая может принимать два состояния — ВВЕРХ, если цена за неделю выросла, и ВНИЗ, если цена за неделю упала.

В качестве объясняющих переменных взяты следующие показатели, принимающие только два значения:

  • Волатильность (VAR1). Высокая волатильность обычно свойственна падающим рынкам, низкая — растущим. Данная переменная основана на значении индикатора ATR в сравнении с его скользящей средней MA с периодом 20 дней. Если ATR>MA, VAR1=1, если ATR<MA, VAR1=-1.
  • Короткий ценовой импульс (VAR2). Здесь значение цены актива сравнивается с ее простой скользящей средней SMА с периодом 5 дней. Если цена>SMA, VAR2=1, иначе VAR2=-1.
  • Длинный ценовой импульс (VAR3). Для этой переменной период SMA берется равным 50 дням. Если цена>SMA, VAR3=1, иначе VAR3=-1.
  • Разворот (VAR4). В данном случае используется значение индикатора CRTDR (Close Relative To Daily Range), который вычисляется так:CRTDR=Close−Low/(High−Low), где Close — цена закрытия дня, High — максимальная цена дня, Low — минимальная цена дня. Если CRTDR>0.5, VAR4=1, иначе VAR4=-1.
  • Режим автокорелляции (VAR5). Рынку свойственны два режима автокорелляции приращений цены. В одном из них автокорелляция положительна, в другом отрицательна. Если автокорелляция приращений за последние 5 дней больше 0, то VAR5=1, иначе VAR5=-1.

В результате работы вышеуказанной программы на языке R автор получает множество деревьев CART, одно из которых показано на рисунке в заглавии поста. Проследим на нем путь к узлу 4: VAR3>=0 (длинный ценовой импульс больше или равен 0) и VAR4>=0 (индикатор CRTDR>0.5). Красный четырехугольник в конце пути означает предсказание падения цены с вероятностью 58 % (1 — 0.42), или, другими словами, вероятность роста цены в следующую неделю равна 42%. 18% в четырехугольнике означает долю из обучающей выборки, предсказавшую данный исход.

Так как было получено много деревьев, автор составил из них «матрицу правил», сгруппировав ее по предсказаниям ВВЕРХ и ВНИЗ.  В связи с тем, что разные правила могли давать разные предсказания на одну и ту же точку (неделю), то была сформирована система баллов по такому принципу: когда правило давало предсказание ВВЕРХ, ему присваивался балл +1, если вниз, то -1, затем баллы складывались. Если в результате сумма была больше 0, то алгоритм входил в длинную позицию, если меньше 0 — в короткую, если равнялась 0 — оставался вне рынка.

В ходе тестирования были получены результаты по самым ликвидным ETF, отображенные на графике ниже, в сравнении с результатами стратегии купил-и-держи (красная линия):

etfOOSPerf

Автор счел такие показатели прибыльности весьма обнадеживающими и предложил способы улучшения качества алгоритма:

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

P.S. Более подробные сведения о технике CART, можете найти здесь. О библиотеке языка R rpartздесь.

Другие стратегии, применяемые в алгоритмической торговле и биржевых роботах смотрите в моем блоге и на сайте.

★29
15 комментариев
понятия «предсказание» или «предугадание» направления рынка — как-то не очень...
avatar
Маршал Денис, а вы как бы хотели — точное знание? Ну разве только инсайдер такую статью может написать-)
avatar
очередной квази программист, пищущий и продающий книжки.
Профессор Преображенский, вы это о ком?
avatar
uralpro, об авторе статье в оригинале.
Профессор Преображенский, я просто не нашел о нем подробных сведений, и о его книжках тоже не в курсе
avatar
uralpro, плохо искали
Профессор Преображенский, спасибо за сведения
avatar
Все верно — подгонять и оптимизировать можно даже сложные модели.
avatar
Отличная статья!
avatar
Это вам невася..))
avatar
кто-нибудь использует cnn сети в своей работе?
есть одна идейка сканера accumulation/distribution фаз по стокам и др инструментам
avatar
очень большая вероятность подгонки под историю.
5 параметров.
С тем же успехом можно написать любой алгоритм используя эти параметры и пустить его на оптимизацию. Результаты думаю будут не хуже.
avatar
Вопрос, а Секрет дал оценку роботу который получил бесплатно? Вроде тогда было обещание в комментариях…
avatar
Boris Rydichev, нет, пока ничего не слышно
avatar

теги блога uralpro

....все тэги



UPDONW
Новый дизайн