Цель этой книги — показать, как машинное обучение может повысить ценность алгоритмических торговых стратегий практичным, но всеобъемлющим способом. Он охватывает широкий спектр методов машинного обучения, от линейной регрессии до глубокого обучения с подкреплением, и демонстрирует, как создавать, тестировать и оценивать торговую стратегию, основанную на прогнозах модели.
Он состоит из четырех частей с 23 главами и приложением и занимает более 800 страниц :
Этот репозиторий содержит более 150 блокнотов , в которых на практике применяются концепции, алгоритмы и варианты использования, обсуждаемые в книге. Они приводят многочисленные примеры, которые показывают:
Мы настоятельно рекомендуем просматривать тетради во время чтения книги; они обычно находятся в исполняемом состоянии и часто содержат дополнительную информацию, не включенную из-за нехватки места.
Помимо информации в этом репозитории, веб-сайт книги содержит краткое содержание глав и дополнительную информацию.
Чтобы читателям было легко задавать вопросы о содержании книги и примерах кода, а также о разработке и реализации собственных стратегий и отраслевых разработках, мы размещаем онлайн-платформу.
Присоединяйтесь к нашему сообществу и общайтесь с другими трейдерами, заинтересованными в использовании машинного обучения для торговых стратегий, делитесь своим опытом и учитесь друг у друга!
Прежде всего, эта книга демонстрирует, как можно извлекать сигналы из разнообразного набора источников данных и разрабатывать торговые стратегии для разных классов активов, используя широкий спектр контролируемых, неконтролируемых алгоритмов обучения и обучения с подкреплением. Он также предоставляет соответствующие математические и статистические знания, облегчающие настройку алгоритма или интерпретацию результатов. Кроме того, он охватывает финансовую основу, которая поможет вам работать с рыночными и фундаментальными данными, извлекать информативные функции и управлять эффективностью торговой стратегии.
С практической точки зрения второе издание призвано дать вам концептуальное понимание и инструменты для разработки собственных торговых стратегий на основе машинного обучения. С этой целью машинное обучение рассматривается как важнейший элемент процесса, а не как отдельное мероприятие, представляя комплексное машинное обучение для торгового процесса: от поиска данных, разработки функций и оптимизации моделей до разработки стратегии и бэктестирования.
В частности, рабочий процесс ML4T начинается с генерации идей для четко определенной инвестиционной среды, сбора соответствующих данных и извлечения информативных функций. Это также включает в себя проектирование, настройку и оценку моделей машинного обучения, подходящих для задачи прогнозирования. Наконец, это требует разработки торговых стратегий, которые будут действовать на основе прогнозирующих сигналов моделей, а также моделирования и оценки их эффективности на исторических данных с использованием механизма бэктестинга. Как только вы решите реализовать алгоритмическую стратегию на реальном рынке, вам придется неоднократно повторять этот рабочий процесс, чтобы включить новую информацию и меняющуюся среду.
Акцент второго издания на рабочем процессе ML4t приводит к появлению новой главы, посвященной бэктестированию стратегии, новому приложению, описывающему более 100 различных альфа-факторов, а также множеству новых практических приложений. Мы также переписали большую часть существующего контента для ясности и читабельности.
Торговые приложения теперь используют более широкий спектр источников данных, помимо ежедневных цен на акции США, включая международные акции и ETF. Он также демонстрирует, как использовать машинное обучение для внутридневной стратегии с ежеминутными данными по капиталу. Кроме того, он расширяет охват альтернативных источников данных, включая документы SEC для анализа настроений и прогнозов доходности, а также спутниковые изображения для классификации землепользования.
Еще одним нововведением второго издания является копирование нескольких торговых приложений, недавно опубликованных в ведущих журналах:
Все приложения теперь используют последние доступные (на момент написания) версии программного обеспечения, такие как pandas 1.0 и TensorFlow 2.2. Существует также настроенная версия Zipline, которая позволяет легко включать прогнозы модели машинного обучения при разработке торговой стратегии.
В примерах кода используется широкий спектр библиотек Python из областей науки о данных и финансов.
Не обязательно пытаться установить все библиотеки сразу, поскольку это увеличивает вероятность возникновения конфликта версий. Вместо этого мы рекомендуем вам по мере продвижения устанавливать библиотеки, необходимые для конкретной главы.
Обновление от марта 2022 г.:
zipline-reloaded
,pyfolio-reloaded
,alphalens-reloaded
иempyrical-reloaded
теперь доступны на каналеconda-forge
. Каналml4t
содержит только устаревшие версии и скоро будет удален.
Обновление от апреля 2021 г.: с обновлением Zipline больше не нужно использовать Docker. Инструкции по установке теперь относятся к файлам среды конкретной ОС, которые должны упростить работу с ноутбуками.
Обновление от февраля 2021 г.: образец кода версии 2.0 обновляет среды conda, предоставляемые образом Docker, до Python 3.8, Pandas 1.2 и TensorFlow 1.2, среди прочих; среда бэктестинга Zipline теперь использует Python 3.6.
conda
и установки пакетов, используемых в ноутбуках, непосредственно на ваш компьютер, если вы предпочитаете (и, в зависимости от вашей системы, готовы приложить дополнительные усилия).Если у вас возникли трудности с установкой сред, загрузкой данных или запуском кода, поднимите проблему GitHub в репозитории (здесь). Работа с проблемами GitHub описана здесь.
Обновление : Вы можете скачать данные algoseek , использованные в книге, здесь. См. инструкции по предварительной обработке в главе 2 и внутридневной пример с моделью повышения градиента в главе 12.
Обновление : каталог рисунков содержит цветные версии диаграмм, использованных в книге.
Книга состоит из четырех частей, в которых рассматриваются различные проблемы, возникающие при поиске и работе с рыночными, фундаментальными и альтернативными источниками данных, разработке решений ML для различных прогнозных задач в торговом контексте, а также разработке и оценке торговой стратегии, основанной на прогнозирующих сигналах, генерируемых модель ML.
Каталог каждой главы содержит файл README с дополнительной информацией о содержании, примерами кода и дополнительными ресурсами.
Часть 1: От данных к разработке стратегии
Часть 2. Машинное обучение для трейдинга: основы
Часть 3. Обработка естественного языка для трейдинга
Часть 4. Глубокое обучение и обучение с подкреплением
Первая часть представляет собой основу для разработки торговых стратегий, основанных на машинном обучении (ML). В нем основное внимание уделяется данным, лежащим в основе алгоритмов и стратегий машинного обучения, обсуждаемых в этой книге, описывается, как разрабатывать и оценивать функции, подходящие для моделей машинного обучения, а также как управлять и измерять эффективность портфеля при реализации торговой стратегии.
В этой главе рассматриваются отраслевые тенденции, которые привели к появлению МО как источника конкурентного преимущества в инвестиционной отрасли. Мы также рассмотрим, где машинное обучение вписывается в инвестиционный процесс для реализации алгоритмических торговых стратегий.
В частности, он охватывает следующие темы:
В этой главе показано, как работать с рыночными и фундаментальными данными, и описаны критические аспекты среды, которые они отражают. Например, знание различных типов ордеров и торговой инфраструктуры имеет значение не только для интерпретации данных, но и для правильного проектирования моделирования бэктестинга. Мы также покажем, как использовать Python для доступа к данным торговой и финансовой отчетности и манипулирования ими.
Практические примеры демонстрируют, как работать с торговыми данными из тиковых данных NASDAQ и данных минутных баров Algoseek с богатым набором атрибутов, фиксирующих динамику спроса и предложения, которые мы позже будем использовать для внутридневной стратегии на основе машинного обучения. Мы также рассмотрим различные API-интерфейсы поставщиков данных и способы получения информации о финансовой отчетности от SEC.
В частности, в этой главе рассматриваются:В этой главе описываются категории и варианты использования альтернативных данных, описываются критерии оценки растущего числа источников и поставщиков, а также обобщается текущая рыночная ситуация.
В третьей части книги также показано, как создавать альтернативные наборы данных путем парсинга веб-сайтов, например собирать расшифровки звонков о доходах для использования с алгоритмами обработки естественного языка (NLP) и анализа настроений.
Более конкретно, в этой главе рассматриваются:
Если вы уже знакомы с МО, вы знаете, что разработка признаков является важнейшим компонентом успешных прогнозов. По крайней мере, это имеет такое же значение в сфере торговли, где академические и отраслевые исследователи на протяжении десятилетий исследовали, что движет рынками активов и ценами, и какие особенности помогают объяснить или предсказать движения цен.
В этой главе изложены основные выводы этого исследования, которые послужат отправной точкой для ваших собственных поисков альфа-факторов. В нем также представлены важные инструменты для расчета и тестирования альфа-факторов, показано, как библиотеки NumPy, pandas и TA-Lib облегчают манипулирование данными, а также представлены популярные методы сглаживания, такие как вейвлеты и фильтр Калмана, которые помогают уменьшить шум в данных. Прочитав ее, вы узнаете о:
Альфа-факторы генерируют сигналы, которые алгоритмическая стратегия преобразует в сделки, которые, в свою очередь, создают длинные и короткие позиции. Доходность и риск полученного портфеля определяют, соответствует ли стратегия инвестиционным целям.
Существует несколько подходов к оптимизации портфелей. К ним относится применение машинного обучения (МО) для изучения иерархических связей между активами и рассмотрения их как дополнений или заменителей при разработке профиля риска портфеля. В этой главе рассматриваются:
Во второй части рассматриваются фундаментальные алгоритмы обучения с учителем и без учителя и иллюстрируется их применение в торговых стратегиях. В ней также представлена платформа Quantopian, которая позволяет использовать и комбинировать данные и методы машинного обучения, разработанные в этой книге, для реализации алгоритмических стратегий, позволяющих совершать сделки на реальных рынках.
В этой главе начинается часть 2, в которой показано, как можно использовать ряд контролируемых и неконтролируемых моделей машинного обучения для торговли. Мы объясним предположения и варианты использования каждой модели, прежде чем продемонстрировать соответствующие приложения с использованием различных библиотек Python.
Есть несколько аспектов, которые являются общими для многих из этих моделей и их приложений. В этой главе рассматриваются эти общие аспекты, чтобы мы могли сосредоточиться на использовании конкретной модели в следующих главах. Он закладывает основу, описывая, как формулировать, обучать, настраивать и оценивать прогнозную эффективность моделей ML как систематического рабочего процесса. Содержание включает в себя:
Линейные модели — это стандартные инструменты для вывода и прогнозирования в контексте регрессии и классификации. Многочисленные широко используемые модели ценообразования активов основаны на линейной регрессии. Регуляризованные модели, такие как регрессия Риджа и Лассо, часто дают лучшие прогнозы, ограничивая риск переобучения. Типичные приложения регрессии определяют факторы риска, которые влияют на доходность активов, чтобы управлять рисками или прогнозировать доходность. С другой стороны, проблемы классификации включают направленные прогнозы цен.
Глава 07 охватывает следующие темы:
В этой главе представлен комплексный подход к проектированию, моделированию и оценке торговой стратегии, основанной на алгоритме машинного обучения. Мы подробно продемонстрируем, как протестировать стратегию, основанную на машинном обучении, в историческом рыночном контексте с использованием библиотек Python backtrader и Zipline. Рабочий процесс ML4T в конечном итоге направлен на сбор доказательств из исторических данных, которые помогут решить, стоит ли развертывать потенциальную стратегию на реальном рынке и подвергать финансовые ресурсы риску. Реалистичная симуляция вашей стратегии должна достоверно отображать, как работают рынки ценных бумаг и как осуществляются сделки. Кроме того, необходимо уделить внимание нескольким методологическим аспектам, чтобы избежать предвзятых результатов и ложных открытий, которые приведут к принятию плохих инвестиционных решений.
Более конкретно, прочитав эту главу, вы сможете:
В этой главе основное внимание уделяется моделям, которые извлекают сигналы из истории временных рядов для прогнозирования будущих значений того же временного ряда. Модели временных рядов широко используются из-за временного измерения, присущего торговле. В нем представлены инструменты для диагностики характеристик временных рядов, таких как стационарность, и извлечения функций, которые фиксируют потенциально полезные закономерности. Он также представляет одномерные и многомерные модели временных рядов для прогнозирования макроданных и моделей волатильности. Наконец, он объясняет, как коинтеграция определяет общие тенденции во временных рядах, и показывает, как разработать стратегию парной торговли, основанную на этой важной концепции.
В частности, оно охватывает:
Байесовская статистика позволяет нам количественно оценивать неопределенность в отношении будущих событий и принципиально уточнять оценки по мере поступления новой информации. Этот динамичный подход хорошо адаптируется к развивающемуся характеру финансовых рынков. Байесовские подходы к машинному обучению позволяют по-новому взглянуть на неопределенность, связанную со статистическими показателями, оценками параметров и прогнозами. Приложения варьируются от более детального управления рисками до динамических обновлений прогнозных моделей, учитывающих изменения в рыночной среде.
Более конкретно, в этой главе рассматриваются:
В этой главе к торговле применяются деревья решений и случайные леса. Деревья решений изучают правила на основе данных, которые кодируют нелинейные отношения ввода-вывода. Мы покажем, как обучить дерево решений для прогнозирования проблем регрессии и классификации, визуализировать и интерпретировать правила, изученные моделью, а также настроить гиперпараметры модели для оптимизации компромисса между смещением и дисперсией и предотвращения переобучения.
Во второй части главы представлены ансамблевые модели, которые случайным образом объединяют несколько деревьев решений для получения единого прогноза с меньшей ошибкой. Он завершается длинной и короткой стратегией японских акций, основанной на торговых сигналах, генерируемых моделью случайного леса.
Короче говоря, в этой главе рассматриваются:
Повышение градиента — это альтернативный алгоритм ансамбля на основе деревьев, который часто дает лучшие результаты, чем случайные леса. Критическое отличие состоит в том, что повышение изменяет данные, используемые для обучения каждого дерева, на основе совокупных ошибок, допущенных моделью. В то время как случайные леса обучают множество деревьев независимо, используя случайные подмножества данных, повышение происходит последовательно и повторно взвешивает данные. В этой главе показано, как современные библиотеки достигают впечатляющей производительности и применяют повышение как к ежедневным, так и к высокочастотным данным для тестирования внутридневной торговой стратегии.
Более конкретно, мы затронем следующие темы:
Снижение размерности и кластеризация являются основными задачами обучения без учителя:
Более конкретно, в этой главе рассматриваются:
Текстовые данные богаты содержанием, но неструктурированы по формату и, следовательно, требуют дополнительной предварительной обработки, чтобы алгоритм машинного обучения мог извлечь потенциальный сигнал. Основная задача состоит в преобразовании текста в числовой формат для использования алгоритмом, одновременно выражая семантику или значение содержания.
Следующие три главы посвящены нескольким методам, которые улавливают нюансы языка, легко понятные человеку, чтобы алгоритмы машинного обучения также могли их интерпретировать.
Текстовые данные очень богаты по содержанию, но крайне неструктурированы, поэтому требуют дополнительной предварительной обработки, чтобы алгоритм машинного обучения мог извлечь соответствующую информацию. Ключевая задача состоит в преобразовании текста в числовой формат без потери его смысла. В этой главе показано, как представлять документы в виде векторов количества токенов, создавая матрицу терминов документа, которая, в свою очередь, служит входными данными для классификации текста и анализа тональности. Он также представляет алгоритм Наивного Байеса и сравнивает его производительность с линейными и древовидными моделями.
В частности, в этой главе рассматриваются:
В этой главе используется обучение без учителя для моделирования скрытых тем и извлечения скрытых тем из документов. Эти темы могут дать детальное представление о большом массиве финансовых отчетов. Тематические модели автоматизируют создание сложных интерпретируемых текстовых функций, которые, в свою очередь, могут помочь извлекать торговые сигналы из обширных коллекций текстов. Они ускоряют просмотр документов, позволяют группировать похожие документы и создавать аннотации, полезные для прогнозного моделирования. Приложения включают выявление критически важных тем в раскрытии информации компании, стенограммах отчетов о прибылях и контрактах, а также аннотаций на основе анализа настроений или использования доходности связанных активов.
Более конкретно, он охватывает:
В этой главе нейронные сети используются для изучения векторного представления отдельных семантических единиц, таких как слово или абзац. Эти векторы плотны и содержат несколько сотен записей с действительными значениями по сравнению с разреженными векторами более высокой размерности модели «мешка слов». В результате эти векторы встраивают или размещают каждую семантическую единицу в непрерывном векторном пространстве.
Встраивания возникают в результате обучения модели соотнесению токенов с их контекстом с тем преимуществом, что подобное использование подразумевает аналогичный вектор. В результате они кодируют семантические аспекты, такие как отношения между словами через их относительное расположение. Это мощные функции, которые мы будем использовать с моделями глубокого обучения в следующих главах.
Более конкретно, в этой главе мы рассмотрим:
В четвертой части объясняется и демонстрируется, как использовать глубокое обучение для алгоритмической торговли. Мощные возможности алгоритмов глубокого обучения по выявлению закономерностей в неструктурированных данных делают его особенно подходящим для альтернативных данных, таких как изображения и текст.
Примеры приложений показывают, например, как комбинировать текстовые и ценовые данные для прогнозирования неожиданных прибылей на основе отчетов SEC, генерировать синтетические временные ряды для увеличения объема обучающих данных и обучать торгового агента с помощью глубокого обучения с подкреплением. Некоторые из этих приложений повторяют исследования, недавно опубликованные в ведущих журналах.
В этой главе представлены нейронные сети прямого распространения (NN) и показано, как эффективно обучать большие модели с использованием обратного распространения ошибки, одновременно управляя рисками переобучения. Также показано, как использовать TensorFlow 2.0 и PyTorch и как оптимизировать архитектуру нейронной сети для генерации торговых сигналов. В следующих главах мы будем опираться на эту основу, чтобы применять различные архитектуры к различным инвестиционным приложениям, уделяя особое внимание альтернативным данным. К ним относятся рекуррентная НС, адаптированная к последовательным данным, таким как временные ряды или естественный язык, и сверточная НС, особенно хорошо подходящая для данных изображений. Мы также рассмотрим глубокое обучение без учителя, например, как создавать синтетические данные с использованием генеративно-состязательных сетей (GAN). Кроме того, мы обсудим обучение с подкреплением для обучения агентов, которые интерактивно учатся из своей среды.
В частности, в этой главе будут рассмотрены
Архитектуры CNN продолжают развиваться. В этой главе описываются стандартные блоки, общие для успешных приложений, демонстрируется, как трансферное обучение может ускорить обучение и как использовать CNN для обнаружения объектов. CNN могут генерировать торговые сигналы из изображений или данных временных рядов. Спутниковые данные могут предсказать тенденции развития сырьевых товаров с помощью аэрофотоснимков сельскохозяйственных районов, шахт или транспортных сетей. Видеозаписи с камер могут помочь предсказать активность потребителей; мы показываем, как построить CNN, которая классифицирует экономическую деятельность по спутниковым изображениям. CNN также могут предоставлять высококачественные результаты классификации временных рядов, используя их структурное сходство с изображениями, и мы разрабатываем стратегию, основанную на данных временных рядов, отформатированных как изображения.
Более конкретно, в этой главе рассматриваются:
Рецидивирующие нейронные сети (RNN) вычислили каждый вывод как функцию предыдущего вывода и новых данных, эффективно создавая модель с памятью, которая разделяет параметры на более глубоком вычислительном графике. Выдающиеся архитектуры включают в себя длинную кратковременную память (LSTM) и закрытые рецидивирующие единицы (GRU), которые решают проблемы обучения зависимостям дальнейшего расстояния. RNN предназначены для отображения одной или нескольких входных последовательностей с одной или несколькими выводами и особенно хорошо подходят для естественного языка. Они также могут быть применены к одномерным и многомерным временным рядам для прогнозирования рынка или фундаментальных данных. В этой главе рассказывается, как RNN может моделировать альтернативные текстовые данные, используя слово «встраиваемые», которые мы рассмотрели в главе 16 для классификации настроения, выраженного в документах.
Более конкретно, эта глава адресат:
В этой главе показано, как использовать без присмотра глубокое обучение для торговли. Мы также обсуждаем автоэкодеры, а именно нейронную сеть, обученную воспроизведению ввода, в то время как изучение нового представления, кодируемого параметрами скрытого уровня. Автокодеры уже давно использовались для нелинейного сокращения размерности, используя архитектуры NN, которые мы рассмотрели в последних трех главах. Мы повторяем недавнюю статью AQR, которая показывает, как автоэнкодеры могут лежать в основе торговой стратегии. Мы будем использовать глубокую нейронную сеть, которая опирается на автоэкодер для извлечения факторов риска и прогнозирования доходности акций, обусловленных в диапазоне атрибутов акций.
Более конкретно, в этой главе вы узнаете о:
В этой главе представлены генеративные состязательные сети (GAN). Ганс тренирует генератор и сеть дискриминатора в конкурентной настройке, чтобы генератор учился создавать образцы, которые дискриминатор не может отличить от данного класса обучающих данных. Цель состоит в том, чтобы получить генеративную модель, способную производить синтетические образцы, репрезентативные для этого класса. Несмотря на то, что он наиболее популярен в данных изображения, GAN также использовались для генерации синтетических данных временных рядов в медицинской области. Последующие эксперименты с финансовыми данными исследуют, могут ли GANS производить альтернативные траектории цен, полезные для обучения ML или стратегии. Мы повторяем газету Neurips Timips Paper, чтобы проиллюстрировать подход и продемонстрировать результаты.
Более конкретно, в этой главе вы узнаете о:
Модели подкрепления обучения (RL) целеустремленное обучение агентом, который взаимодействует со стохастической средой. RL оптимизирует решения агента, касающиеся долгосрочной цели, изучая ценность состояний и действий из сигнала вознаграждения. Конечная цель состоит в том, чтобы вывести политику, которая кодирует поведенческие правила и отображает государства с действиями. Эта глава показывает, как сформулировать и решить проблему RL. Он охватывает методы на основе моделей и без модели, вводит среду спортивного зала Openai и объединяет глубокое обучение с RL для обучения агента, который навигает на сложную среду. Наконец, мы покажем вам, как адаптировать RL к алгоритмической торговле, моделируя агента, который взаимодействует с финансовым рынком, пытаясь оптимизировать целевую функцию.
Более конкретно, эта глава будет охватывать:
В этой заключительной главе мы кратко подведем сумму важных инструментов, приложений и уроков, извлеченных по всей книге, чтобы не терять из виду общую картину после стольких деталей. Затем мы идентифицируем области, которые мы не покрывали, но с стоимостью сосредоточиться, расширяя многие методы машинного обучения, которые мы представили, и стать продуктивными в их ежедневном использовании.
В целом, в этой главе мы будем
На протяжении всей этой книги мы подчеркнули, как умный дизайн функций, включая подходящую предварительную обработку и джинирование, обычно приводит к эффективной стратегии. Это приложение синтезирует некоторые из уроков, извлеченных в области инженерии, предоставляет дополнительную информацию по этой жизненно важной теме.
С этой целью мы сосредоточимся на широком спектре показателей, реализованных TA-LIB (см. Главу 4) и 101 формальной альфазной бумаги WorldQuant (Kakushadze 2016), в которой представлены реальные количественные торговые факторы, используемые в производстве со средним периодом удержания 0,6-6,4 дня.
Эта глава охватывает: