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

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

Пост состоит из трех основных частей:

  1. Мотивация проблемы и выбор функций
  2. Просто чертовски глубоко изучаю его (автокодировщики и LSTM)
  3. Важность альфа-фактора

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

Мотивация проблемы и выбор функций

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

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

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

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

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

Несколько дней назад я наткнулся на Tedx Talks на YouTube. Я был очень вдохновлен и воодушевлен видео, которое послужило основной движущей силой этого поста. Автор использует историю поиска Google, чтобы понять, что произошло во время финансового кризиса 2008 года.

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

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

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

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

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

В целях документации, хотя это не сразу полезно для индекса DJI, это может быть хорошим источником данных для других акций. Все отчеты 10-K и 10-Q можно найти на веб-сайте EDGAR. Я подготовил сценарий для очистки всех отчетов 10-K и 10-Q от S & P500. Тем не менее, я не загружал его, так как на очистку и загрузку уйдет много времени, не говоря уже о том, что наличие всех исторических финансовых отчетов перечисленных компаний займет огромное место на маленьком MacBook Pro с ограниченным пространством. :)



Еще один полезный инструмент, который я нашел, - это Google Ключевые слова Explorer. Он может дать абсолютный объем каждого результата поиска.



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

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

Краткий обзор подготовленного мной набора данных, как показано ниже, состоит из некоторых результатов поиска и оценок настроения. Обратите внимание, что каждая точка данных агрегируется на ежемесячной основе. Набор данных охватывает период с августа 2008 года по июль 2016 года. Потрясающе! Итак, я бесплатно подготовил данные за 8 лет с полезными факторами! При этом в наборе данных всего 93 точки данных, хотя он охватывает 8 лет. Финансовые данные довольно ограничены.

Давайте быстро посмотрим на тепловую карту корреляции нашего набора данных.

Поскольку наша целевая переменная - это движение цены акций, мы должны присмотреться к ней.

Обратите внимание, что некоторые ключевые слова, такие как «Доу-Джонс» и «экономика США», в некоторой степени связаны с движением курса акций. Это хорошие новости. Это должно означать, что наши альфа-факторы могут быть полезны.

Одно интересное наблюдение, которое стоит упомянуть, заключается в том, что опасения по поводу замедления экономики США довольно хорошо коррелируют с настроениями и ценами на OHLC. Интуитивно это имеет смысл, поскольку застойная экономика может вызвать множество дискуссий на рынке. Неопределенность на рынке порождает множество настроений. Было бы действительно интересно разобраться в факторах, если бы я мог получить более качественный набор данных, таких как изучение человеческих эмоций (страх, счастье и т. Д.), Объема транзакций и т. Д. До движения цен акций.

Просто чертовски глубокое ее изучение

Движение цены акций является чрезвычайно случайным, и поэтому, если бы мы использовали необработанный набор данных OHLC, наши глубинные модели пострадали бы и не смогли бы сойтись просто потому, что не существует закономерностей, которые можно было бы найти! Поверьте, я очень, очень старался. Прогнозы, которые он будет делать, будут такими же хорошими, как подбрасывание монеты, то есть, скорее всего, он будет предсказывать прямую линию, или он будет предсказывать движение вверх или вниз в 50% случаев. Это совершенно бесполезно. Каким бы волшебным ни казалось глубокое обучение, оно может читать свое магическое заклинание только при наличии подходящего зелья и волшебной палочки. Наличие правильных альфа-факторов также не гарантирует сходимости. Нам нужно будет творить чудеса. Мы сделаем именно это:

  1. Создайте представление каждой точки данных с помощью автокодировщиков
  2. Примените его к LSTM и наблюдайте, как идет опустошительный дождь!

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

Автокодировщик

Так что же такое автокодировщик? Чтобы мотивировать потребность в автокодировщике, давайте начнем с чего-нибудь более простого и понятного. Введение, анализ основных компонентов (PCA). PCA без математики работает точно так же, как показано на изображении ниже. Он отбрасывает тень от объекта, чтобы упростить его форму и в то же время сжимать информацию. В этом случае свет отбрасывает тень на сферу, в результате чего получается круглая тень. Однако мы также можем вывести на основе круглой тени, что объект, вероятно, является сферой. Следовательно, тень - это сжатое представление объекта… представление объекта!

