Блог им. 3Qu

Применение Машинного Обучения в Торговых Стратегиях

    • 13 декабря 2019, 19:20
    • |
    • 3Qu
  • Еще
В прошлом посте  Мода на Машинное Обучение мы выяснили, что Машинное Обучение (МО) может решить только конкретные задачи, т.к. единственное чем занимается, так это подбором решения под заранее известные ответы, но делает это оч качественно. Посмотрим, где в ТС можно найти такие задачи.
Пусть у нас возникла идея замечательной ТС. Мы накидали на график всяческих индикаторов, ну, и прям видно — вот оно, счастье. Начали долго и муторно писать логику входов в сделку и пр. Параметры индикаторов и их сочетания неизвестны, логику еще продумывать надо, количество if зашкаливать начинает — эт только на глаз все хорошо и просто.
Подождите, так нам нужно найти всего лишь некоторый набор математических выражений для описания нашей стратегии, а это как раз задача для МО, и, по идее, МО должно с такой задачей хорошо справиться.
Итак, берем нашу стратегию, пишем несложную логику в общих чертах описывающую нашу стратегию — получаем как-бы упрощенный вариант стратегии. С помощью этой логики (упрощенной стратегии) выделяем интервалы обучения и генерируем обучающие последовательности. Подготавливаем данные — приводим все это к виду понятному МО. Обучаем на этих данных МО, проверяем на независимых данных — получаем готовую стратегию. Естественно, упрощенную логику (стратегию) оставляем как часть стратегии, ограничивающую область применения МО.
Собственно, сэкономили на написании логики стратегии.
Ну, а будет работать такая стратегия или нет — это уже зависит не от МО, а от идеи самой стратегии. Естественно, предполагаем, что как готовить данные, обучать-проверять — это мы хорошо знаем и все правильно делаем.
★3
5 комментариев
вот сам подумай… у тебя есть нейросеть… и ты ей поручаешь построить дом… звучит безумно… а дальше думай сам…
avatar
ves2010, мы не поручаем построить дом, сделать стратегию и пр. — это непосильно для МО. Стратегию вы строите сами.
В данном случае, мы поручаем МО уточнить нашу стратегию на основе уже имеющейся базовой стратегии исходя из результатов ее прогонов на рыночных данных. Т.е., обобщить статистику применения и выбрать подходящие оптимальные параметры для логики. А это как раз реальная задача для МО.
МО все сделает как надо, но если идея вашей стратегия неработоспособна, МО здесь будет бессильно — оно неспособно найти то, чего нет.) Если ваша стратегия неработоспособна, откуда там взяться разделяемой статистике? А с разделяемой МО оч хорошо справляется.
avatar
3Qu, не надо писать… просто подумай… я не хочу грааль палить… поэтому указываю только отправную точку
avatar
ves2010, эт правильно, не надо палить Граали. ) Ликвидность и так невелика, нам ни к чему конкуренты в стакане.
avatar
Долго занимался этим подходом. Только формулировал иначе: перейти от набора булевых правил типа «если стохастик > 85,  и ма-1>ма-2, и… и..., то продаем» к более абстрактному уровню: модели, описывающей взаимодействие входных параметров. Кажется очевидным, что бОльшая часть проблемы переподгонки связана именно с фиксированными значениями параметров стратегии. Интуитивно хочется перейти от значений параметров к некоей модели взаимосвязи параметров, которая окажется более универсальной. 

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

Тогда решил перейти от классификации к регрессии и предсказывать не исход, а МФЕ сделки, т.е. сколько она пройдет после входа. Потому что лоси и профиты системы сильно обусловлены способом выбора тейков. А в моем роботе он был краеугольным камнем успеха. Идея была ставить тейк по предсказанию модели. Если предсказывает слишком малое движение в сторону сигнала — не торговать вообще.

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


Но когда прогнал робота с такой моделью, оказалось, что на «слабофильтрованном» множестве сигналов, на которых он обучался (~6к) он торгует практически все, т.е. фильтрация минимальная, т.е. цели он хоть и определяет, но лосей не видит. Для примера, «нормальное» рабочее множество сигналов на классической оптимизации с полной фильтрацией составляет ~1к. Классическое же определение целей на том же слабофильтрованном множестве (т.е. ставим тейки по параметрам рынка и мувингам некоторым) дает результат лучший, чем SVR.

Вот сейчас думаю, что теперь делать. По-хорошему надо бы сначала обучить все же классификацию, пытаясь отделить сделки, которые прошли в сторону сигнала некоторое минимальное расстояние, пригодное для извлечения прибыли, от тех, которые его не прошли, чтобы отсечь кучу мусорных сделок, как-то отсеять лосей без привязки к тейкам. И затем обучать регрессию с определением целей уже на множестве нормальных сигналов, чтобы не обучать ее на мусоре. Но классификация по SVC при первой прикидке не получается от слова совсем (а pairplot'ы демонстрируют, что мои признаки разделяют классы «хорошая/плохая сделка» чуть более, чем никак). Надо бы снова проверить сетки и деревья что ли…
avatar

теги блога 3Qu

....все тэги



UPDONW
Новый дизайн