Блог им. uralpro
Интересный подход к предсказанию направления рынка рассмотрен в статье "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 неделю, которая может принимать два состояния — ВВЕРХ, если цена за неделю выросла, и ВНИЗ, если цена за неделю упала.
В качестве объясняющих переменных взяты следующие показатели, принимающие только два значения:
В результате работы вышеуказанной программы на языке R автор получает множество деревьев CART, одно из которых показано на рисунке в заглавии поста. Проследим на нем путь к узлу 4: VAR3>=0 (длинный ценовой импульс больше или равен 0) и VAR4>=0 (индикатор CRTDR>0.5). Красный четырехугольник в конце пути означает предсказание падения цены с вероятностью 58 % (1 — 0.42), или, другими словами, вероятность роста цены в следующую неделю равна 42%. 18% в четырехугольнике означает долю из обучающей выборки, предсказавшую данный исход.
Так как было получено много деревьев, автор составил из них «матрицу правил», сгруппировав ее по предсказаниям ВВЕРХ и ВНИЗ. В связи с тем, что разные правила могли давать разные предсказания на одну и ту же точку (неделю), то была сформирована система баллов по такому принципу: когда правило давало предсказание ВВЕРХ, ему присваивался балл +1, если вниз, то -1, затем баллы складывались. Если в результате сумма была больше 0, то алгоритм входил в длинную позицию, если меньше 0 — в короткую, если равнялась 0 — оставался вне рынка.
В ходе тестирования были получены результаты по самым ликвидным ETF, отображенные на графике ниже, в сравнении с результатами стратегии купил-и-держи (красная линия):
Автор счел такие показатели прибыльности весьма обнадеживающими и предложил способы улучшения качества алгоритма:
P.S. Более подробные сведения о технике CART, можете найти здесь. О библиотеке языка R rpart — здесь.
Другие стратегии, применяемые в алгоритмической торговле и биржевых роботах смотрите в моем блоге и на сайте.
есть одна идейка сканера accumulation/distribution фаз по стокам и др инструментам
5 параметров.
С тем же успехом можно написать любой алгоритм используя эти параметры и пустить его на оптимизацию. Результаты думаю будут не хуже.