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

 

Сейчас увидел, что в коде у меня ещё было 4 листа в виде фильтров к каждому сигнальному листу :) Поэтому отключил их, и теперь повторяю графики.

Вот такая ситуация по прибыли каждого листа. Среднее значение +34 рублей. 50% показывает положительный результат.

Лучший по прибыли

Ну и баланс всех листьев

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

Получается, что для фильтрации были не очень качественно отобраны листья.

 

Типа один лист из дерева иногда работает лучше чем дерево? 

готовая тс на минималках

 
Maxim Dmitrievsky #:

Типа один лист из дерева иногда работает лучше чем дерево? 

готовая тс на минималках

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

 
Ночью надо спать.
 
Aleksey Vyazmikin #:

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

Я делаю это (отбор листьев) на автомате - изменением уровня активации листа. Классически для классификации используют 0,5. Все листья с вероятностью выше 0,5 активируются, остальные молчат (что равносильно их удалению из дерева). Такой метод был описан не в одной статье на этом сайте и на форуме.

А можно поставить уровень 0,9 или 0,95, тогда только супер чистые листья в которых 95% примеров правильного класса будут работать. Для регрессии аналогично, только уровень не от 0 до 1, а в абс значениях. На картинках что выше приводил одна и та же модель, но с разными уровнями активации. Первая через 0,00020, вторая через 0,00040пт. Вторая пропустила убыточные интервалы торговли, а работала только на самых прибыльных и показала прибыль, хоть и работала с паузами в 1-2 года. Активация была в 70000 случаев из 400000, т.е. работало около 17% самых лучших листьев.

Результат аналогичный, достигается всего лишь одной командой в коде if(leaf_value>0.00040){...} , без всех тех заморочек, что вы делаете с отбором листьев, а теперь еще и кластеров.

Но вы и так все это знаете...

 
Aleksey Vyazmikin #:

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

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

Получается неприятный выбор - либо пытаться перенастроить сложный, навороченный пакет, либо ваять корявый велосипед. Ещё можно "удачно" совместить обе эти опции)

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

 
Maxim Dmitrievsky #:
Особо не надеюсь, так иногда подглядываю. После всяких gpt вообще прогнозирую застой и стагнацию в этой теме. Прорывов не видно никаких. Чисто хайповая вспышка, как с криптой. Щас они бобла срубят и успокоятся.
Поддерживаю!

Всё моё окружение нахваливают пропиаренные нейросети - но когда ставишь им простые задачи, то они с ними не справляются
 
Stanislav Korotky #:

Приведенный мной пример - как раз из раздела категориальной кросс-энтропии (и вы видимо не обратили внимания, что там сумма значений равна 1 в каждом экземпляре). То, что он не работает, как в керас, для меня показатель, означающий, что либо реализация, либо описание CCE в MQL5 не соответствуют ожидаемым. Тогда требуется развернутое описание. Между прочим, в pytorch CrossEntropyLoss включает предварительный softmax внутри. Но в целом, поскольку в документации по матрицам в MQL5 красной нитью проходит мысль, что интерфейс аналогичен питонскому, подразумевается совпадение поведения. И если совпадения нет, это вызывает проблемы и недоумение.

Наличие множества классов предполагает работу с матрицами (когда у нас куча отсчетов/строк, в каждой из которых классы), поэтому ваш пример с вектором по-прежнему не отвечает на поставленный вопрос.

Я понял. Функции потерь работают с матрицами, как с векторами. В этом месте мы не доделали (не добавили параметр axis)

То есть, конкретно в Вашем примере нужно решать построчно.

Спасибо, что обратили внимание

 
Aleksey Vyazmikin #:

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

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

 
Forester #:

Я делаю это (отбор листьев) на автомате - изменением уровня активации листа. Классически для классификации используют 0,5. Все листья с вероятностью выше 0,5 активируются, остальные молчат (что равносильно их удалению из дерева). Такой метод был описан не в одной статье на этом сайте и на форуме.

А можно поставить уровень 0,9 или 0,95, тогда только супер чистые листья в которых 95% примеров правильного класса будут работать. Для регрессии аналогично, только уровень не от 0 до 1, а в абс значениях. На картинках что выше приводил одна и та же модель, но с разными уровнями активации. Первая через 0,00020, вторая через 0,00040пт. Вторая пропустила убыточные интервалы торговли, а работала только на самых прибыльных и показала прибыль, хоть и работала с паузами в 1-2 года. Активация была в 70000 случаев из 400000, т.е. работало около 17% самых лучших листьев.

Результат аналогичный, достигается всего лишь одной командой в коде if(leaf_value>0.00040){...} , без всех тех заморочек, что вы делаете с отбором листьев, а теперь еще и кластеров.

Но вы и так все это знаете...

У Вас же лес, после построение перевзвешиваете модель? Или просто там среднее значение берется по активировавшимся листьям?

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

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

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