Este livro tem como objetivo mostrar como o ML pode agregar valor às estratégias de negociação algorítmica de uma forma prática, porém abrangente. Ele cobre uma ampla gama de técnicas de ML, desde regressão linear até aprendizado por reforço profundo, e demonstra como construir, fazer backtest e avaliar uma estratégia de negociação orientada por previsões de modelos.
Em quatro partes com 23 capítulos mais um apêndice , abrange mais de 800 páginas :
Este repositório contém mais de 150 notebooks que colocam em ação os conceitos, algoritmos e casos de uso discutidos no livro. Eles fornecem vários exemplos que mostram:
É altamente recomendável revisar os cadernos durante a leitura do livro; eles geralmente estão em estado executado e geralmente contêm informações adicionais não incluídas devido a restrições de espaço.
Além das informações deste repositório, o site do livro contém o resumo do capítulo e informações adicionais.
Para facilitar aos leitores perguntas sobre o conteúdo do livro e exemplos de código, bem como o desenvolvimento e implementação de suas próprias estratégias e desenvolvimentos do setor, estamos hospedando uma plataforma online.
Junte-se à nossa comunidade e conecte-se com outros traders interessados em aproveitar o ML para estratégias de negociação, compartilhe sua experiência e aprenda uns com os outros!
Em primeiro lugar, este livro demonstra como você pode extrair sinais de um conjunto diversificado de fontes de dados e projetar estratégias de negociação para diferentes classes de ativos usando uma ampla gama de algoritmos de aprendizagem supervisionados, não supervisionados e de reforço. Também fornece conhecimentos matemáticos e estatísticos relevantes para facilitar o ajuste de um algoritmo ou a interpretação dos resultados. Além disso, abrange o histórico financeiro que o ajudará a trabalhar com dados fundamentais e de mercado, extrair recursos informativos e gerenciar o desempenho de uma estratégia de negociação.
Do ponto de vista prático, a 2ª edição visa equipá-lo com a compreensão conceitual e as ferramentas para desenvolver suas próprias estratégias de negociação baseadas em ML. Para esse fim, ele enquadra o ML como um elemento crítico em um processo, e não como um exercício independente, introduzindo o ML de ponta a ponta para o fluxo de trabalho de negociação, desde a fonte de dados, engenharia de recursos e otimização de modelos até o design de estratégia e backtesting.
Mais especificamente, o fluxo de trabalho do ML4T começa com a geração de ideias para um universo de investimento bem definido, coleta de dados relevantes e extração de recursos informativos. Também envolve projetar, ajustar e avaliar modelos de ML adequados à tarefa preditiva. Por fim, requer o desenvolvimento de estratégias de negociação para atuar nos sinais preditivos dos modelos, bem como simular e avaliar o seu desempenho em dados históricos utilizando um motor de backtesting. Depois de decidir executar uma estratégia algorítmica em um mercado real, você se verá repetindo esse fluxo de trabalho repetidamente para incorporar novas informações e um ambiente em mudança.
A ênfase da segunda edição no fluxo de trabalho ML4t se traduz em um novo capítulo sobre backtesting de estratégia, um novo apêndice que descreve mais de 100 fatores alfa diferentes e muitas novas aplicações práticas. Também reescrevemos a maior parte do conteúdo existente para maior clareza e legibilidade.
As aplicações de negociação utilizam agora uma gama mais ampla de fontes de dados além dos preços diários das ações dos EUA, incluindo ações internacionais e ETFs. Ele também demonstra como usar o ML para uma estratégia intradiária com dados de patrimônio de frequência minuto. Além disso, amplia a cobertura de fontes de dados alternativas para incluir registros da SEC para análise de sentimentos e previsões de retorno, bem como imagens de satélite para classificar o uso da terra.
Outra inovação da segunda edição é replicar diversos aplicativos de negociação publicados recentemente nas principais revistas:
Todos os aplicativos agora usam as versões de software mais recentes disponíveis (no momento da escrita), como pandas 1.0 e TensorFlow 2.2. Há também uma versão personalizada do Zipline que facilita a inclusão de previsões de modelos de aprendizado de máquina ao projetar uma estratégia de negociação.
Os exemplos de código contam com uma ampla variedade de bibliotecas Python dos domínios de ciência de dados e finanças.
Não é necessário tentar instalar todas as bibliotecas de uma vez porque isso aumenta a probabilidade de encontrar conflitos de versão. Em vez disso, recomendamos que você instale as bibliotecas necessárias para um capítulo específico à medida que avança.
Atualização de março de 2022:
zipline-reloaded
,pyfolio-reloaded
,alphalens-reloaded
eempyrical-reloaded
agora estão disponíveis no canalconda-forge
. O canalml4t
contém apenas versões desatualizadas e será removido em breve.
Atualização abril 2021: com a atualização do Zipline, não é mais necessário utilizar o Docker. As instruções de instalação agora referem-se a arquivos de ambiente específicos do sistema operacional que devem simplificar a execução dos notebooks.
Atualização de fevereiro de 2021: o exemplo de código versão 2.0 atualiza os ambientes conda fornecidos pela imagem Docker para Python 3.8, Pandas 1.2 e TensorFlow 1.2, entre outros; o ambiente de backtesting Zipline agora usa Python 3.6.
conda
e instalar os pacotes utilizados nos notebooks diretamente na sua máquina se preferir (e, dependendo do seu sistema, está preparado para ir além).Se você tiver alguma dificuldade para instalar os ambientes, baixar os dados ou executar o código, levante um problema do GitHub no repositório (aqui). Trabalhar com problemas do GitHub foi descrito aqui.
Atualização : você pode baixar os dados do algoseek usados no livro aqui. Veja as instruções para pré-processamento no Capítulo 2 e um exemplo intradiário com um modelo de aumento de gradiente no Capítulo 12.
Atualização : O diretório de figuras contém versões coloridas dos gráficos usados no livro.
O livro tem quatro partes que abordam diferentes desafios que surgem ao obter e trabalhar com fornecimento de dados de mercado, fundamentais e alternativos, desenvolver soluções de ML para várias tarefas preditivas no contexto de negociação e projetar e avaliar uma estratégia de negociação que depende de sinais preditivos gerados por um modelo de ML.
O diretório de cada capítulo contém um README com informações adicionais sobre conteúdo, exemplos de código e recursos adicionais.
Parte 1: Dos Dados ao Desenvolvimento de Estratégia
Parte 2: Aprendizado de Máquina para Negociação: Fundamentos
Parte 3: Processamento de Linguagem Natural para Negociação
Parte 4: Aprendizado Profundo e por Reforço
A primeira parte fornece uma estrutura para o desenvolvimento de estratégias de negociação orientadas por aprendizado de máquina (ML). Ele se concentra nos dados que alimentam os algoritmos e estratégias de ML discutidos neste livro, descreve como projetar e avaliar recursos adequados para modelos de ML e como gerenciar e medir o desempenho de um portfólio durante a execução de uma estratégia de negociação.
Este capítulo explora as tendências do setor que levaram ao surgimento do BC como fonte de vantagem competitiva no setor de investimentos. Também veremos onde o ML se encaixa no processo de investimento para permitir estratégias de negociação algorítmica.
Mais especificamente, abrange os seguintes tópicos:
Este capítulo mostra como trabalhar com dados fundamentais e de mercado e descreve aspectos críticos do ambiente que eles refletem. Por exemplo, a familiaridade com vários tipos de ordens e com a infraestrutura de negociação é importante não apenas para a interpretação dos dados, mas também para projetar corretamente simulações de backtest. Também ilustramos como usar Python para acessar e manipular dados comerciais e de demonstrações financeiras.
Exemplos práticos demonstram como trabalhar com dados de negociação de dados de ticks da NASDAQ e dados de barras de minutos Algoseek com um rico conjunto de atributos que capturam a dinâmica de oferta e demanda que usaremos posteriormente para uma estratégia intradiária baseada em ML. Também abordamos várias APIs de provedores de dados e como obter informações de demonstrações financeiras da SEC.
Em particular, este capítulo cobre:Este capítulo descreve categorias e casos de uso de dados alternativos, descreve critérios para avaliar o número crescente de fontes e fornecedores e resume o cenário atual do mercado.
Ele também demonstra como criar conjuntos de dados alternativos raspando sites, como coletar transcrições de chamadas de ganhos para uso com processamento de linguagem natural (PNL) e algoritmos de análise de sentimento na terceira parte do livro.
Mais especificamente, este capítulo cobre:
Se você já está familiarizado com ML, sabe que a engenharia de recursos é um ingrediente crucial para previsões bem-sucedidas. É pelo menos igualmente importante no domínio comercial, onde investigadores académicos e industriais investigam há décadas o que impulsiona os mercados e os preços dos ativos e quais as características que ajudam a explicar ou prever os movimentos dos preços.
Este capítulo descreve as principais conclusões desta pesquisa como ponto de partida para sua própria busca pelos fatores alfa. Também apresenta ferramentas essenciais para calcular e testar fatores alfa, destacando como as bibliotecas NumPy, pandas e TA-Lib facilitam a manipulação de dados e apresentam técnicas populares de suavização como as wavelets e o filtro de Kalman que ajudam a reduzir o ruído nos dados. Depois de lê-lo, você saberá sobre:
Os fatores alfa geram sinais de que uma estratégia algorítmica se traduz em negociações, que, por sua vez, produzem posições longas e curtas. Os retornos e o risco da carteira resultante determinam se a estratégia atende aos objetivos de investimento.
Existem várias abordagens para otimizar portfólios. Estas incluem a aplicação de aprendizagem automática (ML) para aprender relações hierárquicas entre ativos e tratá-los como complementos ou substitutos ao desenhar o perfil de risco da carteira. Este capítulo cobre:
A segunda parte cobre os algoritmos fundamentais de aprendizagem supervisionada e não supervisionada e ilustra sua aplicação em estratégias de negociação. Ele também apresenta a plataforma Quantopian, que permite aproveitar e combinar os dados e as técnicas de ML desenvolvidas neste livro para implementar estratégias algorítmicas que executam negociações em mercados reais.
Este capítulo dá início à Parte 2, que ilustra como você pode usar uma variedade de modelos de ML supervisionados e não supervisionados para negociação. Explicaremos as suposições e casos de uso de cada modelo antes de demonstrar aplicativos relevantes usando várias bibliotecas Python.
Existem vários aspectos que muitos desses modelos e suas aplicações têm em comum. Este capítulo aborda esses aspectos comuns para que possamos nos concentrar no uso específico do modelo nos capítulos seguintes. Ele prepara o cenário ao descrever como formular, treinar, ajustar e avaliar o desempenho preditivo de modelos de ML como um fluxo de trabalho sistemático. O conteúdo inclui:
Os modelos lineares são ferramentas padrão para inferência e previsão em contextos de regressão e classificação. Vários modelos de precificação de ativos amplamente utilizados baseiam-se na regressão linear. Modelos regularizados como a regressão Ridge e Lasso geralmente produzem melhores previsões, limitando o risco de overfitting. As aplicações típicas de regressão identificam fatores de risco que impulsionam os retornos dos ativos para gerenciar riscos ou prever retornos. Os problemas de classificação, por outro lado, incluem previsões direcionais de preços.
O Capítulo 07 aborda os seguintes tópicos:
Este capítulo apresenta uma perspectiva completa sobre como projetar, simular e avaliar uma estratégia de negociação orientada por um algoritmo de ML. Demonstraremos em detalhes como fazer backtest de uma estratégia baseada em ML em um contexto histórico de mercado usando as bibliotecas Python backtrader e Zipline. O fluxo de trabalho ML4T visa, em última análise, reunir evidências de dados históricos que ajudem a decidir se deve implementar uma estratégia candidata num mercado ativo e colocar os recursos financeiros em risco. Uma simulação realista da sua estratégia precisa representar fielmente como funcionam os mercados de títulos e como as negociações são executadas. Além disso, vários aspectos metodológicos requerem atenção para evitar resultados tendenciosos e falsas descobertas que levarão a más decisões de investimento.
Mais especificamente, depois de ler este capítulo, você será capaz de:
Este capítulo concentra-se em modelos que extraem sinais do histórico de uma série temporal para prever valores futuros para a mesma série temporal. Os modelos de séries temporais são amplamente utilizados devido à dimensão temporal inerente à negociação. Apresenta ferramentas para diagnosticar características de séries temporais, como estacionariedade e extrair recursos que capturam padrões potencialmente úteis. Também introduz modelos de séries temporais univariadas e multivariadas para prever dados macro e padrões de volatilidade. Finalmente, explica como a cointegração identifica tendências comuns ao longo das séries temporais e mostra como desenvolver uma estratégia de negociação de pares baseada neste conceito crucial.
Em particular, abrange:
A estatística Bayesiana permite-nos quantificar a incerteza sobre eventos futuros e refinar as estimativas de uma forma baseada em princípios à medida que novas informações chegam. Esta abordagem dinâmica adapta-se bem à natureza evolutiva dos mercados financeiros. As abordagens bayesianas para ML permitem novos insights sobre a incerteza em torno de métricas estatísticas, estimativas de parâmetros e previsões. As aplicações vão desde gerenciamento de risco mais granular até atualizações dinâmicas de modelos preditivos que incorporam mudanças no ambiente de mercado.
Mais especificamente, este capítulo cobre:
Este capítulo aplica árvores de decisão e florestas aleatórias ao comércio. As árvores de decisão aprendem regras a partir de dados que codificam relações não lineares de entrada-saída. Mostramos como treinar uma árvore de decisão para fazer previsões para problemas de regressão e classificação, visualizar e interpretar as regras aprendidas pelo modelo e ajustar os hiperparâmetros do modelo para otimizar a compensação entre viés e variância e evitar overfitting.
A segunda parte do capítulo apresenta modelos de conjunto que combinam múltiplas árvores de decisão de forma aleatória para produzir uma única previsão com um erro menor. Conclui com uma estratégia long-short para ações japonesas baseada em sinais de negociação gerados por um modelo florestal aleatório.
Em resumo, este capítulo cobre:
O aumento de gradiente é um algoritmo alternativo de conjunto baseado em árvore que geralmente produz melhores resultados do que florestas aleatórias. A diferença crítica é que o boosting modifica os dados usados para treinar cada árvore com base nos erros cumulativos cometidos pelo modelo. Embora as florestas aleatórias treinem muitas árvores de forma independente, usando subconjuntos aleatórios de dados, o boosting prossegue sequencialmente e repondera os dados. Este capítulo mostra como as bibliotecas de última geração alcançam um desempenho impressionante e aplicam o boosting a dados diários e de alta frequência para testar uma estratégia de negociação intradiária.
Mais especificamente, abordaremos os seguintes tópicos:
A redução da dimensionalidade e o agrupamento são as principais tarefas para a aprendizagem não supervisionada:
Mais especificamente, este capítulo cobre:
Os dados de texto são ricos em conteúdo, mas não estruturados em formato e, portanto, requerem mais pré-processamento para que um algoritmo de aprendizado de máquina possa extrair o sinal potencial. O desafio crítico consiste em converter o texto em um formato numérico para uso por um algoritmo, ao mesmo tempo em que expressa a semântica ou o significado do conteúdo.
Os próximos três capítulos cobrem diversas técnicas que capturam nuances de linguagem facilmente compreensíveis para humanos, para que algoritmos de aprendizado de máquina também possam interpretá-las.
Os dados de texto são muito ricos em conteúdo, mas altamente desestruturados, de modo que requerem mais pré-processamento para permitir que um algoritmo de ML extraia informações relevantes. Um desafio fundamental consiste em converter o texto em formato numérico sem perder o seu significado. Este capítulo mostra como representar documentos como vetores de contagens de tokens, criando uma matriz de termos de documento que, por sua vez, serve como entrada para classificação de texto e análise de sentimento. Ele também apresenta o algoritmo Naive Bayes e compara seu desempenho com modelos lineares e baseados em árvore.
Em particular, neste capítulo abrange:
Este capítulo usa aprendizagem não supervisionada para modelar tópicos latentes e extrair temas ocultos de documentos. Esses temas podem gerar insights detalhados sobre um grande conjunto de relatórios financeiros. Os modelos de tópicos automatizam a criação de recursos de texto sofisticados e interpretáveis que, por sua vez, podem ajudar a extrair sinais de negociação de extensas coleções de textos. Eles aceleram a revisão de documentos, permitem o agrupamento de documentos semelhantes e produzem anotações úteis para modelagem preditiva. As aplicações incluem a identificação de temas críticos nas divulgações da empresa, transcrições ou contratos de divulgação de resultados e anotações com base na análise de sentimento ou no uso de retornos de ativos relacionados.
Mais especificamente, abrange:
Este capítulo usa redes neurais para aprender uma representação vetorial de unidades semânticas individuais, como uma palavra ou um parágrafo. Esses vetores são densos com algumas centenas de entradas com valores reais, em comparação com os vetores esparsos de dimensão superior do modelo de saco de palavras. Como resultado, esses vetores incorporam ou localizam cada unidade semântica em um espaço vetorial contínuo.
Os embeddings resultam do treinamento de um modelo para relacionar tokens ao seu contexto com o benefício de que o uso semelhante implica um vetor semelhante. Como resultado, eles codificam aspectos semânticos como relações entre palavras através de sua localização relativa. São recursos poderosos que usaremos com modelos de aprendizagem profunda nos capítulos seguintes.
Mais especificamente, neste capítulo, abordaremos:
A quarta parte explica e demonstra como aproveitar o aprendizado profundo para negociação algorítmica. As poderosas capacidades dos algoritmos de aprendizagem profunda para identificar padrões em dados não estruturados tornam-no particularmente adequado para dados alternativos, como imagens e texto.
Os exemplos de aplicativos mostram, por exemplo, como combinar dados de texto e preços para prever surpresas nos lucros dos registros da SEC, gerar séries temporais sintéticas para expandir a quantidade de dados de treinamento e treinar um agente comercial usando aprendizado de reforço profundo. Várias dessas aplicações replicam pesquisas publicadas recentemente nas principais revistas.
Este capítulo apresenta redes neurais feedforward (NN) e demonstra como treinar modelos grandes com eficiência usando retropropagação enquanto gerencia os riscos de overfitting. Também mostra como usar TensorFlow 2.0 e PyTorch e como otimizar uma arquitetura NN para gerar sinais de negociação. Nos capítulos seguintes, aproveitaremos essa base para aplicar diversas arquiteturas a diferentes aplicações de investimento, com foco em dados alternativos. Estes incluem NN recorrente adaptado para dados sequenciais, como séries temporais ou linguagem natural e NN convolucional, particularmente adequado para dados de imagem. Também abordaremos o aprendizado profundo não supervisionado, como criar dados sintéticos usando Redes Adversariais Generativas (GAN). Além disso, discutiremos a aprendizagem por reforço para treinar agentes que aprendem interativamente com seu ambiente.
Em particular, este capítulo abordará
As arquiteturas CNN continuam a evoluir. Este capítulo descreve os blocos de construção comuns a aplicativos bem-sucedidos, demonstra como o aprendizado por transferência pode acelerar o aprendizado e como usar CNNs para detecção de objetos. As CNNs podem gerar sinais de negociação a partir de imagens ou dados de séries temporais. Os dados de satélite podem antecipar as tendências dos produtos através de imagens aéreas de áreas agrícolas, minas ou redes de transporte. As imagens da câmera podem ajudar a prever a atividade do consumidor; mostramos como construir uma CNN que classifica a atividade econômica em imagens de satélite. As CNNs também podem fornecer resultados de classificação de séries temporais de alta qualidade, explorando sua semelhança estrutural com imagens, e projetamos uma estratégia baseada em dados de séries temporais formatados como imagens.
Mais especificamente, este capítulo cobre:
As redes neurais recorrentes (RNNs) calculam cada saída em função da saída anterior e novos dados, criando efetivamente um modelo com memória que compartilha parâmetros em um gráfico computacional mais profundo. As arquiteturas proeminentes incluem memória de curto prazo (LSTM) e unidades recorrentes (GRU) que abordam os desafios do aprendizado de dependências de longo alcance. Os RNNs são projetados para mapear uma ou mais seqüências de entrada para uma ou mais seqüências de saída e são particularmente adequadas à linguagem natural. Eles também podem ser aplicados a séries temporais univariadas e multivariadas para prever dados de mercado ou fundamentais. Este capítulo abrange como a RNN pode modelar dados de texto alternativos usando as incorporações da palavra que abordamos no Capítulo 16 para classificar o sentimento expresso em documentos.
Mais especificamente, este capítulo aborda:
Este capítulo mostra como aproveitar o aprendizado profundo sem supervisão para o comércio. Também discutimos autoencoders, a saber, uma rede neural treinada para reproduzir a entrada enquanto aprendemos uma nova representação codificada pelos parâmetros de uma camada oculta. Os autoencodentes são usados há muito tempo para redução de dimensionalidade não linear, alavancando as arquiteturas da NN que abordamos nos últimos três capítulos. Replicamos um artigo recente da AQR que mostra como os autocodistas podem sustentar uma estratégia de negociação. Usaremos uma rede neural profunda que depende de um autoencoder para extrair fatores de risco e prever retornos de ações, condicionados a uma variedade de atributos de patrimônio.
Mais especificamente, neste capítulo você aprenderá:
Este capítulo apresenta redes adversárias generativas (GaN). Gans treinam um gerador e uma rede discriminadora em um ambiente competitivo, para que o gerador aprenda a produzir amostras que o discriminador não pode distinguir de uma determinada classe de dados de treinamento. O objetivo é produzir um modelo generativo capaz de produzir amostras sintéticas representativas dessa classe. Embora mais populares entre os dados da imagem, os Gans também foram usados para gerar dados de séries temporais sintéticas no domínio médico. Experimentos subsequentes com dados financeiros exploraram se os GANs podem produzir trajetórias alternativas de preços úteis para treinamento de ML ou backtestes de estratégia. Replicamos o papel GaN de série Neurips 2019 para ilustrar a abordagem e demonstrar os resultados.
Mais especificamente, neste capítulo você aprenderá:
A aprendizagem de reforço (RL) modela o aprendizado direcionado a objetivos por um agente que interage com um ambiente estocástico. A RL otimiza as decisões do agente relativas a um objetivo de longo prazo, aprendendo o valor dos estados e as ações de um sinal de recompensa. O objetivo final é derivar uma política que codifica regras comportamentais e mapeia os estados das ações. Este capítulo mostra como formular e resolver um problema de RL. Ele abrange métodos baseados em modelos e sem modelos, apresenta o ambiente de academia do OpenAI e combina aprendizado profundo com a RL para treinar um agente que navega em um ambiente complexo. Por fim, mostraremos como adaptar a RL à negociação algorítmica modelando um agente que interage com o mercado financeiro enquanto tenta otimizar uma função objetiva.
Mais especificamente, este capítulo cobrirá:
Neste capítulo final, resumiremos brevemente as ferramentas, aplicações e lições essenciais aprendidas ao longo do livro para evitar perder de vista o quadro geral após tantos detalhes. Em seguida, identificaremos as áreas que não cobrimos, mas vale a pena focar, à medida que você expande as muitas técnicas de aprendizado de máquina que introduzimos e nos tornarmos produtivos em seu uso diário.
Em suma, neste capítulo, nós iremos
Ao longo deste livro, enfatizamos como o design inteligente de recursos, incluindo pré -processamento e denoising apropriados, geralmente leva a uma estratégia eficaz. Este apêndice sintetiza algumas das lições aprendidas sobre engenharia de recursos e fornece informações adicionais sobre esse tópico vital.
Para esse fim, nos concentramos na ampla gama de indicadores implementados por TA-Lib (ver capítulo 4) e o papel alfas de 101 fórmula de Worldquant (Kakushadze 2016), que apresenta fatores de negociação quantitativos da vida real usados na produção com um período médio de retenção de 0,6-6,4 dias.
Este capítulo aborda: