Обсуждение статьи "Случайные леса предсказывают тренды"

 

Опубликована статья Случайные леса предсказывают тренды:

Изначально, целью построения торговой системы является предсказание поведения некоторого рыночного инструмента, например, валютной пары. Цели предсказания могут быть разными, мы же ограничимся предсказанием трендов, а точнее предсказанием роста («лонгов») или падения («шортов») значений котировки валютной пары.

Обычно, для решения проблемы предсказания трейдер берет график валютной пары, рисует некоторое количество индикаторов и пытается найти некоторую комбинацию – паттерн, который будет иметь предсказательную способность.

В данной статье рассмотрим автоматический выбор паттернов и их предварительную оценку с помощью пакета Rattle из системы статистического анализа R.

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

Rattle (the R Analytical Tool To Learn Easily) объединяет множество пакетов R, которые важны для построения торговых систем, но каждый по отдельности не легки для использования новичком. Понимание R не требуется, чтобы начать с Rattle. Но результатом работы с Rattle будет код на R, который может быть использован при построении реальной торговой системы. Но на этом этапе потребуется знание R.

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

Для построения целевой переменной использовался ZigZag с параметром «расстояние между разворотами», равным 0.0035 долларов. На рис. 1 представлен результат.

Рис.1. Индикатор ZigZag

Автор: СанСаныч Фоменко

 

первая мысль которая пришла при чтении статьи - "что за корявый перевод"

Посмотрел откуда автор - оказалось не перевод таки))

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

Ни чего плохого не хотел сказать, просто мысли в слух. Статья может быть и хорошая, может очень хорошая......

 

Заинтересовала сама идея (про random forest не знал). Искусственно навязанный инструмент. Хочу повторить без него - нечетко изложено, что именно делалось, какие векторы данных применяются. Параметры зигзага опущены. Целевая аудитория - пользователи пакета Rattle? Или пишущие на языке R? Без их изучения многие моменты статьи непонятны. Выводы сумбурные - перспективно это направление или нет - из статьи не ясно. Можно было бы примеры торговли привести. Общее впечатление - как будто для своего узкого круга писалось.

PS. А при попытке открытия TC.Rdata из статьи выдается следующее:

Ошибка в sqrt(ncol(crs$dataset)) : 
  нечисловой аргумент для математической функции
Вдобавок: Предупреждение
In rm(crs) : объект 'crs' не найден
 
wmlab:
Заинтересовала сама идея (про random forest не знал). Искусственно навязанный инструмент. Хочу повторить без него - нечетко изложено, что именно делалось, какие векторы данных применяются. Параметры зигзага опущены. Целевая аудитория - пользователи пакета Rattle? Или пишущие на языке R? Без их изучения многие моменты статьи непонятны. Выводы сумбурные - перспективно это направление или нет - из статьи не ясно. Можно было бы примеры торговли привести. Общее впечатление - как будто для своего узкого круга писалось.

Что-то у вас сплошные придирки. По-моему, вполне хорошо и доходчиво изложено.  Я например, не являясь математиком, вполне понял суть. За исключением некоторых моментов, которые нужно было объяснить поподробней.  Например, я не совсем понял термин "расщепление дерева", он там встречается несколько раз, и не совсем понятно, что конкретно понимается под ним.  А что касается выводов, какие выводы вам нужны?  "Вперёд! на баррикады"? По-моему, перспективность данного направления и так очевидна.  Я, например, после прочтения осознал, что занимаюсь изобретением велосипеда, пытаюсь сам придумывать аналогичные алгоритмы вместо того, чтобы использовать уже готовое решение.   Как я понял, основная задумка была - популяризировать пакет R среди любителей, интересующихся статистикой (но не для "чайников").  И вполне неплохо получилось, на мой взгляд.

 
wmlab:

Заинтересовала сама идея (про random forest не знал). Искусственно навязанный инструмент. Хочу повторить без него - нечетко изложено, что именно делалось, какие векторы данных применяются. Параметры зигзага опущены. Целевая аудитория - пользователи пакета Rattle? Или пишущие на языке R? Без их изучения многие моменты статьи непонятны. Выводы сумбурные - перспективно это направление или нет - из статьи не ясно. Можно было бы примеры торговли привести. Общее впечатление - как будто для своего узкого круга писалось.

PS. А при попытке открытия TC.Rdata из статьи выдается следующее:

Целевая аудитория - пользователи пакета Rattle? Или пишущие на языке R? Без их изучения многие моменты статьи непонятны. 

При использовании Rattle я выделяю две целевых аудитории:

Не подготовленные в R пользователи, которые могут составить свой входной .csv файл и создать и оценить результаты 6 моделей, а не только случайных лесов. Основная проблема не в моделе,а в исходных данных модели. Если удалось подобрать исходные данные, то затем можно и заказать программирование. Главное идея, а техника программирования можно и приложить

 PS. А при попытке открытия TC.Rdata из статьи выдается следующее:

Перепроверил, все нормально. последовательность действия следующая:

  • запуcкаем R
  • вкладка  \Файл\загрузить рабочее пространство
  • далее ищем файл TC.RData из распакованного архива. 
  • Запускаем Rattle
  • вкладка Data\R Dataset
  • в выпадающем меню ищем в окне  Data Name имя TC
  • Нажимаем "Выполнить"

 Получаем перечень интересующих Вас векторов.

