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

 
Yury Reshetov:

Потому, что мороженное.

Извиняюсь, но каков вопрос, таков и ответ.

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

Проехали.
 

Завершил я многодневные расчеты (модели на 6-ти отобранных предикторах (из 114) для форекса).

 

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

В каждом боксе по 99 значений, каждое из которых это метрика 1 - sum(abs(X-Y))/sum(abs(X-mean(X)) на уникальной валид.выборке. Аналог R^2, понятно, да..

Всего получилось 8908 моделей... Для всех исследуемых инструментов и таргетов. 

  

 

В среднем уменьшение ошибки на 0.2% (всего лишь). Но это значимо... Для каждой модели генерировалась уникальная валидационная выборка. 

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

 

И туда же. Гораздо более интересная картинка с практической точки зрения. Связь между мат.ожиданием модели на тестовых блоках (внутри кроссвалидации) и на валидации.

 Тут сразу нужно смотреть, значима ли положительная зависимость (так как отрицательная вообще не поддается здравому смыслу) и есть ли на валидации положительные значения МО. Ну, сами можете все видеть.

99 точек - это модели.

 

 
Dr.Trader:


Ну вот это хороший наглядный пример почему сливают, 99% наивных трейдеров, торгующих индюки, если смещать окно эта мешанина точек ещё и произвольным образом будет морфиться, то есть это только шум и МО тут не поможет
 
Периливаться будет отменно, а если еще и тикер озвучить... врыв мозга)))
 
toxic:
Ну вот это хороший наглядный пример почему сливают, 99% наивных трейдеров...
А эта ветка - хороший, наглядный пример того, что машинное обучение в торговле, это только теория...
 
revers45:
А эта ветка - хороший, наглядный пример того, что машинное обучение в торговле, это только теория...
Если внимательно просмотреть ветку, то здешние обитатели разделились на три лагеря:
  1. Пользователи R (именуемые здесь "паразитами"). Чем-то напоминают деструктивную секту. Всё время ковыряются в каких-то пакетах, сегодня занимаются классификацией, завтра регрессией, послезавтра какой нибудь кластеризацией и так по кругу. Деятельность вроде бы бурная, но бестолковая, поскольку за что ни возьмуться, всё сделают криво и косо, из-за чего у них ничего не получается. Это выражается в их жалобах, например: на судьбу, "проблему" переобучения, шумные предикторы и всяких "редисок и нехороших человеков", не признающих R, например, таких, как Решетов.
  2. Те, кто не пользуется R. Такие, как правило выбрали какое-то конкретное направление, где у них что-то получается. На судьбу не жалуются, в различных методах не ковыряются, т.е. не разбрасываются. А занимаются тем, что даёт результат и потихоньку совершенствуются в выбранном направлении.
  3. Заглянувшие на огонёк. Иногда вставляют свои три копейки, но зачастую невпопад.
 
Alexey Burnakov:

Завершил я многодневные расчеты.

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

Вы взяли 114 предикторов, потом как-то отобрали 6, и после обучения моделей можете сделать вывод о том какая цель лучше. Но этот полученный результат - всего лишь локальный максимум. Можно говорить не глобально о том что "eurusd лучше предсказывать на 16 баров вперёд", а всего лишь о том что "набор из 114 предикторов: (пред1, пред2, пред3,..) используя gbm лучше всего предсказывает направление цены через 16 баров". 

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

Где-то полгода назад СанСаныч выкладывал файл с его предикторами. Особенность их в том, что большинство моделей в rattle имеют на них небольшую ошибку, и при этом ошибка на новых данных не растёт. Можно обучить модели на любом отрезке, а на оставшихся данных провести oos тест и увидеть что ничего не ухудшилось. Это предикторы и цель настолько связаны, что модели находят единственно возможную связь между ними на любых барах. 
Я пытаюсь такое повторить. Использую более десяти тысяч исходных предикторов (индикаторы с разными параметрами и лагами из mt5), и учусь подбирать их так чтоб они тоже имели такую единственно возможную связь с целевой колонкой. Вам рекомендую тоже заняться таким экспериментом, на мой взгляд умение определять или находить такие взаимосвязанные предикторы и цель - верный пуль к граалю.

 

 

 

MQL5 с недавних пор имеет генератор экспертов, когда выбираешь список нужных индикаторов, и создаётся сразу готовый эксперт с кодом, дальше его довольно просто оптимизировать генетикой. В таком эксперте имеется 20 индикаторов, нету вообще никаких моделей машинного обучения (всё что есть это коэффициенты важности присваиваемые каждому индикатору).
Я добавил только свой кастомный код для фитнесс функции генетики, включив в него некоторые критерии чтоб цель и индикаторы по моему мнению считались тесно связанными. Получилось так:
 (eurusd h1)