Если бы мы применили PCA к нашему набору данных, он смог бы сжимать 23-мерные (то есть все настроения, OHLCV, ключевые слова и т. Д.) Точки данных в гораздо более низкое размерное пространство без потери большой информации. Это помогает нашей модели учиться, поскольку в ней меньше факторов, о которых нужно заботиться. Другими словами, он отбрасывает тень от нашего набора данных на гораздо меньшее пространство. Как это возможно?

Это может быть достигнуто либо максимизацией дисперсии, либо минимизацией суммы квадратов ошибок векторов (главных компонентов). Они одинаковые. Следовательно, мы хотим максимизировать следующее уравнение. Как только мы это сделаем, мы выберем новый набор базисов и введем матрицу в совершенно новое измерение. Я вставляю уравнение сюда для полноты картины. Есть много других деталей, которые здесь были опущены. Тем не менее, я надеюсь, что идея PCA ясна.

PCA - это все хорошо, так зачем нам Auto Encoder? Проблема в том, что набор данных может быть действительно сложным, и метод линейного сжатия может не справиться с ним. Итак, Auto Encoder похож на PCA, но на стероидах. Auto Encoder является нелинейным, поэтому он сможет выжать из сжатия еще больше сока. Каждый из прямоугольников ниже представляет нейрон, который является мозгом, составляющим ИИ в области искусственного интеллекта.

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

Вот ссылка, по которой я изучил Deep Auto Encoders. Один из лучших ресурсов AE, который я нашел в Интернете. Определенно рекомендую это.



Таким образом, с помощью автокодировщиков мы можем сохранить большую часть 23-мерных данных, которые у нас есть, и представить их в 8-мерном пространстве. Если бы мы использовали PCA, 8-мерная точка данных могла бы сохранить 95% дисперсии. Используя это в качестве основы, мы могли только представить, что он работает намного лучше для автокодировщика :)

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

Ячейки с длительной кратковременной памятью (LSTM) для рекуррентных нейронных сетей (RNN)

Я кратко рассказывал о LSTM в своих предыдущих сообщениях и даю общее представление о том, почему это лучший выбор, когда дело доходит до продольных прогнозов по сравнению с другими ячейками. Я назвал это Святым Граалем предсказания временных рядов. Вы можете проверить это здесь. Однако один поразительный фактор, на который мне указали, - это обратить внимание на детали в соглашении об именах LSTM (подсказка: проверьте, где находится дефис). Само название говорит о том, что он способен сохранять долгую краткосрочную активацию из данных. Умный!

Я опустил все подробности того, как я подготовил набор данных. Однако, по правде говоря, я потратил 90% времени на подготовку данных, вместо того, чтобы обучать модели и писать этот пост. Просто чтобы вы имели представление об объеме работы, необходимой для подготовки набора данных. Фактически, в большинстве случаев машинное обучение - это не что иное, как умная игра данных: ’). Иная обработка данных обязательно приведет к другим результатам.

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

Неплохо! Он не выглядит чрезмерно переоборудованным, но он может определить большинство движений на рынке за 1 месяц вперед (вспомните нашу постановку проблемы). Визуально выглядит достойно. Когда мы проверяем прогноз направления движения акции, модель верна 78% времени. Это совсем неплохо, если использовать бесплатные ресурсы, которые собираются, как пазлы в сети. Можно обучить его еще больше, чтобы достичь гораздо более высокого процента, но он начнет больше терять при прогнозировании вне выборки, когда модель слишком подходит для обучающих данных.

Теперь вот где мы могли бы узнать, полезны ли вообще глубокие стероиды, если все эти усилия, которые мы потратили до сих пор, вообще являются предсказательными. Для данных вне выборки он не отслеживает основную истину так же точно, как данные в выборке (конечно), но на самом деле он делает правильный прогноз с точки зрения движения цен, 61 % случаев!

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

При этом есть еще много возможностей для улучшения и оценки. Необходимо провести дополнительную оценку рисков и провести множество тестов, чтобы убедиться, что модель может лучше обобщаться на непредвиденные обстоятельства. Будущая работа обязательно будет включать в себя снижение рисков и более совершенные альфа-предикторы. Нехватка данных, особенно финансовых, действительно неприятна. Дополнения данных определенно будут полезны для такого рода приложений. GAN и моделирование методом Монте-Карло - это совершенно неожиданные инструменты, которые могут быть полезны, но для этих коротких сокращений требуется много работы.

Важность альфа-фактора

В финансовой отрасли, или, более конкретно, для управления портфелем, некоторые менеджеры или кванты будут предлагать альфа-вектор для всех акций в портфеле, чтобы представить прибыльность конкретной акции. Чем выше значение, тем выгоднее. Затем они бросают корзину акций в оптимизатор с ограничениями для снижения рисков. Теперь мы хотим сделать нечто подобное. Мы хотим изучить важность каждого альфа-фактора в движении цены акций. Как и в моем последнем сообщении, для обеспечения единообразия мы будем использовать XGBOOST для проверки важности функции. В будущем я могу изучить возможность использования SHAP или LIME, чтобы изучить объяснимость глубоких моделей, как в сообщении ниже.



XGBOOST - это просто причудливое дерево, которое разбивается по некоторым правилам. Следовательно, такая модель легко объяснима. Мы могли бы, например, исследовать важность функции на основе добавления новой функции, насколько улучшается прогноз (усиление), как часто функция используется для разделения на дальнейшие ветви (веса) и т. Д. Есть много факторов важности функций, таких как охват, но первые два имеют гораздо больший смысл.

Давайте сначала обучим современную неглубокую модель, чтобы аппроксимировать функцию, которая предсказывает движение акций. XGBOOST - это довольно недавний выпуск, его статья была опубликована всего 5 лет назад. Как и в моем последнем сообщении, XGBOOST, кажется, действительно отлично справляется с приближением функции и даже с правильным получением направления движения акций в 92% случаев для данных в выборке.

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

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

Ну хорошо, каковы шансы. Напомним, что в самом начале, когда я исследовал корреляцию движения акций со всеми факторами с помощью тепловой карты, я выделил ключевую фразу «замедляется ли экономика США» и угадайте, что именно наиболее важный фактор с точки зрения нашей модели XGBOOST. Вот интересный факт. Я не выделил эту фразу, потому что знал об этом. Я выделил это, потому что это достойное наблюдение. Теперь все просто очень хорошо сочетаются друг с другом. Google Trends - определенно мой новый лучший друг. «Доу Джонс» следующий по важности характеристик. Люди склонны гуглить все подряд (в том числе и я). Имеет смысл, что это сильный прогностический фактор, так как, объединив эти ключевые слова, он может понять, что на рынке все неоднозначно. Люди обычно не любят двусмысленность. Когда что-то становится неуверенным, люди начинают паниковать. Большинство ключевых слов очень предсказуемы, даже в большей степени, чем заголовки новостей с Reddit. Тем не менее, это определенно не репрезентативно, и новости Reddit очень предвзяты, и люди голосуют за то, чтобы они попали на рекламный щит. Некоторые из новостей - это просто статьи, написанные людьми, которые не имеют реальной ценности для описания состояния рынка. Однако это самый длинный набор данных новостей, который у нас есть, поэтому нам приходится довольствоваться тем, что у нас есть. Я подготовил еще один набор данных новостей с финансовыми новостями, поступающими с авторитетных финансовых сайтов, таких как Reuters и Vox News. Однако, насколько я могу судить, у него есть данные только за год.

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

Интересно, что в этом случае важным фактором являются позитивные настроения. «негативные новости» - это относительная частота поиска в Google Trends, а не реальное мнение. Таким образом, похоже, что чем больше людей ищут «негативные новости», это может быть связано с предвзятым мнением о том, что рынок ведет себя плохо, и, следовательно, с необходимостью искать и копать глубже. Или, возможно, люди слышали обо всех негативных новостях, и когда они освобождаются, они начинают искать и понимать, о чем идет речь. Видео, встроенное в этот пост ранее, действительно упоминало о корреляции между объемом и интенсивностью поиска слов, связанных с индексом и, в данном случае, с отраслью Dow Jones. Неудивительно, что объем торгов является еще одним важным прогностическим фактором.

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

Заключение

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

Наконец, пожалуйста, дайте мне несколько хлопков, если этот пост был для вас полезен! :)