Другая аудитория - подготовленные пользователи. Rattle достаточно удобный инструмент для подбора исходных данных для модели.  Основное время при построение торговых систем тратится именно на подбор исходных данных - самый неопределенный участок работы. Вот здесь Rattle очень полезен. Очень быстро можно получить конечную оценку, не особенно вникая в очень сложные конструкции математических моделей.

Удачи, готов продолжить разъяснения 

 
meat:

Что-то у вас сплошные придирки. По-моему, вполне хорошо и доходчиво изложено.  Я например, не являясь математиком, вполне понял суть. За исключением некоторых моментов, которые нужно было объяснить поподробней.  Например, я не совсем понял термин "расщепление дерева", он там встречается несколько раз, и не совсем понятно, что конкретно понимается под ним.  А что касается выводов, какие выводы вам нужны?  "Вперёд! на баррикады"? По-моему, перспективность данного направления и так очевидна.  Я, например, после прочтения осознал, что занимаюсь изобретением велосипеда, пытаюсь сам придумывать аналогичные алгоритмы вместо того, чтобы использовать уже готовое решение.   Как я понял, основная задумка была - популяризировать пакет R среди любителей, интересующихся статистикой (но не для "чайников").  И вполне неплохо получилось, на мой взгляд.

Например, я не совсем понял термин "расщепление дерева"

Берем корень дерева - он вверху.

Делим корень проводим из корня две линии - расщепление корня, далее это же действие на каждом уровне.

В каждом узле дерева проверяется какое-либо условие, сформулированное алгоритмом. Например, если eurusd > 1.35, то идти по левой ветке, в противно по правой.

Таких деревьев алгоритм избыточно сформировал 500 штук. Условий должно быть под 10000.

Далее. По приходу значений всех предикторов - одно значение каждого предиктора - всего у меня 88 штук, сравниваются с деревьями и принимается решение, что этот конкретных набор 88 значений влечет лонг или шорт. Т.е. некоторый аналог паттерна, только очень много.  

 
faa1947:

Перепроверил, все нормально. последовательность действия следующая:

  • запуcкаем R
  • вкладка  \Файл\загрузить рабочее пространство
  • далее ищем файл TC.RData из распакованного архива. 
  • Запускаем Rattle
  • вкладка Data\R Dataset
  • в выпадающем меню ищем в окне  Data Name имя TC
  • Нажимаем "Выполнить"

 Получаем перечень интересующих Вас векторов. 

Спасибо! Вот теперь ясно стало.

Не могли бы Вы пояснить суть этих векторов: ZZ.75, ZZ.35?
Что за вектора *.dif1, *.dif2, *.dif3? Приращения? Чего относительно чего?
Вектора eur, gbp и т.п. - что это?

И глобальный вопрос - почему добавлены данные от индикаторов? Разве это не то же самое, что [x, f1(x), f2(x)]? Я намекаю на избыточность. Не пробовали ли Вы просто подавать приращения закрытий?

Заранее спасибо за ответы. 

 
wmlab:

Спасибо! Вот теперь ясно стало.

Не могли бы Вы пояснить суть этих векторов: ZZ.75, ZZ.35?
Что за вектора *.dif1, *.dif2, *.dif3? Приращения? Чего относительно чего?
Вектора eur, gbp и т.п. - что это?

И глобальный вопрос - почему добавлены данные от индикаторов? Разве это не то же самое, что [x, f1(x), f2(x)]? Я намекаю на избыточность. Не пробовали ли Вы просто подавать приращения закрытий?

Заранее спасибо за ответы. 

Не могли бы Вы пояснить суть этих векторов: ZZ.75, ZZ.35?

Это ЗЗ с минимальным расстоянием между разворотами 75 пипсов и 35. Из ЗЗю35 получена целевая переменная  TREND. Эти переменные в модели использовать нельзя - заглядывание в Будущее.

 

 Что за вектора *.dif1, *.dif2, *.dif3? Приращения? Чего относительно чего?

Приращение к предыдущему бару, предыдущему предыдущего (-2) и (-3) бару.  Идея - учесть тренды.

 

 Вектора eur, gbp и т.п. - что это?

Котиры eurusd, gbpusd - первые символы.

 

 Я намекаю на избыточность. Не пробовали ли Вы просто подавать приращения закрытий?

Много чего пробовал. Статья - демонстрация возможностей и заодно избыточность, что каждый мог отобрать под свои идеи и попробовать. Отбор делается очень просто - переменная помечается как Ignore.  

 

Поздравляю со статьей СанСаныч!

Конечно на R это было бы более компактно, но для начала наверное нужно начать с этого. 

Заканчиваю статью по "Глубокому" обучению. С Вашими данными попробуем сравнить результат.

Удачи 

 

Посмотрел внимательно набор данных- не годится. Котировки нужно выбросить. Т.е. первые 48 переменных убираем. Остается набор данных с 42 входными и одной целевой.

Ну  это дело хозяйское, каждый выбирает по своему вкусу, опыту и т.п. Но есть одно замечание по модели. "RandomForest" тем и замечателен, что ему не требуется препроцессинг, никакой. Он чудесно принимает сырые данные. 

Иначе конечно статья очень полезна.

 
vlad1949:

Поздравляю со статьей СанСаныч!

Конечно на R это было бы более компактно, но для начала наверное нужно начать с этого. 

Заканчиваю статью по "Глубокому" обучению. С Вашими данными попробуем сравнить результат.

Удачи 

Очень было бы хорошо повторить ту Вашу ветку здесь. 

Очень полезный был материал. 

Причина обращения: