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

 
Aleksey Nikolayev #:

Вроде логлосс выводится на основе принципа максимума правдоподобия для биномиального распределения. В матстате принцип максимума правдоподобия расширяется и обобщается в виде М-оценок, что может быть некоторым теоретическим обоснованием для экспериментов (но не гарантией их успеха, конечно).

Перепутал с кросс-энтропией наверное, но она чаще для мультикласса используется. В любом случае, не вижу проблемы сделать дополнительную оценку через свою любую ф-ю, но уже чисто от графика баланса
 
Maxim Dmitrievsky #:
Перепутал с кросс-энтропией наверное, но она чаще для мультикласса используется.

Там вроде что-то такое, что теоретическое значение минимума логлосса совпадает с энтропией.

Maxim Dmitrievsky #:
В любом случае, не вижу проблемы сделать дополнительную оценку через свою любую ф-ю, но уже чисто от графика баланса

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

 
Aleksey Nikolayev #:

Там вроде что-то такое, что теоретическое значение минимума логлосса совпадает с энтропией.

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

У Прадо на эту тему много интересного, на сайте его статьи. Отложил в долгий ящик, но с удовольствием почитаю позже. Один из наиболее вменяемых авторов )
 
Maxim Dmitrievsky #:
У Прадо на эту тему много интересного, на сайте его статьи. Отложил в долгий ящик, но с удовольствием почитаю позже. Один из наиболее вменяемых авторов )

Да, надо посмотреть его статьи. Немало их у него, однако)

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

 
Renat Fatkhullin #:
Можете поделиться информацией:
1) Используете ли питон библиотеку МТ5?
2) Используете снаружи или внутри МТ5
3) Каких функций в библиотеке не достает? Доступа к индикаторам?

Мы готовим апгрейд MQL5 с добавлением быстрых матричных операций. Это позволит штатно проводить массивные вычисления.

Далее будем развивать коннекторы к аналитическим пакетам и вводить штатную интеграцию WinML.

1. Иногда.

2. Внутри, снаружи.

3.

3.1. Подписки на события. Чтобы те же события, что и в MQL5 триггерили определенные методы-обработчики.

3.2. Возможность на питоне писать стратегии (как тип приложения) чтобы можно было в бэктестере прогнать.

3.3. Какого-то готового механизма взаимодействия MQL5-Python. Python умеет взаимодействовать с mt5 в обе стороны, MQL5 умеет в обе стороны, MQL5 - единое целое с терминалом и отлично умеет

с торговыми функциями и аналогичным работать, но не умеет удобно работать с отраслевыми топовыми решениями в области дата-саенса. Python - отраслевой стандарт в дата-саенсе - pandas, numpy, TensorFlow, Keras, PyTorch и т.д., но гораздо меньше "трейдерская" интеграция в платформу. Было бы круто иметь стандартные средства интеграции этих двух силищ - что-то типа вешаешь скрипт на Python в mt5, а в скрипте модель ждет, под паром стоит, или пул моделей, функции, занимающиеся предобработкой данных и т.д. И есть MQL5 приложение, стратегия, которая свою работу делает, а когда надо к ML функциональности из этого скрипта обращается - быстро и без костылей.

 

Кто то использует Р пакет для бектеста стратегий Quantstrat ?

Как он по скорости?

 
Aleksey Nikolayev #:

Честно говоря, мало что понял. Вопрос о том, что меняется ли вероятность со временем? Для изучения этого можно просто построить логистическую регрессию по времени (и проверить значимость отличия коэффициента от нуля).

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

elibrarius #:

А может проще сделать еще один предиктор - удаленность строки данных от текущего. Лес сам может вычислить, что данные старше 8 месяцев плохо влияют на текущий прогноз. И будет простой сплит: до 8 месяце (с листьями получше) и после 8 месяцев с листьями похуже.
Ну на трейне они все конечно хорошо обучатся. На тесте/кроссвалидации надо проверять. Только как? Непонятно. Это даже не значимость предиктора, а значимость сплита.

Сегодня добавил такой предиктор удаленности  от текущего бара. Можно номер или просто время. Я взял время.

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

Предположение о том, что добавление предиктора удаленности от первой строки данных поможет, - оказалось неверным. На практике форвард только ухудшился и с 1 месяцем данных, и с 2, и с 10.

Предположим, что подали данные длиной 2 месяца, дерево нашло сплит в 1 месяц и одна его ветвь обучилась на тех же данных, что  и экспериментально подобранная длина истории в 1 месяц. А другой месяц тоже обучился на своих данных. И обучился хорошо, а не плохо (о чем предположил вначале). Плохим он будет для форварда, а на трейне он просто заучится. В результате модель усредняет результаты по обоим месяцам и форвард получается хуже, чем если бы обучался только на 1 месяце.

Вывод: глобальное время или номер строки подавать нельзя. Циклические варианты времени: номер дня недели, часа, минуты может и полезны - нужно проверять.
Длину истории для обучения под каждую целевую(и/или набор предикторов) придется подбирать/оптимизировать.

 

Проверил "Циклические варианты времени: номер дня недели, часа, минуты может и полезны - нужно проверять."

Минуты почти не влияют, изменения не более 0,5%
Часы и дни недели влияют. Изменения около 3-5%.

Строю одновременно 2 модели: 1 на бай, 2-ю на селл.
Модели на бай лучше работают без времени на 4-5%, а на селл лучше с временем на те же 4-5%. Типа 5% продают по расписанию, а покупают по другим принципам.

 
elibrarius #:

Сегодня добавил такой предиктор удаленности  от текущего бара. Можно номер или просто время. Я взял время.

С циклическим временем всё более-менее понятно. Не очень понятно с линейным - оно же будет для трейна и форварда лежать в разных промежутках? Или "текущий бар" берётся свой для каждой выборки?

У меня была идея просто взять обычную линейную логистическую регрессию и смотреть значимость отличия от нуля коэффициента при времени (или при какой-нибудь функции от времени) или сравнить эту значимость со значимостью для других предикторов.

 
Aleksey Nikolayev #:

С циклическим временем всё более-менее понятно. Не очень понятно с линейным - оно же будет для трейна и форварда лежать в разных промежутках? Или "текущий бар" берётся свой для каждой выборки?

У меня была идея просто взять обычную линейную логистическую регрессию и смотреть значимость отличия от нуля коэффициента при времени (или при какой-нибудь функции от времени) или сравнить эту значимость со значимостью для других предикторов.

В общем идея подать линейное время - плохая. Кстати, да: на трейне оно в каждой строке разное и на форварде мы анализируем только 1 строку за раз, т.е. время будет всегда текущим (которого не было в трейне), а номер всегда = 0 (а в трейне от 0 до 5000). Т.е. ни время ни номер строки подавать нельзя. Что тест и показал.
Причина обращения: