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

 
Alexey Burnakov:

А вы на истории оцениваете работу стратегии или есть долгий форвард? Черт может быть в оценке на истории. 

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

На форварде проверяю. Если вошли на пике - для этого SL есть. 
 
Andrey Dik:

Подробнее: на текущем баре сигнал бай, типа покупаем, отсчитываем наименьшее кол-во баров вперёд......

 У меня тоже есть похожий вариант как можно сгладить, я его озвучивал страниц 100 назад, но он у меня на более абстрактном уровне...

 

Отказаться вообще от целевой в привычном ее виде, мы не знаем как торговать, где заходить, где выходить, мы вообще нифига не знаем

потому все целевые что мы понапридумывали (тренды,зз,цвет свечи, отскоки) это есть чистая отсебятина в попытке описать рыночное движение, субъективизм как он есть  

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

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

"хочу чтоб алгоритм зарабатывал мин. 5% в неделю при просадке мах. 2%"

нормальная целевая? всем нравиться и подходит не так ли?  и все понятно...

 

 Те тренировать сеть не по нашим придуманным целевым типа ЗЗ и проч. которые есть субъективность а тренировать сеть как поиск некого минимума ну или максимума по прибыли или по просадке или по sharp-ratio или по ФВ или комбинации из этих показателей

 И подход должен звучать так  - сеть мне пофиг как ты там торгуешь, торгуй как хочешь но каждую неделю мне чтоб было +5% при просадке до 2%....  Пусть сеть сама торгует, пусть она сама определит что есть тренд, что есть разворот, по сути все что нас интересует это прибыль и просадка это мы и контролируем , как торговать мы не знаем , а значит и лезть нам туда не надо....

 

Как это реализовать...

Есть сети которые уже учат играть в игры, в частности в супер марио http://gekkoquant.com/2016/03/13/evolving-neural-networks-through-augmenting-topologies-part-1-of-4/, предлагаю обучать сеть так же, проведем аналогию..

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

2) есть действия - кнопки ждойстика на которые сеть нажимает чтоб управлять марио 

3) есть очки - вознаграждение для сети 

4) есть наказание - смерть марио 

 Попадая в среду(1) сеть начинает нажимать на кнопки джойстика(2) и так тысячи итераций пока она не научиться проходить уровень набрав приемлемое количество очков(3)   при этом не умирая(4)      

 

Аналогия с трейдингом

1)  есть среда - поступающие данные в сеть - предикторы 

2)  есть действия - купить/продать/ничего не делать 

3)  есть очки -  полученая прыбыль 

4)  есть наказание - полученая просадка

 
mytarmailS:

Те тренировать сеть не по нашим придуманным целевым типа ЗЗ и проч. которые есть субъективность а тренировать сеть как поиск некого минимума ну или максимума по прибыли или по просадке или по sharp-ratio или по ФВ или комбинации из этих показателей

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

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

 
Dr.Trader:

1)Я согласен, выбранная цель субъективна и необоснована. Я пробовал сделать торговую модель с пакетом rneat, которая немного научилась торговать на истории, но всёж не смогла правильно предсказывать на новых данных.

2) Для форекса хорошая работа на данных для обучения недостаточна, нужно чтобы модель также работала и на новых данных, и видимо это большая проблема для такого алгоритма. 

1) Не знаю как выразиться правильно, но  вы в своем эксперименте не дали сети думать не дали ей самой делать сделки подставив свою целевую, тем самым вы превратили сеть в самую обычную модель, ее суть в самообучении а вы это сделали за нее, понимаете?

Я же говорю дать ей самой торговать, пусть она сама совершает сделки и сама делает выводы те не размечать данные своей целевой 

наш контроль ето прибыль и просадка, все.. дальше она сама... 

 

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

 
Andrey Dik:
На форварде проверяю. Если вошли на пике - для этого SL есть. 
SL-то есть.
 
Dr.Trader:

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

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

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


Вы все верно говорите. Распознавание картинок, звуков это процесс псевдостационарный, при условии, что выборка репрезентативна и способ рисования картинок на контрольной выборке не отдадут леворуким больным ДЦП (грубо, сори).

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

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

По сути, из N предикторов выбираются n, которые хорошо отработают всюду (на всех доступных выборках). Подогнали, что дальше? А дальше идет реал.форвард, на котором наблюдаем слив. В чем причина?

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

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

 

Надо найти способ отбора предикторов, чтобы на обучении и валидации модели вели себя как на левой картинке:

 

И только тогда можно сказать, что модель проходит тест вне выборки. А не просто, что какие-то модели (предикторы) проходят вне выборки. 

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

Похоже, что мы здесь с Вами вдвоем, так как позиция Алексея мне не совсем ясна.


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

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

 
Alexey Burnakov:

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

 Что с чем коррелировать должно? как вы это делаете? Я тоже не понимаю..

Alexey Burnakov:

 Вы то ли не понимаете, то ли не никогда не делали это.

 Думаю кроме вас тут Это никто не делал )

 
Alexey Burnakov:

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

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

Я вспомнил - уже обсуждали, но, извините, забыл.

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

Я использую следующую схему:

1. Формулирую целевую переменную 

2. выдумываю некое множество предикторов, которые на интуитивном уровне имеют отношение к моей целевой переменной.

3. По моему алгоритму отсеиваю те предикторы, которые по формальным причина я отношу к шуму. Обычно остается 15-20% от исходного количества, которое я напридумывал

4. Формирую большой файл не менее 10000 бар

5. Делю этот файл на две части: 7000 и 3000

6. На 7000- учу модель, тестирую и провожу валидацию 

7. Если все три цифры примерно совпали, то п.8. Если нет, то возвращаюсь к п.1.

8. Обученную модель использую на практике. Но делаю отбор предикторов одним из алгоритмов (пользую rfe) в текущем окне. Этот отбор делаю по выходным для Н1. rfe из набора, на котором я учил модель, отбирает от 5 и более предикторов для текущего окна. Перечень предикторов все время меняется, но он отбирается из того множества, которое я получил при первоначальном обучении.

Вся эта схема работает робастно с осени прошлого года на реале. Но есть одно существенное но: это только часть советника. Ранее мои советники на ТА не жили более полугода. Теперь этой проблемы не вижу. 

 
mytarmailS:

 У меня тоже есть похожий вариант как можно сгладить, я его озвучивал страниц 100 назад, но он у меня на более абстрактном уровне...

 

Отказаться вообще от целевой в привычном ее виде, мы не знаем как торговать, где заходить, где выходить, мы вообще нифига не знаем

потому все целевые что мы понапридумывали (тренды,зз,цвет свечи, отскоки) это есть чистая отсебятина в попытке описать рыночное движение, субъективизм как он есть  

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

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

"хочу чтоб алгоритм зарабатывал мин. 5% в неделю при просадке мах. 2%"

нормальная целевая? всем нравиться и подходит не так ли?  и все понятно...

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