{"id":13517,"url":"\/distributions\/13517\/click?bit=1&hash=2dff2b3571f12271362884bb2d6d3bd4b1c8ef58488b739a938faca75421e327","title":"\u0427\u0435\u043a-\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0436\u0434\u0451\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0421\u042d\u0421","buttonText":"\u0421\u043c\u043e\u0442\u0440\u0435\u0442\u044c","imageUuid":"44ce55da-8f18-5632-aa12-06c7747270d1","isPaidAndBannersEnabled":false}
Аполлон Степанов

Управление ансамблем торговых алгоритмов с помощью нейронных сетей

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

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

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

В данной статье я рассматриваю один из способов решения данной задачи с применением нейронных сетей.

В данной статье будут приложены датасеты, скрипты алгоритмов на индикаторах, результаты экспериментальных исследований системы управления и торговых алгоритмов на индикаторах на нейронных сетях. Что-то вы можете посмотреть самостоятельно, покрутить и проверить.

Как обычно, приветствуется здравая критика, замечания, предложения и в общем всё то, что поможет друг другу зарабатывать больше.

Постановка задачи

Взгляните на рис. 1, у нас есть N-ое количество торговых алгоритмов. Это могут быть совершенно разные алгоритмы, работающие по совершенно разной логике. Это может быть математика, графический анализ, торговля по уровням, свечной анализ, фундаментальный, технический и всё то, что вам придёт в голову. При этом, совершенно очевидно, что разные системы будут давать разные сигналы, может быть иногда даже взаимоисключающие. Но очень хочется на основании всего этого винегрета получить некое обобщенное консолидированное мнение, которое в идеале должно значительно повысить эффективность торговли. То есть, цель – повышение эффективности торговли (увеличение доходности и снижение рисков) за счёт создания системы управления, которая бы смогла во всём этом разобраться и брать самостоятельно то, что нужно и когда нужно.

Рис. 1. Принципиальная схема по управлению торговыми алгоритмами с помощью нейронных сетей

Торговые алгоритмы

В данной мы будем рассматривать 2 набора алгоритмов на технических индикаторах. Первый набор (табл. 1), который у нас будет уходить на нейронные сети (в смысле использования его торговых сигналов). И второй набор, который будет использоваться для сравнения эффективности торговли. Данные наборы алгоритмов будут отличаться от предыдущей статьи. Отдельно я приведу данные чистого торгового алгоритма на нейронных сетях, чтобы было какое-то адекватное понимание места всей этой системы среди остальных способов торговли.

Табл. 1

Перечень алгоритмов, данные которых идут в систему управления на нейронных сетях

Сравниваться мы будем со следующими стратегиями: EMA3_EMA9, EMA9_EMA20, EMA12_EMA26, EMA20_EMA50, MACD, MACD_EMA, Stochastic, Stochastic_EMA. По сравнению с предыдущей статьёй число торговых алгоритмов увеличено в связи с необходимость показать более релевантные результаты системы управления на нейронных сетях.

Для оценки сравнительной эффективности, результаты торговых алгоритмов на индикаторах выполняли в пакете TSLab. В ходе исследований эффективности торговых алгоритмов контролировали накопленную доходность (рис. 2) и доходность на одну акцию (рис. 3).

Рис. 2. Скриншот результатов исследований алгоритма EMA3_EMA9 на инструменте AJG

Рис. 3. Скриншот результатов доходности алгоритма EMA3_EMA9 на инструменте AJG

Сами скрипты для торговых алгоритмов на индикаторах, выполненных в TSLab вы можете скачать здесь.

Разметка данных

Исходя из целей максимизации доходности была выполнена разметка так, как показано на рис. 4 и 5. Был взят максимум волн на столько, на сколько это было возможно.

Рис. 4. Общий вид разметки данных. Тикер OXY

Рис. 5. Разметка данных в приближении. Тикер OXY

Финансовые инструменты для исследований и сравнения

Как и в предыдущей статье, в качестве базы для сравнения будет выступать портфель из следующих компаний (рынок NASDAQ): AJG, ARCC, BKR, FTI, HP, INTC, OXY. Общее число инструментов равно 8.

Для большей адекватности были взяты разнородные финансовые инструменты, среди которых есть растущие инструменты (рис. 6), падающие инструменты (рис. 7) и находящиеся в боковике (рис. 8).

Рис. 6. Котировки компании AJG

Рис. 7. Котировки компании FTI

Рис. 8. Котировки компании BKR

Датасеты

Датасеты формировались следующим образом, для исследуемых инструментов брались 10 лет данных и делились так, как показано на рис. 9.

Рис. 9. Схематическое представление деления данных для обучения системы управления на нейронных сетях.

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

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

Нейронные сети

Как и в предыдущем случае, были взяты LSTM нейронные сети. В нейронные сети клали торговые сигналы сформированные торговыми алгоритмами, а также контекст их использования. В процессе обучения контролировали точность по среднеквадратическому отклонению (рис. 10).

Рис. 10. Среднеквадратическое отклонение обучающей и тестовой выборок алгоритма управления торговыми стратегиями на нейронных сетях

Результаты процесса обучения можно скачать здесь.

С целью недопущения процесса переобучения, использовалась регуляризация и дропаут.

Как видно из рис. 10, получилось весьма не плохо.

ВАЖНО! Здесь же сразу хочу обратить внимание на следующее. При обучении датасета не использовались сотни тысяч лет данных, и не было цели получить обобщенную модель по ряду причин. Данная статья и технология является демонстрационной и в качестве демонстрации, нейронная сеть была обучена на данных финансовых инструментов, рассмотренных в данной статье. Прошу учесть это во внимание, в том числе при интерпретации результатов исследований.

Результаты обучения нейронной сети по управлению торговыми алгоритмами

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

Рис. 11. Сигналы системы управления для тикера AJG: 1 линия сверху (график оранжевым цветом) – расчётные данные нейронной сети; 2 линия сверху (синяя) – ожидаемое поведение системы управления; 3 линия (зеленая) – преобразованные расчётные данные в управляющие сигналы по алгоритму на основе уровней; 4 линия (красная) - преобразованные расчётные данные в управляющие сигналы по алгоритму на среднеквадратического отклонения

Первое что бросается в глаза это внешняя зашумлённость и неточность данных и сужение амплитуды расчётных значений для управляющих сигналов (рис. 11).

Взгляните сами. Вот картина (рис. 12) управляющих сигналов для того же тикера и того же расчётного периода для торгового алгоритма на чистых нейронных сетях, который рассматривался в предыдущей статье.

Рис. 12. Картина сигналов торгового алгоритма на чистых нейронных сетях

Как вы видите, сигналы более адекватны, нет сужения волатильности, что позволяет более явно брать сигналы.

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

Тем не менее, с точки зрения эффективности не всё так плохо (табл. 2).

Табл. 2

Результаты эффективности системы управления на нейронных сетях

Как видно из результатов, в среднем они все положительные, хотя и не очень высоки. Как видно из таблицы 2, инвестиционная доходность за рассматриваемый промежуток составила порядка 19%, а доходность с применением системы управления порядка 8%. Нужно посмотреть эффективность самих алгоритмов на нейронных сетях и посмотреть как дела обстоят там.

Сравнение системы управления торговыми алгоритмами с самими торговыми алгоритмами

Результаты расчета эффективности торговых алгоритмов на индикаторах можно скачать здесь. Общий результат со всеми обработанными данными можно скачать здесь.

Табл. 3

Результаты расчета эффективности различных алгоритмов и системы управления

Табл. 4

Обобщенные результаты расчета эффективности различных алгоритмов и системы управления

Как видно из таблицы 3 и 4, в отдельности некоторые алгоритмы на торговых индикаторах показывают большую эффективность, нежели эти же самые алгоритмы управляемые системой на нейронных сетях. Однако, если рассматривать торговые алгоритмы на индикаторах в среднем, то они уступают торговле в системой управления. Порядка 4,5-5% против 8,5. То есть имеется улучшение эффективности на 88,9%, что является достаточно значительной величиной.

На данном промежутке времени все торговые алгоритмы уступили инвестиционной доходности, хотя на длительном промежутке в предыдущей статье смогли его превзойти. Это связано в первую очередь с возможностями, которые дают сами торговые алгоритмы.

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

Сравнение системы управления с торговой системой на чистых нейронных сетях

В ходе исследований как системы правления, так и торгового алгоритма на нейронных сетях контролировали сигналы, доходность на 1 акцию (рис. 13) и накопленную доходность.

Рис. 13. График доходности торгового алгоритма на нейронных сетях, тикер AJG

С результатами исследования эффективности алгоритма на нейронных сетях вы можете ознакомиться здесь. Обработанные результаты вы можете скачать здесь.

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

Табл. 5

Сравнение эффективности системы управления и торгового алгоритма на нейронных сетях

Тем не менее, система управления показывает себя вполне достойно. Она незначительно проигрывает чистым нейронным сетям.

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

Таблица 6

Деталировка эффективности обоих систем

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

Анализ статистической значимости

По предыдущим статьям, меня очень настойчиво просили делать анализ статистической значимости.

Анализ статистической значимости будем проводить по двум методикам: t-критерию теста Стьюдента и дисперсионному тесту ANOVA. Анализ статистической значимости будет проводить в python по методике изложенной здесь.

Анализ проводился для двух случаев:

- Временные ряды ожидаемых и расчётных управляющих сигналов.

- Временные ряды ожидаемых и расчётных результатов доходности.

Таблица 7

Результаты анализа статистической для системы управления на нейронных сетях: true– подобные распределения, false– отличающиеся распределения

Таблица 8

Результаты анализа статистической для торгового алгоритма на нейронных сетях: true– подобные распределения, false– отличающиеся распределения

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

Альфа в расчётах = 5% (0,05).

Выводы

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

Взгляните на рис. 14.

Рис. 14. Доходность алгоритма EMA9_EMA20 для тикера AJG

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

Полезные ссылки

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

Технологический стэк

Исследование алгоритмов разметки проводили с применением: TypeScript, Angular2+, HighCharts.

Торговые алгоритмы: TSLab 2.1.

Источник датасета для торговых алгоритмов: Финам.

Источник датасета для нейронных сетей: Yahoo.

Формирование датасета: микросервисы на Node.JS.

Нейронныесети: python/tensorflow 2/keras.

Два слова о себе. Я являюсь основателем стартапа по предиктивной аналитике международных финансовых рынков на базе нейронных сетей finprophet.com. Мне интересна тематика автоматизированного принятия решений по торговле и инвестированию, в том числе с применением нейронных сетей. Считаю, что за этой технологией будущее. Если у кого то будет желание пообщаться, можно писать мне здесь или по контактам, указанным ниже.

Контакты:

Всех благ, побед и

успехов на фондовых

рынках!

0
Комментарии
Читать все 0 комментариев
null