Использование машинного обучения в трейдинге | XCritical

 

Содержание

Машинное обучение: прогнозируем цены акций на фондовом рынке

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

Машинное и глубокое обучение стали новой эффективной стратегией, которую для увеличения доходов используют многие инвестиционные фонды. В статье я объясню, как нейронные сети помогают спрогнозировать ситуацию на фондовом рынке — например, цену на акции (или индекс). В основе текста мой проект, написанный на языке Python. Полный код и гайд по программе можно найти на GitHub. Другие статьи по теме читайте в блоге на Medium.

Нейронные сети в экономике

Изменения в сфере финансов происходят нелинейно, и иногда может показаться, что цены на акции формируются совершенно случайным образом. Традиционные методы временных рядов, такие как модели ARIMA и GARCH эффективны, когда ряд является стационарным — его основные свойства со временем не изменяются. А для этого требуется, чтобы ряд был предварительно обработан с помощью log returns или приведён к стационарности по-другому. Однако главная проблема возникает при реализации этих моделей в реальной торговой системе, так как при добавлении новых данных стационарность не гарантируется.

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

Обычно data science проект состоит из следующих операций:

  1. Сбор данных — обеспечивает набор необходимых свойств.
  2. Предварительная обработка данных — часто пугающий, но необходимый шаг перед использованием данных.
  3. Разработка и реализация модели — выбор типа нейронной сети и её параметров.
  4. Модели бэктестинга (тестирование на исторических данных) — ключевой шаг любой торговой стратегии.
  5. Оптимизация — поиск подходящих параметров.

Сбор данных

К счастью, необходимые для этого проекта данные можно найти на Yahoo Finance. Данные можно собрать, используя их Python API pdr.get_yahoo_data(ticker, start_date, end_date) или напрямую с сайта.

Предварительная обработка данных

В нашем случае данные нужно разбить на обучающие наборы, состоящие из 10-ти прошлых цен и цены следующего дня. Для этого я определил класс Preprocessing , который будет работать с обучающими и тестовыми данными. Внутри класса я определил метод get_train(self, seq_len) , который преобразовывает обучающие входные и выходные данные в NumPy массивы, задавая определенную длину окна (в нашем случае 10). Весь код выглядит так:

Аналогично я определил метод, который преобразовывает тестовые данные X_test и Y_test .

Модели нейронных сетей

Для проекта я использовал две модели нейронных сетей: Многослойный перцептрон Румельхарта (Multilayer Perceptron — MLP) и модель Долгой краткосрочной памяти (Long Short Term Model — LSTM). Кратко расскажу о том, как работают эти модели. Подробнее о MLP читайте в другой статье, а о работе LSTM — в материале Джейкоба Аунгиерса.

MLP — самая простая форма нейронных сетей. Входные данные попадают в модель и с помощью определённых весов значения передаются через скрытые слои для получения выходных данных. Обучение алгоритма происходит от обратного распространения через скрытые слои, чтобы изменить значение весов каждого нейрона. Проблема этой модели — недостаток «памяти». Невозможно определить, какими были предыдущие данные и как они могут и должны повлиять на новые. В контексте нашей модели различия за 10 дней между данными двух датасетов могут иметь значение, но MLP не способны анализировать такие связи.

Для этого используется LSTM или Рекуррентные нейронные сети (Recurrent Neural Networks — RNN). RNN сохраняют определенную информацию о данных для последующего использования, это помогает нейронной сети анализировать сложную структуру связей между данными о ценах на акции. Но с RNN возникает проблема исчезающего градиента. Градиент уменьшается, потому что количество слоев повышается и уровень обучения (значение меньше единицы) умножается в несколько раз. Решают эту проблему LSTM, увеличивая эффективность.

Реализация модели

Для реализации модели я использовал Keras , потому что там слои добавляются постепенно, а не определяют всю сеть сразу. Так мы можем быстро изменять количество и тип слоев, оптимизируя нейронную сеть.

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

Начнем с более простой модели — MLP. В Keras строится последовательность и поверх неё добавляются плотные слои. Полный код выглядит так:

С помощью Keras в пяти строках кода мы создали MLP со скрытыми слоями, по сто нейронов в каждом. А теперь немного об оптимизаторе. Популярность набирает метод Adam (adaptive moment estimation) — более эффективный оптимизационный алгоритм по сравнению с стохастическим градиентным спуском. Есть два других расширения стохастического градиентного спуска — на их фоне сразу видны преимущества Adam:

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

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

Adam объединяет в себе преимущества этих расширений, поэтому я выбрал его.

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

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

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

Для модели LSTM используется похожая процедура, поэтому я покажу код и немного объясню его:

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

Модели бэктестинга

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

Однако, это упрощенная версия тестирования. Для полной системы бэктестинга нужно учитывать такие факторы, как «ошибка выжившего» (survivorship bias), тенденциозность (look ahead bias), изменение ситуации на рынке и транзакционные издержки. Так как это только образовательный проект, хватает и простого бэктестинга.

