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

 

Лучший комментарий года: "Казино с Блэком и Шоулзом!"

 
mytarmailS #:
Нет немогу, сразу бы так и сделал если б мог.

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

Я писал про паттерны, которых, как я понимаю, относительно не так много. Из них можно сделать выборку.

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

Впрочем CatBoost так же умеет брать часть предикторов для каждого дерева - деревьев больше, но памяти для построения меньше требуется.

А вообще - проверьте на похожесть предикторы - может там их на порядок можно сократить...

 
mytarmailS #:
Финю пишешь 


покажи (хоть ссылку дай) нам нефигню - стандартный зигзаг

 
Maxim Kuznetsov #:


покажи (хоть ссылку дай) нам нефигню - стандартный зигзаг

Вот есть правило "если, то". 

Если цена ниже и если там что-то ещё - отрисовка линии до нового экстремума. 


Как это можно трактовать "по-разному"?

 
mytarmailS #:
Нет немогу, сразу бы так и сделал если б мог.

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

Признаки коррелированы?

 
СанСаныч Фоменко #:

Признаки коррелированы?

Нет, естественно 
 

Всех приветствую!


У меня такая мысль. Допустим, имеется торговая система, которая выставляет ЛО на покупку и продажу в некотором расстоянии от мидпрайса, образуя спред. Эта же система при наборе позиции сдвигает корридор так, чтобы не застревать в позиции, таким образом управляя рисокм. Торговая система основана на идеях Avellaneda and Stoikov и их Optimal Market Maker. То есть, для определения расстояния используется логика этой системы: оценивается показатель trading intensity и на основании его и некоторых изначальных параметров (gamma, delta), определяется насколько широко мы котируем и насколько сильно боимся застрять в позиции. 

Проблема в том, что в mean reversing режиме система работает хорошо, а при сильных трендах она начинает лузать: набирает позицию не в нужную сторону изменения мидпрайса, за счет чего происходит просадка. Ну, то есть проблема классическая для подобного рода торговой системы. 

Почитав про meta labeling и схожие фишки, а так же статьи  @Maxim Dmitrievsky мне пришла в голову такая мысль: а что, если подбор параметров системы задавать не единожды путем оптимизации (используя генетические алгоритмы либо поиск по сетке), а менять их подстраивясь под рынок? То есть, для определенных условий рынка, при которых нет трендов, можно котировать плотнее к мидпрайса. Для других лучше вставать пошире. По идее, это должна модель сама по себе уметь делать, но она следит только за волатильностью и интенсивностью торговли (насколько глубоко от мидпрайса в книге происходят маркет ордеры, типа как глубоко книга проедается). Она не видит волатильность в более коротком окне, под волатильность подстраивается линейно, не видит других вещей происходящих на рынке. Идея в том, что обогатить модель моделью машинного обучения, которая смотрит немного шире и тюнит параметры изначальной модели, либо вообще стопает торговлю.

Я решил поступить следующим образом: Имеется бектестер, который очень близко к реальности близко протестировать торговую систему на куске данных. Я решил прогнать через бектестер 50-100 вариантов более-менее неплохих комбинаций параметров, собрать по ходу фичи и натренировать модель, которая, глядя на фичи и комбинации параметров, могла бы предсказывать, прибыльным будет отрезок времени на данных параметрах или нет.  Свои коеффициенты торговая система обновляет примерно раз в минуту. За эту минуту система успевает выставить до 600 ордеров по обеим сторонам и либо что-то заработать, либо что-то проиграть. Так вот за эту минуту я собираю фичи: коеффициенты основной логики, rsi, нормированный к мидпрайса vwap, объем и тому подобное, а так же заработанное бабло в долларах за эту минуту. Далее результаты прогона бектестера собираются в один большой датафрейм, в качестве зависимой переменной выбираем заработанный за минуту профит, данные сдвигаем на одну позицию, чтобы иметь возможность предсказывать исход торговли и тренируем модель RandomForestClassifier. НА test/train 80/20 accuracy score удается достичь в 95-97%. 

Модель используется следующим образом - в работающую торговую систему (лайв или в бектестере) подставляется модель и мы накапливаем фичи, а так же имеем массив с возможными вариантами комбинаций параметров для торговой системы. Чтобы решить, какие параметры использовать следующую минуту, мы прогоняем через модель текущие фичи описывающие рынок, а так же комбинации параметров и смотрим, на какой комбинации при текущих рыночных фичах получаем наибольшую вероятность получения профита с положительным знаком (всего два class labes - 0,1). Если такой комбинации не найдено, то просто не торгуем следующую минуту. Если нашли, то торгуем на оптимальных с точки зрения модели параметрах. 


In Sample данная идея сильно улучшает показатели торговли. Резко возрастает Шарп, падает просадки. OOS немного всё разваливается. Возможно, дело в том, что мне нужно накопить больше данных для тренировки модели, но так как это по сути HFT и данные начинают весить гигабайты уже на десятке дней, это становится немного проблематично.

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


У меня просьба покритиковать затею, хоть закидать помидорами. Если есть что подсказать конструктивное - вообще здорово. Может, кто-то что-то уже делал подобное? В правильное направление смотрю вообще?

 
Arty G #:

Всех приветствую!

У меня просьба покритиковать затею, хоть закидать помидорами. Если есть что подсказать конструктивное - вообще здорово. Может, кто-то что-то уже делал подобное? В правильное направление смотрю вообще?

Насколько понял, нужно найти такие режимы рынка, в которых эта ТС работает хорошо. Например, режимы можно определять по волатильности.

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

 
Arty G #:

Проблема в том, что в mean reversing режиме система работает хорошо, а при сильных трендах она начинает лузать: набирает позицию не в нужную сторону изменения мидпрайса, за счет чего происходит просадка. Ну, то есть проблема классическая для подобного рода торговой системы. 

Здравствуйте. Почему не пробовать прогнозировать ожидание тренда? Или просто детектировать его, раз столь активная торговля? Или трендом считается сильное движение внутри минутного бара?

Arty G #:
Я решил прогнать через бектестер 50-100 вариантов более-менее неплохих комбинаций параметров, собрать по ходу фичи и натренировать модель, которая, глядя на фичи и комбинации параметров, могла бы предсказывать, прибыльным будет отрезок времени на данных параметрах или нет.

Не совсем понятно, какими предикторами вы описываете эти наборы параметров? Или у Вас мультиклассификатор?

Arty G #:
но так как это по сути HFT и данные начинают весить гигабайты уже на десятке дней, это становится немного проблематично.

Можете использовать квантование перед сохранением данных, что позволит перейти на тип данных uchar .

Попробуйте CatBoost - умеет работать с большими объёмами данных.

 
mytarmailS #:
Запустил поиск паттернов на бай, оставил комп на ночь, с утра будет резултат и сделаю бектест еще покупок

при переделке скрипта с селл на бай допустил опечатку...

всю ночь комп считал рандом! (((((((((((

мля..

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