первые 2/3 - backtest (sample), последняя треть - fronttest (oos). Там после 2/3 времени не слив, а баланс сбрасывается на начальный для oos теста. Имея такой скудный набор возможностей, и просто добавив "сырые и недоделанные критерии зависимости предикторов и цели" - получается хоть и плохенько, но уже не слив. 51% успешных сделок на oos. Разве не замечательно? А ведь можно было бы взять не 20 индикаторов, а 20000, и добавить какую-то модель машинного обучения, и убрать бы лимит в 10000 итераций из mt5 генетики, и получился бы даже профитный советник.

 
revers45:
А эта ветка - хороший, наглядный пример того, что машинное обучение в торговле, это только теория...

Да в торговле теории вообще быть не может в принципе, точнее теория есть про то что заработать невозможно, эффективный рынок и тп, всё учтено в цене, биржевом механизме..., тобиш торговать что играть в рулетку, а статистика и машинное обучение ставшая более доступной в последнее время благодаря разным мат-пакетам и библиотекам, дает возможность прям таки по настоящему увидеть ПОЧЕМУ  так грустно со стандартным ТА, не ученым а простым трейдерам, недельку повозивщись в R-studio или Matlab.

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

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

А вот нужно оказывается....  

 
Dr.Trader:

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

Вы взяли 114 предикторов, потом как-то отобрали 6, и после обучения моделей можете сделать вывод о том какая цель лучше. Но этот полученный результат - всего лишь локальный максимум. Можно говорить не глобально о том что "eurusd лучше предсказывать на 16 баров вперёд", а всего лишь о том что "набор из 114 предикторов: (пред1, пред2, пред3,..) используя gbm лучше всего предсказывает направление цены через 16 баров". 

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

Где-то полгода назад СанСаныч выкладывал файл с его предикторами. Особенность их в том, что большинство моделей в rattle имеют на них небольшую ошибку, и при этом ошибка на новых данных не растёт. Можно обучить модели на любом отрезке, а на оставшихся данных провести oos тест и увидеть что ничего не ухудшилось. Это предикторы и цель настолько связаны, что модели находят единственно возможную связь между ними на любых барах. 
Я пытаюсь такое повторить. Использую более десяти тысяч исходных предикторов (индикаторы с разными параметрами и лагами из mt5), и учусь подбирать их так чтоб они тоже имели такую единственно возможную связь с целевой колонкой. Вам рекомендую тоже заняться таким экспериментом, на мой взгляд умение определять или находить такие взаимосвязанные предикторы и цель - верный пуль к граалю.

 

 

 

MQL5 с недавних пор имеет генератор экспертов, когда выбираешь список нужных индикаторов, и создаётся сразу готовый эксперт с кодом, дальше его довольно просто оптимизировать генетикой. В таком эксперте имеется 20 индикаторов, нету вообще никаких моделей машинного обучения (всё что есть это коэффициенты важности присваиваемые каждому индикатору).
Я добавил только свой кастомный код для фитнесс функции генетики, включив в него некоторые критерии чтоб цель и индикаторы по моему мнению считались тесно связанными. Получилось так:
 (eurusd h1)

первые 2/3 - backtest (sample), последняя треть - fronttest (oos). Там после 2/3 времени не слив, а баланс сбрасывается на начальный для oos теста. Имея такой скудный набор возможностей, и просто добавив "сырые и недоделанные критерии зависимости предикторов и цели" - получается хоть и плохенько, но уже не слив. 51% успешных сделок на oos. Разве не замечательно? А ведь можно было бы взять не 20 индикаторов, а 20000, и добавить какую-то модель машинного обучения, и убрать бы лимит в 10000 итераций из mt5 генетики, и получился бы даже профитный советник.

Конечно локальный результат. Нет возможности диверсификации. Нет времени. Нет ресурсов... Это именно то, что дает GBM на моих предикторах.

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

Вот качество регрессии успешно валидируется. Обученные модели дают отличное от нуля значимо качество предсказания. Без всяких проблем выбора модели.

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

В конце будет собран комитет, который валидируется еще одной выборкой из будущего. Через Монте-Карло конечно.

А вот с предикторами тоже сложно... Долго объяснять... Но суть в том, что каждая из 99 моделей для подвыборки символ-таргет использует свой уникальный набор из 6 предикторов. В купе получается неплохое разнообразие моделей (плюс они учатся на разных данных). а в целом каждый из 114 где-то задействуется.

И не забывайте пож. про оптимистичный выбор модели. Любой выбор должен дополнительно валидироваться. то есть я вот не понимаю Вы как выбрали эту картинку? По лучшему результату на IS или OS? Это просто так вопрос. Но многие результаты "исследований" грешат тем, что на этот вопрос ответа нет.
 

Посоветуйте где взять советник (робот) который бы открывал сделку в заданное время и закрывал бы потом эту сделку тоже в заданное время.


К примеру открыл сделку в 12:59, а закрыл бы в 13:59 вне зависимости от результата - прибыль или убыток всё равно.

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