3Qu
3Qu личный блог
13 декабря 2019, 19:20

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

В прошлом посте  Мода на Машинное Обучение мы выяснили, что Машинное Обучение (МО) может решить только конкретные задачи, т.к. единственное чем занимается, так это подбором решения под заранее известные ответы, но делает это оч качественно. Посмотрим, где в ТС можно найти такие задачи.
Пусть у нас возникла идея замечательной ТС. Мы накидали на график всяческих индикаторов, ну, и прям видно — вот оно, счастье. Начали долго и муторно писать логику входов в сделку и пр. Параметры индикаторов и их сочетания неизвестны, логику еще продумывать надо, количество if зашкаливать начинает — эт только на глаз все хорошо и просто.
Подождите, так нам нужно найти всего лишь некоторый набор математических выражений для описания нашей стратегии, а это как раз задача для МО, и, по идее, МО должно с такой задачей хорошо справиться.
Итак, берем нашу стратегию, пишем несложную логику в общих чертах описывающую нашу стратегию — получаем как-бы упрощенный вариант стратегии. С помощью этой логики (упрощенной стратегии) выделяем интервалы обучения и генерируем обучающие последовательности. Подготавливаем данные — приводим все это к виду понятному МО. Обучаем на этих данных МО, проверяем на независимых данных — получаем готовую стратегию. Естественно, упрощенную логику (стратегию) оставляем как часть стратегии, ограничивающую область применения МО.
Собственно, сэкономили на написании логики стратегии.
Ну, а будет работать такая стратегия или нет — это уже зависит не от МО, а от идеи самой стратегии. Естественно, предполагаем, что как готовить данные, обучать-проверять — это мы хорошо знаем и все правильно делаем.
5 Комментариев
  • ves2010
    13 декабря 2019, 21:13
    вот сам подумай… у тебя есть нейросеть… и ты ей поручаешь построить дом… звучит безумно… а дальше думай сам…
      • ves2010
        13 декабря 2019, 22:44
        3Qu, не надо писать… просто подумай… я не хочу грааль палить… поэтому указываю только отправную точку
  • Xaba3abr
    27 декабря 2019, 00:43
    Долго занимался этим подходом. Только формулировал иначе: перейти от набора булевых правил типа «если стохастик > 85,  и ма-1>ма-2, и… и..., то продаем» к более абстрактному уровню: модели, описывающей взаимодействие входных параметров. Кажется очевидным, что бОльшая часть проблемы переподгонки связана именно с фиксированными значениями параметров стратегии. Интуитивно хочется перейти от значений параметров к некоей модели взаимосвязи параметров, которая окажется более универсальной. 

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

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

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


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

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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн