Usando IA para construir uma estratégia de investimentos no Python

“‘Aprender com os dados’ é uma definição fundamental dos modelos de aprendizado de máquina. Mas e se pudéssemos aplicar esse conceito às estratégias de investimento? Aqui, vamos explorar exatamente isso. Vamos introduzir um exercício de Python que utiliza Deep Neural Networks (DNNs) para prever os movimentos do mercado financeiro, com base em valores históricos de log-retornos como dados de entrada.

As DNNs são inspiradas no funcionamento do cérebro humano e são compostas por diversas camadas, incluindo uma camada de entrada, uma camada de saída e várias camadas ocultas. Essa arquitetura permite que as redes neurais aprendam relações complexas e tenham um desempenho superior em uma variedade de problemas.

Exploraremos o poder das Deep Neural Networks (DNNs) para prever a direção do movimento do mercado com base em dados históricos de log-retornos. Ao utilizar os valores defasados da série temporal e transformá-los em outras features, buscamos criar um modelo capaz de identificar padrões e tendências no mercado financeiro.

Neste contexto, abordaremos o backtesting vetorizado de estratégias de algo-trading, onde o termo “algo-trading” se refere a estratégias de negociação financeira automatizadas. Essas estratégias são baseadas em algoritmos projetados para tomar decisões de compra, venda ou neutras em instrumentos financeiros, sem intervenção humanas.

Dados

Para fins de aprendizado, vamos buscar dados da empresa VALE3 no período de jan/2010 até dez/2022, em intervalo diário. Filtramos o preço de fechamento, e calculamos os log-retornos da série. Em seguida, criamos as defasagens do log-retorno.

A ideia básica por trás do uso de retornos logarítmicos defasados como features é que eles podem ser informativos na previsão de retornos futuros. Por exemplo, alguém pode hipotetizar que após dois movimentos descendentes, um movimento ascendente é mais provável (“reversão à média”), ou, ao contrário, que outro movimento descendente é mais provável (“momentum” ou “tendência”).

Podemos também transformar as defasagens de valor contínuo em features binárias e avaliar a probabilidade de um movimento ascendente e um movimento descendente, respectivamente, a partir das observações históricas desses movimentos.

Para obter o código e o tutorial deste exercício faça parte do Clube AM e receba toda semana os códigos em R/Python, vídeos, tutoriais e suporte completo para dúvidas.

Aprenda a coletar, processar e analisar dados do mercado financeiro no curso de Python para Investimentos.

Treinamento do Modelo

O algoritmo é treinado e testado em dados de features binárias ou contínuas. A ideia é que os padrões de valores das features permitam uma previsão dos movimentos futuros do mercado com uma taxa de acerto melhor do que 50%. Implicitamente, presume-se que o poder preditivo dos padrões persista ao longo do tempo. Nesse sentido, não deveria fazer (muita) diferença em qual parte dos dados um algoritmo é treinado e em qual parte dos dados ele é testado - implicando que se pode quebrar a sequência temporal dos dados para treinamento e teste (sempre haverá a possibilidade de implementação de separação sequencial e o uso de cross-validation).

Uma maneira típica de fazer isso é dividir aleatoriamente os dados em treino e teste para testar o desempenho dos algoritmos fora da amostra, tentando emular a realidade, onde um algoritmo durante a negociação se depara continuamente com novos dados.

Aplicamos a separação dos conjuntos de dados aleatoriamente e aplicamos o modelo DNN. Isso evita que tenhamos overfitting na nossa estratégia.

Código
MLPClassifier(alpha=1e-05, hidden_layer_sizes=[500, 500, 500], max_iter=500,
              random_state=1, solver='lbfgs')

Com a previsão direcional em mãos, podemos aplicar o backtesting vetorizado para avaliar o desempenho das estratégias de negociação desenvolvidas. Nesta etapa, nossa análise se baseia em uma série de suposições simplificadoras, incluindo “custos de transação zero” e a utilização do mesmo conjunto de dados tanto para o treinamento quanto para o teste dos modelos.

Código
returns         0.526768
strat_dnn_sk    0.770468
dtype: float64 

(Obs. isso não é recomendação de investimento).

Quer aprender mais?

Clique aqui para fazer seu cadastro no Boletim AM e baixar o código que produziu este exercício, além de receber novos exercícios com exemplos reais de análise de dados envolvendo as áreas de Data Science, Econometria, Machine Learning, Macroeconomia Aplicada, Finanças Quantitativas e Políticas Públicas diretamente em seu e-mail.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Como treinar e selecionar os melhores modelos de previsão no Python?

Em previsão, há uma infinidade de modelos que podem ser usados. O processo de escolha do(s) modelo(s) deve ser empírico-científico, usando métodos que visem avaliar a generalização dos algoritmos para dados novos. Neste artigo, mostramos como implementar a metodologia de validação cruzada com algoritmos de machine learning no Python, exemplificando para a previsão do IPCA.

Como selecionar variáveis para modelos de previsão no Python?

Em oposição à crença popular, grande parte dos modelos de machine learning não produzem previsões magicamente. É papel do cientista de dados executar uma boa engenharia de variáveis para não cair no clássico problema de “garbage in, garbage out” (GIGO) em aprendizado de máquina. Neste sentido, aprender a fazer uma boa seleção de variáveis é fundamental e neste artigo exploramos algumas possibilidades práticas usando o Python.

Resultado IPCA-15 - Novembro/2024

A Análise Macro apresenta os resultados do IPCA-15 de Novembro de 2024, com gráficos elaborados em Python para coleta, tratamento e visualização de dados. Todo o conteúdo, disponível exclusivamente no Clube AM, foi desenvolvido com base nos métodos ensinados nos cursos da Análise Macro, permitindo aos assinantes acesso aos códigos e replicação das análises.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.