Машинное обучение в трейдинге: теория, модели, практика и алготорговля

Alexey Burnakov  

Добрый день всем,

 

Знаю, что есть на форуме энтузиасты machine learning и статистики. Предлагаю в этой теме обсуждать (без холиваров), делиться и обогащать собственную копилку знаний в этой интересной сфере.

 Для новичков и не только есть хороший теоретичекий ресурс на русском языке: https://www.machinelearning.ru/

 Небольшой обзор литературы по методам на тему отбора информативных признаков: https://habrahabr.ru/post/264915/

 

Предлагаю задачу номер один. Позже выложу ее решение. СанСаныч ее уже видел, прошу не говорить ответ.

 

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

 

Во вложении архив с искуственным набором данных формата csv, который сделал я.

 Данные содержат 20 переменных с префиксом input_, и одну крайнуюю правую переменную output.

 

Переменная output зависит от некоторого поднабора переменных input (поднабор может содержать от 1 до 20 inputs).

Задача: с помощью любых методов (машинного обучения) отобрать переменные input, с помощью которых можно определить состояние переменной output на существующих данных. 

 

Решение можно выложить здесь в виде: input_2, input_19, input_5 (пример). И можно также описать найденную зависимость входов и выходной переменной. 

Кто справится, тот молодец ) С меня готовое решение и объяснение.

 

Алексей 

Файлы:
Alexey Burnakov  

Deus Ex Machina.

 

Такими словами открывают перед читателем свои страницы многолетние тома философских трактатов.

 

Ну, и, никто не хочет машин лёрнинг заниматься? 

[Удален]  
Alexey Burnakov:

Deus Ex Machina.

 

Такими словами открывают перед читателем свои страницы многолетние тома философских трактатов.

 

Ну, и, никто не хочет машин лёрнинг заниматься? 

Каждая сделка имеет риск и другие условия, машинное обучение использует старые данные то есть оперирует к тому что не существует. 
Alexey Burnakov  
yerlan Imangeldinov:
Каждая сделка имеет риск и другие условия, машинное обучение использует старые данные то есть оперирует к тому что не существует. 

Точнее, к тому, что было раньше.

И в этом ищет устойчивую зависимость.

Мы их и ищем. 

[Удален]  
Alexey Burnakov:

Точнее, к тому, что было раньше.

И в этом ищет устойчивую зависимость.

Мы их и ищем. 

В этом и есть слабость что рынок учиться через функцию Сороса старье лучше не использовать. 
Dmitry Fedoseev  
yerlan Imangeldinov:
Каждая сделка имеет риск и другие условия, машинное обучение использует старые данные то есть оперирует к тому что не существует. 
А у вас есть новые данные? Значит, надо понимать вас так, что вы даже и на график не смотрите, там же старые данные? Да?
Alexey Burnakov  
Dmitry Fedoseev:
А у вас есть новые данные? Значит, надо понимать вас так, что вы даже и на график не смотрите, там же старые данные? Да?
С языка сняли.
Alexey Burnakov  

В общем, так. Чтобы немного подстегнуть тему, я обещаю перевести 5 кредитов тому, кто правильно решит поставленную задачку.

Выдать набор информативных входов.

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

 

Алексей 

Vladimir Perervenko  

Заявленная тема "Машинное обучение" важна, сложна и огромна. Судя по первому посту Вы хотите начать с одного из подготовительных и важных этапов - "Оценка и выбор предикторов". Что Вы хотите решить или показать с приведенной задачей? Новый метод, способ или что?

Содержание и тема топика не совпадают.

Конкретизируйте цель, может и будут заинтересованные люди.

Мало кто имеет свободное время для решения задач с непонятными целями.

Удачи

СанСаныч Фоменко  
yerlan Imangeldinov:
Каждая сделка имеет риск и другие условия, машинное обучение использует старые данные то есть оперирует к тому что не существует. 

Всегда учимся на прошлом.

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

А если задачу поставить так:

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

2. А годятся ли у нас те исходные данные, на которых мы автоматически ищем такие фигуры - паттерны.

Для ответа на первый вопрос рассмотрим алгоритм, который называется "лес случайных деревьев" - random forest. Алгоритм в качестве исходных данных для своей работы берет котировку одной или нескольких валют, индикаторы, приращения цен - все, что напридумывал человек. 10-5-100-200 ... входных переменных. Затем берет весь набор значений переменных, относящихся к одному моменту времени, соответствующих одному бару и ищет такую комбинацию этих входных переменных, которая бы соответствовала на исторических данных вполне определенному результату, например, ордеру BUY. А другой набор комбинаций другому ордеру - SELL. Каждому такому набору соответствует отдельное дерево. Опыт показывает, что для входного набора часовика из 18000 баров (около 3-х лет) алгоритм находит 200-300 деревьев. Это и есть набор паттернов, почти аналоги "голов и плеч", и целых рот солдатов.

Проблема в этом алгоритме состоит в том, что такие деревья могут ухватить некоторую конкретику, которая не встретится в будущем. Это называется здесь на форуме "сверхподгонка", в машинном обучении "переобучение".  Известно, что весь большой набор исходных переменных можно поделить на две части: относящиеся к выходной переменной и не имеющие отношение шум. Вот Бурнаков и пытается отсеять те, которые не имеют отношения к результату.

 

ПС.

При построении трендовых ТС (BUY, SELL) любые разновидности машек относятся к шуму! 

Alexey Burnakov  
Vladimir Perervenko:

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

Содержание и тема топика не совпадают.

Конкретизируйте цель, может и будут заинтересованные люди.

Мало кто имеет свободное время для решения задач с непонятными целями.


Ок.

Если кто-решит или хотя приблизиться к верному решению (то есть, тему будет жива), то я:

выложу правильное решение - алгоритм генерации набора данных

объясню, почему ряд других алгоритмов "Оценки и выбора предикторов" не справились

выложу свой метод, который робастно и чувствительно решает похожие задачи - выдам теорию и выложу код на R. 

Это сделано для взаимного обогащения "понималки" задач машинного обучения. 

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