Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3467
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мне кажется прогнозировать будущее - это полумера.
Нужно учиться вовремя выходить из позиции.
И плата за ошибку - короткий убыток.
То есть, обучаем входить и обучаем выходить.
Просто так прогноз тренда - это сесть в одну сторону и не дождаться его отработки.
В идеале - да, но по факту - вероятность определить благоприятные условия для начала тренда из флэта у меня получается лучше, чем конкретную точку разворота. Вероятность скорого завершения тенденции можно прогнозировать, но это будет россыпь точек задолго до экстремума того же ZZ. В результате будем в среднем закрываться так же как и от трала на базе того же ZZ.
Я думал о системе подтверждения тенденции, и если ожидания уменьшились, то закрываемся - проверяем состояние не на каждом баре.
Сделал для покупок..
Кароч для покупок сливат но по четкой причине, волатильность.
Если та свеча на которую тригернул сигнал была аномально волатильной то вход по открытию получаеться черти где
Но если волатильность нормальная и рынок спокойный то и вход нормальный
Так случилось что 4 из 5ти тригеров оказались на екстримальной волатильности...
Так что пока так.. надо как то нормировать силу сигнала к волатильности..
Также интересная картина если перейти с м1 на м15 и увеличить порог входа
Как я понял, есть значения предикторов, которые изменяются раз в минуту, и есть значения настроек стратегии, которые вы перебираете и смотрите результат.
Да, так и есть. И торговаля происходит в течении этой минуты, так как это HFT.
Думаю, тут всё же уместно использовать кластеризацию, но только на тех предикторах, что меняются раз в минуту - они и определяют состояние рынка.
Потом для каждого кластера посмотреть уже посмотреть распределение вероятности конкретных настроек стратегии. Причём можно смотреть отдельно настройки, а можно их рассматривать как сет нумерованный. В итоге получится такая вот база - с показателями вероятности и оценкой финансового результата для каждой настройки. Далее просто определяете текущий кластер и выбираете оптимальные настройки.
Получается, определяемся с набором предикторов, кластеризуем их все вместе в разные кластеры, затем строим модель, которая говорит нам, какие настройки для какого кластера дадут наибольшую вероятность прибыльной торговли. Здесь от моей изначальной затеи появляется слой с кластеризацией - мы надеемся, что раскидав определяющие режим фичи в кластеры, модели легче будет натренироваться и определять профитные комбинации параметров?
Другой вариант - мультиклассификация для каждой настройки. Если настройки влияют на ТС через функцию - можно регрессию. Потом брать ответы от каждой модели и использовать в качестве настроек
Имеете в виду регрессию параметров для прибыльной торговли, примерно как обсуждалось на пару сообщений выше? Попробовал натренировать RandomForestRegressor, которому в качестве фич скармливаю минутные предикторы, а так же полученный за минуту профит в виде пока просто знака, а в качестве dependent value два параметра для ТС, сильно влияющие на поведение ТС. В бектестер пока не запустил, но пока не вижу, распределения предсказаний для положительной торговли и отрицательной сильно отличаются.
Ещё есть вариант посмотреть в сторону ранжирования и рекомендательных систем - в теории сможете получать наборы оптимальных настроек под текущую ситуацию. Правда, пока руки у меня не дошли до этого, поэтому только в теории тут.
А попадались какие-то полезные статьи по этой теме, в которые могли бы ткнуть для ликбеза? Был ба благодарен.
Aleksey Vyazmikin #:
Не очень понимаю, какие могут возникнуть сложности применения модели - посмотрите у них на сайте много примеров с детальным кодом для питона - сам я не специалист по питону. Опять же можно использовать ONNX - в теории.
А, Вы про данные, по которым торгуете и на которых формируете настройки стратегии, верно?
В чём храните данные?
Да, так и есть - говорю про данные для бектестера. Данные изначально скачиваются в формате CSV от вендора данных, а затем конвертятся в формат данных библиотеки Numpy - npz, в нём и хранятся. Это ZIP архив, но данные не сжаты.
Получается, определяемся с набором предикторов, кластеризуем их все вместе в разные кластеры, затем строим модель, которая говорит нам, какие настройки для какого кластера дадут наибольшую вероятность прибыльной торговли. Здесь от моей изначальной затеи появляется слой с кластеризацией - мы надеемся, что раскидав определяющие режим фичи в кластеры, модели легче будет натренироваться и определять профитные комбинации параметров?
После кластеризации считаете просто вероятность благоприятного исхода в каждом кластере для каждой комбинации настроек. Либо сохраняете настройки по числу кластеров и успокаиваетесь, либо сохраняете метрики для лучших N вариантов и, допустим, рандомом их берёте потом для применения в течении минуты.
С числом кластеров надо экспериментировать.
Можно построить несколько раз кластерную модель (на тех же данных или нет - с исключением предикторов или строк) - так же рассчитать статистики, но применять настройки только если в двух кластерах есть комбинация настроек, превышающая заданный порог благоприятного исхода.
Имеете в виду регрессию параметров для прибыльной торговли, примерно как обсуждалось на пару сообщений выше? Попробовал натренировать RandomForestRegressor, которому в качестве фич скармливаю минутные предикторы, а так же полученный за минуту профит в виде пока просто знака, а в качестве dependent value два параметра для ТС, сильно влияющие на поведение ТС. В бектестер пока не запустил, но пока не вижу, распределения предсказаний для положительной торговли и отрицательной сильно отличаются.
Регрессия может работать, если есть функциональная зависимость настроек от предикторов, если её нет, то лучше пробовать мультиклассификацию. И я не понял, как можно подавать фин результат в качестве предиктора - он же не известен будет модели...
Да, так и есть - говорю про данные для бектестера. Данные изначально скачиваются в формате CSV от вендора данных, а затем конвертятся в формат данных библиотеки Numpy - npz, в нём и хранятся. Это ZIP архив, но данные не сжаты.
Попробуйте feather - загружает быстро и данные несколько сжаты относительно csv, можно изменить тип данных перед сохранением для уменьшения размера.
А попадались какие-то полезные статьи по этой теме, в которые могли бы ткнуть для ликбеза? Был ба благодарен.
Попадались - браузер глюкнул и всё потерялось, к сожалению. Но при желании можно найти.
Понял, спасибо. По сути, это labeling по режимам где мы либо торгуем, либо вообще не торгуем. Я хочу пойти немного дальше и как-то подбирать более оптимальные (с точки зрения МЛ модели) параметры для следующей минуты торговли.
Да,
Есть такая реализация, пока что не в паблике. Используются 2 (одна торговать/не торговать, вторая бай/селл) модели и как бы матрица соответствия между ними. Они обучаются по очереди и как бы обмениваются ошибками, каждая пытается минимизировать свою, выбрасывая часть плохих примеров в обучающий датасет другой модели. И так n итераций. В идеале должен быть хороший accuracy у каждой из них после нескольких переобучений. Пока что довольно сырое, не довел до ума еще.
Плюс в последней статье датасет для основной модели тоже чистится через bad samples book, то есть финальная модель обучается только на тех примерах, которые она хорошо классифицирует. В итоге можно добиться 0.99 accuracy при ее обучении. А вторая модель определяет текущий кластер, поэтому ее accuracy или F1 (F1 лучше для несбалансированных классов) тоже 0.99.
Получается, что обе модели с 0.99. Интересный эффект. Теперь остается выбрать тот кластер, который оказывает хорошую "поддержку" для первой модели. То есть на котором она лучше зарабатывает.
И результаты иногда тоже интересные. Справа от вертикальной линии ООС (просто пример. Бывают картинки лучше/хуже):
Перенёс код ZZ на MQL5.
Вообще, фишка этого ZZ в игнорировании выбросов.
Именно - алгоритм нужно воспроизводить из разных мест!
круто!
Последний экстремум перерисовывается, формируется когда?
Сделал для покупок..
Кароч для покупок сливат но по четкой причине, волатильность.
Если та свеча на которую тригернул сигнал была аномально волатильной то вход по открытию получаеться черти где
Но если волатильность нормальная и рынок спокойный то и вход нормальный
Так случилось что 4 из 5ти тригеров оказались на екстримальной волатильности...
Так что пока так.. надо как то нормировать силу сигнала к волатильности..
Также интересная картина если перейти с м1 на м15 и увеличить порог входа
Больше года назад сделал ТС, которая один в один имела точно такой дефект: открывала сделку не в ту сторону перед большим движением. Причем в прогоне за год (несколько сотен сделок) ТС собирала практически все такие случаи: как движуха свыше 100 пипсов в одной свече Н1, обязательно открывает в противоположную сторону! За год не удалось побороть этот дефект. При таком дефекте даже с ошибкой классификации около 10% не удается построить прибыльную ТС.
круто!
Последний экстремум перерисовывается, формируется когда?
Перерисовывается при появлении нового экстремума, вектор не меняет.
Этот ZZ работает со сформированными данными в качестве линейного аппроксиматора.
Условия формирования являются алгоритмом на котором и работает построение ZZ - наиграюсь - расскажу :) Ничего сложного там нет.
Больше года назад сделал ТС, которая один в один имела точно такой дефект: открывала сделку не в ту сторону перед большим движением. Причем в прогоне за год (несколько сотен сделок) ТС собирала практически все такие случаи: как движуха свыше 100 пипсов в одной свече Н1, обязательно открывает в противоположную сторону! За год не удалось побороть этот дефект. При таком дефекте даже с ошибкой классификации около 10% не удается построить прибыльную ТС.