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

 
Alexey Burnakov:
Это описание многовариантного выхода из сделки. Я сам так реализовал. Увеличивает шанс на подгонку.
У Вас увеличивает? Странно... А у меня уменьшает.
Как водится, по видимому, черт в деталях. 
 
СанСаныч Фоменко:

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

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

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

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

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

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

 
Dr.Trader:


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

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

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

 

ПС.

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

Например, закон Ньютона.

Берем листок бумаги - он обязательно упадет на пол. Скомкаем этот листок бумаги - обязательно упадет, но быстрее. В Ньютон утверждает, что все падает с одинаковым ускорением. Как это?. Вот так, человек сумел отбросить частности, которых превеликое множество, огрубить действительность и получить универсальный закон, а если не действует, то эти отклонения всегда можно объяснить.

Так устроена вся наука. 

То, чем мы занимаемся, это попытка "огрубить" котир, представить этот котир в виде модели так, чтобы иметь представление о всех будущих котирах.

Борьба с переобучением - это базовая проблема трейдинга. 

 
Dr.Trader:

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

Немного не в тему но к слову, просто кусочек информации...

В распознавании голоса в частности речи есть такая проблемка, когда один человек говорит слово - спектральный паттерн этого слова подается на алгоритм "HMM" или "RNN" .., но вот беда в том что если другой человек говорит то же самое слово то он как минимум будет говорить его с другой скоростью, те паттерн тот же но растянут во времени,   а теперь аналогия  - голова и плечи ширина паттерна 33 свечи и та же голова и плечи ширина 88 свечей, ширина разная, а паттерн то тот же.....

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

пакеты в R : "DTW" ,  "dtwclust" 

 
Alexey Burnakov:
Это описание многовариантного выхода из сделки. Я сам так реализовал. Увеличивает шанс на подгонку.
Andrey Dik:

Метода следующая (всё нижесказанное одинаково относится как к ML так и классическим ТС).

Смысл - избавится от неопределённости, а это означает избавится от подгонки в обучении и оптимизации с одной стороны, а с другой - однозначно сформулировать "мягкие" требования к системе. ТП и СЛ при входе - это тоже неопределённость, поэтому используем только для экстренного выхода (зависит от волатильности инструмента и выбираем эмпирически и так, что бы от 100% трейдов стопы срабатывали как можно реже, в идеале - никогда. Прогнозируем трейд целиком, от входа до выхода. Удачным трейдом считаем итог с прибылью без учета спреда и комиссий (рабочесть системы определяется после по мо, покроет ли спред и комиссии). Получили сигнал на вход - вошли, далее ждем определенное количество баров (определяется эмперически и зависит от предикторов и торгового инструмента), после этого смотрим - эквити в прибыли? - закрываем сделку, в  убытке - ждем ещё один бар. Иногда я использую два параметра: минимальное количество баров и максимальное (если сделка не закрыта по истечении максимального количества баров - то закрывается всё равно), а иногда тлько один - минимальное количество баров.

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

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

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

Как мне кажется, все, что Вы описали укладывается в оптимизацию модели ARIMA. При оптимизации выбирается количество бар, на которых строится модель
 
Alexey Burnakov:   СанСаныч Фоменко:

Что за дикая привычка отвечать двумя словами и цитировать 100 строк собеседника????  на форуме 120 страниц, если убрать эти не нужные цитаты то дай бог 60 страниц полезного текста останется...   уважайте тех людей которые потом это читают или возможно будут читать в будущем

 
Andrey Dik:

Метода следующая (всё нижесказанное одинаково относится как к ML так и классическим ТС)....

 Можете описать по пунктам что и как надо делать, как алгоритм, потому что я толком не понял как вы предлагаете делать

 
СанСаныч Фоменко:
Как мне кажется, все, что Вы описали укладывается в оптимизацию модели ARIMA. При оптимизации выбирается количество бар, на которых строится модель
Не фиксированное значение баров, а возможные значения "от сих до сих" 
 
mytarmailS:

 Можете описать по пунктам что и как надо делать, как алгоритм, потому что я толком не понял как вы предлагаете делать

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

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

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

Это базовая "рыба" системы, которая рабочая уже сама по себе. Но нам никто не запрещает прикрутить к ТС и использовать непосредственно в торговле такие причендалы как перенос SL в безубыток. Система осталась таже, но за то при продолжении движения рынка в нашу сторону мы получим дополнительную прибыль сверх "плана", а далее либо тралить SL, либо начинать частиное закрытие позиции  в зависимости от пройденного расстояния в сравнении со статистическим ходом цены за данный промежуток времени и т.д. 

 
Andrey Dik:
У Вас увеличивает? Странно... А у меня уменьшает.
Как водится, по видимому, черт в деталях. 

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

 

Смотрите, была у меня стратегия, написанная на 100 строках в МТ4 собственноручно. Я писал об этом в профиле в декабре 2014: https://www.mql5.com/ru/users/alexeymosc/page3?#userActions

 

Вот так выглядит последний вариант, собранный в январе 2015:

 

Затем я ее пробовал на реале, вкупе с другими стратегиями. О них тоже везде писал.

То, сё, руками слил.

Запилил сегодня форвард тест с момента окончания оптимизации по конец июля с теми же настройками. Глядите:

 

Все там указано. Спред 30, лот 0.1.

Попробую и на всех тиках, чтобы тейки лучше отработались:

 

 

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

Alexey Burnakov
Alexey Burnakov
  • www.mql5.com
Профиль трейдера
Причина обращения: