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

 
Aleksey Vyazmikin:

так а потом в продакшене как предикторы эти обрабатываете для получения сигналов? все той же моделью?

 
Maxim Dmitrievsky:

так а потом в продакшене как предикторы эти обрабатываете для получения сигналов? все той же моделью?

До продакшена (реального использования для торговли) ещё далеко, но в планах спаривать модели и строить из них леса - следующий этап, но пока не соображу как автоматизировать этот процесс...

Предикторы в окончательной форме получаются в советнике, поэтому выбор их для использование не составляет труда.
 
Maxim Dmitrievsky:

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

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

последние 3 мес трень, остальное проработало аж до начала 2018, 15-минутки

сделать что-ли мониторинг и расслабиться.. хотя работы еще вагон. Причем ошибки детские, один из.. массивов не так повернул изначально (as series) и тренил все время на перевернутых фичах, бесясь что плохо учится.

Конечно, вопрос внедрения модели CatBoost'a в советник ещё открыт, с одной стороны там есть возможность выгрузить код на C++, который я совсем не понимаю, с другой стороны я вообще хочу получить данные по листам для корректировки модели, а для этих целей нужен интерпретатор, который сам я не напишу...

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

А ошибки - да, они встречаются у всех - была у меня смешная ошибка - забыл пометить целевую, что не обучалась в выборке для обучения как "не использовать" и пару минут был счастлив оценивая результаты :)

 
Aleksey Vyazmikin:

Сложно обсуждать, если не понимаешь сути кода...

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

В общем у меня получилось 9 групп - разбивал их по логике заложенной в предикторы, даже более обобщенна чем просто по логике. Получил 512 комбинаций групп, ниже на графике виден разброс финансового результата в зависимости от комбинации групп - для отбора использовал метрику "Precision", сет что и на днях - без изменения, целевая columns_100, дерево 4 уровня, итераций всего 1000 сделал.

На таблице показан результат всего сета со всеми предикторами - 1710 единиц, а так же максимальный - 3511 и минимальный - 607 результат.


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

Вот как выглядит аккумуляция показателей на графике

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



Из таблицы следует, что отключение 1, 8 и 9  группы оказывает хорошее влияние на улучшение финансового результата.

Посмотрим на комбинацию лучшего финансового результата



И теперь на комбинацию худшего результата 



В целом метод оценки сработал - в лучшем результате действительно присутствует не заблокированная группа 3,4,5,7 и заблокированы худшие, в то время как в худшем варианте ситуация почти зеркальная.

Вывод - данный подход имеет право на жизнь и может агрессивно выявить негативно влияющие группы предикторов.

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

Десятка лучших и худших комбинаций:

Ну и надо посмотреть, а что будет с другой целевой...

И вот ещё график - на нем четко видно. чем больше правильных решений (Proc_All - дельта правильных/неправильных решений относительно всех решений (нули и единицы в сумме)), тем больше прибыль, особенно, если это правильные входы на сделку (Proc_1_V02) относительно всех входов.


Просто жесть, читается легко, но смысл уловить не реально - игра слов или запредельная для меня фигура речи... плюсую предложение Максима по поводу статьи:)

По поводу связки советников с консолью питона, предлагал уже свой движок, который позволяет из MQL посылать и выполнять блоки Python кода в реалтайм, работает даже в тестере.

 
Ivan Negreshniy:

Просто жесть, читается легко, но смысл уловить не реально - игра слов или запредельная для меня фигура речи... плюсую предложение Максима по поводу статьи:)

По поводу связки советников с консолью питона, предлагал уже свой движок, который позволяет из MQL посылать и выполнять блоки Python кода в реалтайм, работает даже в тестере.

А говорите статью - если уж я простую мысль не могу выразить, то какая уж тут статья...

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

Задайте конкретный вопрос, если мое словоблудие не раскрывает смысл слов перед Вами.

 
Aleksey Vyazmikin:

А говорите статью - если уж я простую мысль не могу выразить, то какая уж тут статья...

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

Задайте конкретный вопрос, если мое словоблудие не раскрывает смысл слов перед Вами.

Беглое выражение мыслей в форуме и публикация статьи - это разные жанры.

Вот в этой ветке, сколько уже всего переговорено, а толку никакого и практических результатов нет.

А вопросы, тем более такие фундаментальные, как структура дерева, какой смысл тут обсуждать.

Лучше писать статьи и/или код - сравнивать эффективность моделей МО, используемых библиотек, тестировать и мониторить советников...

 
Ivan Negreshniy:

Беглое выражение мыслей в форуме и публикация статьи - это разные жанры.

Вот в этой ветке, сколько уже всего переговорено, а толку никакого и практических результатов нет.

А вопросы, тем более такие фундаментальные, как структура дерева, какой смысл тут обсуждать.

Лучше писать статьи и/или код - сравнивать эффективность моделей МО, используемых библиотек, тестировать и мониторить советников...

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

 

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

И возникла у меня идея, а что если не жадничать и считать хорошим результатом выбор в совокупности тех моделей, которые показывают результат выше средней прибыли из всех 512 моделей!? Решил искать, какой показатель из имеющихся сможет это реализовать лучшим способом. Методика простая, на тестовой выборке определяем среднее значение показателя, далее проверяем каждый вариант модели - если больше среднего значения то будет 1, а если меньше, то 0 (это я в экселе делал и промежуточные расчеты полезны бывают для понимания), далее то же самое проделываем с экзаменационной выборкой и сопоставляем показатели от обеих выборок между собой, таким образом получаем статистику, которая говорит о сохранности отнесения показателя к одной из групп (выше среднего значения или ниже). После я так же посмотрел, какую прибыль приносит каждый показатель на экзаменационной выборке, если делить тестовую выборку по принципу - больше среднего значения или меньше среднего значения, сохранил среднюю прибыль.

Получился интересный результат



Из таблицы видно, что отбор по прибыли (FinRez) дал самый плохой процент совпадений между двумя выборками, и более того, при фильтрации "ниже среднего значения" (столбец с цифрой "0") в эту группу попали в большей части прибыльные модели на экзаменационной выборке, нежели в ту группу, что показывала результат на тесте выше среднего. Если подумать, то это разумно, ведь обучение ведется по классификации, а не регрессии, и если у меня задан тейк профит в стратегии, то стоп лосс плавающий, что будет искажать результаты при даже одинаковом числе правильно классифицированных сигналов. Если взглянуть на другие показатели, то их прогностичность куда на более высоком уровне, т.е. это значит что тенденция в среднем сохраняется для модели, что на тестовой выборке, что на экзаменационной. Пока я решил остановится на показателе Proc_1_V01 - это процент правильно классифицированных единиц целевой от всех единиц в выборке, этот показатель показывает очень высокий уровень сохранения своего отношения в, скажем так двух мерном пространстве (выше/ниже среднего значения) - 87,3%, что очень хорошо на мой взгляд, плюс разбиение выборки по его методу дает примерно одинаковое среднее значение прибыли, и даже чуть больше среднего значения - 1488. Тогда получается, что шансов на хороший финансовый результат у нас больше при выборе моделей по этому показателю, или я что-то не учел?

Пока же решил пересмотреть группы с учетом показателя не FinRez(прибыль), а именно по показателю Proc_1_V01, методику оставил прежнюю, в результате получился весьма заманчивый результат


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



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

Вот ещё добавлю график, на котором видно, как распределяется по выборкам прибыль (приведена к 100% относительно теста и экзамена соответственно) - в левой части отфильтрованные показатели, а в правой взятые, это если увеличить среднее значение показателя Proc_1_V01 на коэффициент 1,25.

а это для сравнения - если делать отбор по прибыли - выросла плотность, но и появился хвост жирный с 20% до -15%, что не есть хорошо.

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

Но совместив два показателя, добавив к Proc_1_V01 ещё и фильтрацию по проценту прибыли - >20% - так-как меньше очень много убытков, и <80% так-как экстремальные значения часто случайны, то можно получить такую уже более достойную картину.


 
Aleksey Vyazmikin:

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

А по-моему, неуверенность это общая черта, как для этой ветки форума, так и для статей по МО.

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

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

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

Рантайм связка MQL с библиотеками Python и R дает неограниченный простор в этом направлении, поэтому в очередной раз предложил свой движок, если потребуется, готов подключиться и помочь.

 
Ivan Negreshniy:

А по-моему, неуверенность это общая черта, как для этой ветки форума, так и для статей по МО.

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

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

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

Рантайм связка MQL с библиотеками Python и R дает неограниченный простор в этом направлении, поэтому в очередной раз предложил свой движок, если потребуется, готов подключиться и помочь.

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

От помощи не откажусь, так-как очень плохо разбираюсь именно в построении моделей, и покрутив немного настройки Кэтбуста увидел, что результаты могут очень сильно зависеть от настроек модели, что дает больше вопросов чем ответов. А вопрос у меня на сегодня один - какой максимум можно выжить из моей выборки с предикторами, так-как не ясно - надо ещё делать предикторы или их уже для минимума достаточно.

Помощь по подключению кэтбуста в виде питона к терминала - конечно понадобится, спасибо!

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