Прогноз моей модели LSTM на цены акций Apple в феврале

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

Оптимизация гиперпараметров

Для улучшения результатов модели после тестирования часто нужна оптимизация. Я не включил её в версию с открытым исходным кодом, чтобы читатели могли сами попробовать оптимизировать модель. Тем, кто не умеет оптимизировать, придется найти гиперпараметры, которые улучшат производительность модели. Есть несколько методов поиска гиперпараметров: от подбора параметров по сетке до стохастических методов.

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

Вывод

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

Что такое машинное обучение в трейдинге

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

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

Что такое машинное обучение в трейдинге

Могут ли машины торговать лучше людей?

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

  • новости;
  • исторические данные;
  • отчетность;
  • сообщения от инсайдеров компании и много другое.

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

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

Как работает машинное обучение в торговле

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

Удобный трюк, которым пользуются специалисты по трейдингу с помощью машинного обучения, — это объединение различных прогнозов в один, который в таком случае получается более точным. Это называется ансамблем, и он работает очень хорошо.

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

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

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

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

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

ИИ сегодня умнее людей?

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

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

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

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

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

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

Что такое машинное обучение в трейдинге

Где лучше всего работают алгоритмы?

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

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

Машинное обучение в трейдинге

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

Дисклэймер

ИИ играет важную роль в маркетинге, но, возможно, не такую, какую вы сейчас представляете. К сожалению, он пока еще не способен стать супермашиной и самостоятельно превзойти в продажах по всем рынкам. Даже Renaissance Technologies не способны на это, по крайней мере сейчас.

Почему так?

Если ответить кратко: человеческая конкуренция, но об этом чуть-чуть позже.

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

К примеру, 4 основных применения ИИ на данный момент это:

Анализирование данных

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

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

Это невероятно ценная функция особенно полезна для трейдеров, которым необходимо всегда оставаться в курсе событий первыми.

Прогнозирование реальных данных

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

  • Прогноз погоды на северо-востоке на следующие пару недель;
  • Потребление солнечной энергии в Европе;
  • Итоги политических выборов.

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

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

Поиск данных

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

Алгоритмы ИИ — это и есть машины, для поиска данных. Если аналитик сомневается в какой-либо информации, он может сэкономить свое время на поиск ошибки с помощью ИИ.

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

Настройка машин в высокочастотной торговле

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

Люди не могут совершать такие сделки — их слишком много, однако именно люди определяют правила, по которым работают эти машины.

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

! 3 предупреждающих знака! — Что следует понимать

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

1.ИИ на сегодняшний день НЕ умнее людей

Реально, даже самый современный алгоритм очень примитивен по сравнению с человеческими мозгами.

Когда алгоритм побеждает человека в шахматах или в GO, это выглядит так же, как когда машина сбивает человека в беге на четверть мили. Да, она работает быстрее, но это не делает её лучше. Это просто означает, что мы сумели построить машину, которая способна очень хорошо выполнять очень специфическую задачу в определенных, очень узких, условиях.

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

2. Опубликованные стратегии по торговле часто не работают в реальной жизни

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

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

Эффект самоотбора

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

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

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

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

Комиссионные и проскальзывание (слиппедж)

В общем говоря, построенить торговую стратегии, которая опередит рынок не так сложно — ЕСЛИ забыть о реальных расходах на торгах. Комиссии (сборы, которые трейдеры платят за каждую продажу) и проскальзывание (термин обозначающий изменение цены в промежуток между сделкой и актуальной торговлей) съедают большую часть прибыли. И почти в каждом случае, этого достаточно, чтобы не получать то, на что рассчитывали.

Графики меняются со временем

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

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

Это требует огромной способности адаптироваться, и на данный момент, люди гораздо лучше справляются с этим, чем машины.

3. Одни алгоритмы никогда не дадут вам преимущества

Легко сконцентрироваться только на одних алгоритмах, как на единственном преимуществе перед другими торговыми стратегиями.

По существу, такие компании как Numerai это и предлагают:

  • Комбинировать хорошие торговые стратегии с целью создать лучшую.
  • Срывать куш.

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

Немного надежды: неэффективные рынки все еще могут быть прибыльными

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

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

Источник https://habr.com/ru/company/netologyru/blog/428227/

Источник https://xcritical.com/ru/blog/ispolzovanie-mashinnogo-obucheniya-v-treydinge/

Источник https://medium.com/nuances-of-programming/%D0%BC%D0%B0%D1%88%D0%B8%D0%BD%D0%BD%D0%BE%D0%B5-%D0%BE%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-%D1%82%D1%80%D0%B5%D0%B9%D0%B4%D0%B8%D0%BD%D0%B3%D0%B5-37b865d53924

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *