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

 
Alexey Burnakov:

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

Например вы провели валидацию на отложенной выборке. Допустим модель на отложенных данных слилась. Что вы делаете в таком случае? Если вы начнёте опять что-то подбирать в параметрах чтоб успешно пройти валидацию на отложенной выборке - вы по сути включаете данные из отложенной выборки в свою кроссвалидацию, и кроссвалидация становится тоже подогнанной. Это можно поправить добавив новую отложенную выборку. А что если модель и на ней сольёт? Подбирать параметры чтоб пройти и новую отложенную выборку? Это бесконечная гонка.

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

 

Так что вопрос - допустим модель на отложенных данных слилась. Что вы делаете в таком случае?

 
Dr.Trader:

Так что вопрос - допустим модель на отложенных данных слилась. Что вы делаете в таком случае?

Я так подумал, вопрос получился таки слишком личным :)

Лучше так - если у вас модель не прошла тест на отложенной выборке, вы включаете отложенную выборку в кроссвалидацию, и создаёте новую отложенную выборку? Или действуете иначе?


Я например взял за основу то что Сан Саныч повторил уже 1000 раз - нужно оценивать качество предикторов. "Качество" - понятие растяжимое. Я например это делаю через такую кроссвалидацию, и это скорее отбор предикторов чем параметров модели. Если модель при обучении находит в данных одни и теже зависимости на любом участке - это весомый аргумент того что предикторы ок.
Мне не нравится в моём подходе что приходится торговать ансамблем. Если зависимости постоянны, то достаточно на отобранных предикторах в конце обучить всего одну модель, и она найдёт опять теже зависимости, и сможет торговать сама. Но у меня что-то в отборе предикторов не хватает, одна модель не справляется.

 
Dr.Trader: качество предикторов....
Из примитивного примера следует, что свойства целевой не менее важны...
 
Я даже больше скажу. Целевая функция это ОЧЕНЬ важный момент при построении модели, потому как именно целевая функция поможет алгоритму произвести разделение. Не раз сталкивался с данной проблемой, но так до конца её не решил, поэтому оставил цель в виде 50 пипсов. Чуть выше уровня спреда...
 
Alexey Burnakov:

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

Когда это понятно, продолжается чистый эксперимент. Если это не понятно, увидите на реале многократное падение качества. Что и наблюдается в 99% случаев.

Все это происходит потому что рынок ходит против своей же статистики мега часто...

1) Сначала  я покажу почему я так думаю и докажу это

2)  Потом объясню почему так происходит, саму механику процесса

 

дайте мне пару часиков... 

 никаких готовых решений не дам, потому что сам не имею, но само понимание процесса, это уже что то...

 

1) 

================================================================== 

 первое что я делал это тренировал две глубокие сети с вероятностными выходами, по сути, подойдут любые сети, главное чтоб выход у сети был не четкий ответ  класса -  «1», «0»   , а вероятность  принадлежности к классу, то есть выход будет допустим -  «0,13»  и это будет означать что текущие данные принадлежат классу «1»  в вероятностью  -  «0,13%»  

Одна сеть у меня тренировалась исключительно на бай, вторая исключительно на селл.

Сигналом (целевой фун. ) на сел является точка с которой было падение не менее  0,2% от цены,


 й

то есть,  по сути, мы ищем точку разворота… Целевая выглядит так  «000000000010000000000» где «1» разворот на сел, «0» - не разворот.

Для разворота вверх все то же самое соответственно …

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

Итак, сети натренированы, берем предсказания сети (их выходы) и строим графики под ценой. На графиках внизу изображены выходы двух сетей на бай и на сел, выход сети на сел например означает с какой вероятностью на следующей свече будет разворот вниз. См. РИС. 1 , все тоже самое и для бая..

Зеленым цветом обозначен выход сети на бай, а красным выход сети на сел.

ф

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

Cumsum (buy.neural)    ;   Cumsum(sell.neural)

я

рис. 3 

А теперь построим разницу межу кум. суммой сети на бай и кум. суммой  сети на сел

Cumsum (buy.neural)    -    Cumsum(sell.neural)


 ц

Как видно см. РИС. 4 из синего графика и графика цены цена полностью обратно коррелирует с  прогнозами сетей (синий график). Чтоб сделать еще наглядней я изменю знак (переверну ) синий график.

Cumsum (buy.neural)    -    Cumsum(sell.neural)  /  -1

к

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

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

=========================================================================

Идем  дальше....

тренировал  скрытые марковские модели СММ или по буржуйски HMM - hidden markov model

это вероятностная  модель которая применяется специально для не стационарных данных, поговаривают что и для рынков в том числе... 

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

н

на сделки не обращайте внимания, что то там експериментировал ..

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

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

 

А теперь давайте подумаем если рынок такая зверюка) с  таким поведением, могут ли алгоритмы МО его - рынок прогнозировать? если по сути что RF что сеть что СММ итп.. так или иначе строят свои прогнозы статистически....

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

 Что делать???  пока сам не знаю

 
mytarmailS:

1) 

================================================================== 

 первое что я делал это тренировал две глубокие сети с вероятностными выходами, по сути, подойдут любые сети, главное чтоб выход у сети был не четкий ответ  класса -  «1», «0»   , а вероятность  принадлежности к классу, то есть выход будет допустим -  «0,13»  и это будет означать что текущие данные принадлежат классу «1»  в вероятностью  -  «0,13%»  

Одна сеть у меня тренировалась исключительно на бай, вторая исключительно на селл.

Сигналом (целевой фун. ) на сел является точка с которой было падение не менее  0,2% от цены,


 

то есть,  по сути, мы ищем точку разворота… Целевая выглядит так  «000000000010000000000» где «1» разворот на сел, «0» - не разворот.

Для разворота вверх все то же самое соответственно …

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

Итак, сети натренированы, берем предсказания сети (их выходы) и строим графики под ценой.

Если присмотреться  на РИС. 2 то даже на глаз заметно что график цены ходит против этих вероятностей

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

Умные ведь люди, нейросети всякие разрабатывают и тренируют, а простых вещей всё-таки не видят. Прочитал Ваш пост и немало удивился. Если я всё правильно понял, то Вы, грубо говоря, нашли все падения цены на 0,2% после некого хая, потом взяли три свечи в районе этого хая и провели некую манипуляцию с их ценами, приведя в итоге с помощью нейросети их к некой вероятности. Но, простите, Вам самому не кажется такой подход слишком уж примитивным? :) Вы не то и не там копаете. Оттого и результат прямо противоположный реальности. Ваш подход я бы охарактеризовал так: Вы пытаетесь взять 3 пикселя из картинки FullHD, и по этим трём пикселям составить представление о всей картине. Ну ладно, не всей, но какова вероятность правильного прогноза хотя бы 10% площади изображения? Надеюсь, мой пример понятен. Нужно смотреть не на пиксели, чтобы увидеть картинку. Иными словами, нужно смотреть не на отдельные бары, чтобы понять график, нужно смотреть на весь график. И решение задачи лежит, скорее, в области геометрии, а не алгебры, физики или биологии, например. Хотя когда я читаю некоторые исследования, которые люди тут проводят, то у меня возникает стойкое ощущение, что они пытаются постичь строение человека с помощью географии. :)
 

BlackTomcat:
1)  Прочитал Ваш пост и немало удивился. Если я всё правильно понял, 

2) приведя в итоге с помощью нейросети их к некой вероятности. Но, простите, Вам самому не кажется такой подход слишком уж примитивным? :) Вы не то и не там копаете. Оттого и результат прямо противоположный реальности.

3) Ваш подход я бы охарактеризовал так: Вы пытаетесь взять 3 пикселя из картинки FullHD, и по этим трём пикселям составить представление о всей картине. Ну ладно, не всей, но какова вероятность правильного прогноза хотя бы 10% площади изображения? Надеюсь, мой пример понятен. Нужно смотреть не на пиксели, чтобы увидеть картинку.

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

1) првильно..

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

3)  Согласен, нужно брать максимум информации в максимально сжатом виде, потому и поговариваю в последнее время про профиль объема, ну или альтернативы какие то..

У вас есть предложения как представлять данные сети? пожалуйста поделитесь, для этого мы все здесь 

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

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

 
BlackTomcat:
Умные ведь люди, нейросети всякие разрабатывают и тренируют, а простых вещей всё-таки не видят. Прочитал Ваш пост и немало удивился. Если я всё правильно понял, то Вы, грубо говоря, нашли все падения цены на 0,2% после некого хая, потом взяли три свечи в районе этого хая и провели некую манипуляцию с их ценами, приведя в итоге с помощью нейросети их к некой вероятности. Но, простите, Вам самому не кажется такой подход слишком уж примитивным? :) Вы не то и не там копаете. Оттого и результат прямо противоположный реальности. Ваш подход я бы охарактеризовал так: Вы пытаетесь взять 3 пикселя из картинки FullHD, и по этим трём пикселям составить представление о всей картине. Ну ладно, не всей, но какова вероятность правильного прогноза хотя бы 10% площади изображения? Надеюсь, мой пример понятен. Нужно смотреть не на пиксели, чтобы увидеть картинку. Иными словами, нужно смотреть не на отдельные бары, чтобы понять график, нужно смотреть на весь график. И решение задачи лежит, скорее, в области геометрии, а не алгебры, физики или биологии, например. Хотя когда я читаю некоторые исследования, которые люди тут проводят, то у меня возникает стойкое ощущение, что они пытаются постичь строение человека с помощью географии. :)

Согласен. Нужно смотреть картинку целиком.

Но это годится только для статичной картинки. То есть, мы можем условно разбить всю картинку на 100 частей, на 70 частях обучаться, а на 30 получим отличные предсказательные способности. Примерно так же и поступают с прогнозированием на рынке. Тогда в чем же загвоздка? Почему возникают проблемы уже в реалтайм?

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

Таким образом, если смотреть на отдельные кадры фильма, то можно сделать даже вывод, что кадры случайны, так же многие убеждены, что рынок очень случаен если и не на 100%. Но мы то знаем, что когда смотрим фильм в нем есть смысл, мы можем даже с легкостью прогнозировать что случится в конце фильма! Так в чем же дело? - может быть в том, что нужно смотреть ширше, нужно исследовать более глобальные закономерности, которые не меняются никогда - например я как то проверял, на сколько % в среднем цена возвращается назад, так вот, получалось что то около 30% (еслине изменяет память), но суть в том, что эта цифра практически одинакова для всех ТФ и для всех инструментов (валютные пары и металлы, для CFD и других не проверял, но похоже что получится так же)! Это удивительно. Именно такие постоянные закономерности и нужно использовать, но зачастую проще это делать без всяких нейронных сетей, лесов и пр., так как для того, что бы использовать МО, то нужно уметь определять смысл в фильме, а это огого как не просто если вообще возможно. 

 
Andrey Dik:

А загвоздка в том, что картинка не статична. Это кино. 

 Приведу ещё одну аналогию.

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

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

 

Сейчас меня спросят: а что теперь делать? - я не знаю что делать с МО, результат всё равно будет хреновым.

Или даже скажет кто то: "Да ты просто не умеешь готовить МО!" - наверное да, не умею. Но кто вообще умеет? У кого получалось использовать МО на рынке? Знает кто нибудь такие успешные примеры? Ага, сейчас приведут в пример Беттера, но и он слился в последующем времени...  

 
mytarmailS:

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

У вас есть предложения как представлять данные сети? пожалуйста поделитесь, для этого мы все здесь 

Извиняюсь за такую огромную цитату, но я сейчас пишу с телефона, а тут возможности редактирования ограничены. Можно начать затирать цитату, а потом не суметь вернуться к чистому полю для своего текста. На ПК это легко поправить, а вот на телефоне станет проблемой.
По п. 2 - я согласен с Вами, что должен бы получиться полный рандом, но на самом деле я не уверен, что у Вас период форвард-теста, на котором Вы получили обратный результат, следует сразу же за периодом, на котором проводилось обучение. У Вас есть временной разрыв между этими периодами? Обычно закономерность (если она была на рынке) перестаёт работать постепенно: график баланса в тестере сперва понижает свой угол наклона, а потом проваливается вниз. Закономерность выдохлась, её распознали и очень многие начали её эксплуатировать. Из-за этого она превращается в обратную закономерность. Однако, если под этой закономерностью имелось логическое (рыночное) обоснование, то через какое-то время она может снова начать работать. Но тут справедливо, как мне кажется, следующее: чем дольше закономерность была рабочей до этого, тем дольше будет длиться период "забвения". Но это я ещё досконально не проверял.
С нейросетями я не работаю, поэтому понятия не имею, как нужно готовить данные для их обучения. Графические (геометрические) методы неплохо распознаются глазом, но их тяжеловато формализовать. Сейчас как-раз работаю над ТС, использующей графические методы. По-моему, если где и есть пока работающие закономерности, то только здесь.
Хотел бы ещё внести кое-какие уточнения к своему предыдущему посту. Там я, вроде как, жестко прошёлся по анализу отдельных баров. Но на самом деле это не так. Анализ отдельных баров имеет право на существование, но эти ключевые бары, обычно, лежат не области вершин.
Причина обращения: