Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 170
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Например вы провели валидацию на отложенной выборке. Допустим модель на отложенных данных слилась. Что вы делаете в таком случае? Если вы начнёте опять что-то подбирать в параметрах чтоб успешно пройти валидацию на отложенной выборке - вы по сути включаете данные из отложенной выборки в свою кроссвалидацию, и кроссвалидация становится тоже подогнанной. Это можно поправить добавив новую отложенную выборку. А что если модель и на ней сольёт? Подбирать параметры чтоб пройти и новую отложенную выборку? Это бесконечная гонка.
Включать отложенную выборку в кроссвалидацию, и создавать новую отложенную выборку это не выход, а бесконечный повтор до тех пока удача вам улыбнётся и модель случайно пройдёт отложенную валидацию. Тогда можно остановиться, но это не решение форекса, а просто удача вам улыбнулась, что однако по статистике будет сливом.
Так что вопрос - допустим модель на отложенных данных слилась. Что вы делаете в таком случае?
Так что вопрос - допустим модель на отложенных данных слилась. Что вы делаете в таком случае?
Я так подумал, вопрос получился таки слишком личным :)
Лучше так - если у вас модель не прошла тест на отложенной выборке, вы включаете отложенную выборку в кроссвалидацию, и создаёте новую отложенную выборку? Или действуете иначе?
Я например взял за основу то что Сан Саныч повторил уже 1000 раз - нужно оценивать качество предикторов. "Качество" - понятие растяжимое. Я например это делаю через такую кроссвалидацию, и это скорее отбор предикторов чем параметров модели. Если модель при обучении находит в данных одни и теже зависимости на любом участке - это весомый аргумент того что предикторы ок.
Мне не нравится в моём подходе что приходится торговать ансамблем. Если зависимости постоянны, то достаточно на отобранных предикторах в конце обучить всего одну модель, и она найдёт опять теже зависимости, и сможет торговать сама. Но у меня что-то в отборе предикторов не хватает, одна модель не справляется.
Все это происходит потому что рынок ходит против своей же статистики мега часто...
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 что сеть что СММ итп.. так или иначе строят свои прогнозы статистически....
По сути это ответ почему модель ломается практически на второй день после своей оптимизации, будь она (оптимизация) хоть трижды генетическая и четырежды про кросвалидирована...
Что делать??? пока сам не знаю
1)
==================================================================
первое что я делал это тренировал две глубокие сети с вероятностными выходами, по сути, подойдут любые сети, главное чтоб выход у сети был не четкий ответ класса - «1», «0» , а вероятность принадлежности к классу, то есть выход будет допустим - «0,13» и это будет означать что текущие данные принадлежат классу «1» в вероятностью - «0,13%»
Одна сеть у меня тренировалась исключительно на бай, вторая исключительно на селл.
Сигналом (целевой фун. ) на сел является точка с которой было падение не менее 0,2% от цены,
то есть, по сути, мы ищем точку разворота… Целевая выглядит так «000000000010000000000» где «1» разворот на сел, «0» - не разворот.
Для разворота вверх все то же самое соответственно …
В качестве предикторов брались все цены трех последних свечей OHLC и строились всевозможные комбинации разниц между ними
Итак, сети натренированы, берем предсказания сети (их выходы) и строим графики под ценой.
Если присмотреться на РИС. 2 то даже на глаз заметно что график цены ходит против этих вероятностей
Глядя на РИС. 5 сомнений не остаётся, цена ходит против прогнозов сетей, а также можно сделать интересный вывод что с помощью нейросетей и их статистических вероятностей мы смогли полностью реконструировать цену всего лишь на вероятностных знаниях будет ли разворот на следующей свече или нет.
BlackTomcat:
1) Прочитал Ваш пост и немало удивился. Если я всё правильно понял,
2) приведя в итоге с помощью нейросети их к некой вероятности. Но, простите, Вам самому не кажется такой подход слишком уж примитивным? :) Вы не то и не там копаете. Оттого и результат прямо противоположный реальности.
3) Ваш подход я бы охарактеризовал так: Вы пытаетесь взять 3 пикселя из картинки FullHD, и по этим трём пикселям составить представление о всей картине. Ну ладно, не всей, но какова вероятность правильного прогноза хотя бы 10% площади изображения? Надеюсь, мой пример понятен. Нужно смотреть не на пиксели, чтобы увидеть картинку.
4) Иными словами, нужно смотреть не на отдельные бары, чтобы понять график, нужно смотреть на весь график. И решение задачи лежит, скорее, в области геометрии, а не алгебры, физики или биологии, например. Хотя когда я читаю некоторые исследования, которые люди тут проводят, то у меня возникает стойкое ощущение, что они пытаются постичь строение человека с помощью географии. :)
1) првильно..
2) ок, но тогда почему вероятность противоположная, по сути должен быть тупо рандом а не обратная корреляция
3) Согласен, нужно брать максимум информации в максимально сжатом виде, потому и поговариваю в последнее время про профиль объема, ну или альтернативы какие то..
У вас есть предложения как представлять данные сети? пожалуйста поделитесь, для этого мы все здесь
4) Я абсолютно солидарен с вами, я сам уже много времени ломаю голову как, как это сделать, вот например надо запомнить все уровни которые входят в диапазон в котором сейчас находиться цена, как такое сделать? как подать уровни в сеть? к тому же их количество на каждой свече будет разным понимаете?, это совсем не тривиальная задача, для меня то точно..
p.s. умоляю не цитируйте полностью мою писанину, достаточно и нескольких слов чтобы понять что вы ко мне обращаетесь, прошу вас удалите лишнее
Умные ведь люди, нейросети всякие разрабатывают и тренируют, а простых вещей всё-таки не видят. Прочитал Ваш пост и немало удивился. Если я всё правильно понял, то Вы, грубо говоря, нашли все падения цены на 0,2% после некого хая, потом взяли три свечи в районе этого хая и провели некую манипуляцию с их ценами, приведя в итоге с помощью нейросети их к некой вероятности. Но, простите, Вам самому не кажется такой подход слишком уж примитивным? :) Вы не то и не там копаете. Оттого и результат прямо противоположный реальности. Ваш подход я бы охарактеризовал так: Вы пытаетесь взять 3 пикселя из картинки FullHD, и по этим трём пикселям составить представление о всей картине. Ну ладно, не всей, но какова вероятность правильного прогноза хотя бы 10% площади изображения? Надеюсь, мой пример понятен. Нужно смотреть не на пиксели, чтобы увидеть картинку. Иными словами, нужно смотреть не на отдельные бары, чтобы понять график, нужно смотреть на весь график. И решение задачи лежит, скорее, в области геометрии, а не алгебры, физики или биологии, например. Хотя когда я читаю некоторые исследования, которые люди тут проводят, то у меня возникает стойкое ощущение, что они пытаются постичь строение человека с помощью географии. :)
Согласен. Нужно смотреть картинку целиком.
Но это годится только для статичной картинки. То есть, мы можем условно разбить всю картинку на 100 частей, на 70 частях обучаться, а на 30 получим отличные предсказательные способности. Примерно так же и поступают с прогнозированием на рынке. Тогда в чем же загвоздка? Почему возникают проблемы уже в реалтайм?
А загвоздка в том, что картинка не статична. Это кино. Естественно, изучив и научившись прогнозировать на одном из кадров фильма предсказывать соседние области картинки в реале бесполезно - следующий кадр то уже другой! И ни один из кадров этого фильма не имеет абсолютных копий, и даже если и обнаружатся похожие кадры в будущем как было в прошлом, то после этих кадров следуют другие, не такие как следовали в прошлом за похожим кадром. В этом проблема.
Таким образом, если смотреть на отдельные кадры фильма, то можно сделать даже вывод, что кадры случайны, так же многие убеждены, что рынок очень случаен если и не на 100%. Но мы то знаем, что когда смотрим фильм в нем есть смысл, мы можем даже с легкостью прогнозировать что случится в конце фильма! Так в чем же дело? - может быть в том, что нужно смотреть ширше, нужно исследовать более глобальные закономерности, которые не меняются никогда - например я как то проверял, на сколько % в среднем цена возвращается назад, так вот, получалось что то около 30% (еслине изменяет память), но суть в том, что эта цифра практически одинакова для всех ТФ и для всех инструментов (валютные пары и металлы, для CFD и других не проверял, но похоже что получится так же)! Это удивительно. Именно такие постоянные закономерности и нужно использовать, но зачастую проще это делать без всяких нейронных сетей, лесов и пр., так как для того, что бы использовать МО, то нужно уметь определять смысл в фильме, а это огого как не просто если вообще возможно.
А загвоздка в том, что картинка не статична. Это кино.
Приведу ещё одну аналогию.
Практически у каждого на смарте есть умные клавиатуры. Если набрать слово, то клава предлагает следующее слово. Это зависит от слова и набранных предыдущих слов. Я пробовал, можно даже набирать вполне осмысленный текст из слов предлагаемых клавой. Слова - паттерны, группа слов - группа паттернов.
Но эта технология будет бессильна на рынке, так же как и рассматриваемые здесь МО, потому что на рынке "слова" со временем меняются (очерёдность и комбинация отдельных букв), и меняется смысл отдельных "слов". Остается только некий высший смысл всего текста, который конечно нам не доступен.
Сейчас меня спросят: а что теперь делать? - я не знаю что делать с МО, результат всё равно будет хреновым.
Или даже скажет кто то: "Да ты просто не умеешь готовить МО!" - наверное да, не умею. Но кто вообще умеет? У кого получалось использовать МО на рынке? Знает кто нибудь такие успешные примеры? Ага, сейчас приведут в пример Беттера, но и он слился в последующем времени...
2) ок, но тогда почему вероятность противоположная, по сути должен быть тупо рандом а не обратная корреляция
У вас есть предложения как представлять данные сети? пожалуйста поделитесь, для этого мы все здесь