FinStockESN-BR

Introdução

Segundo a hipótese do mercado eficiente, os preços das ações negociadas na bolsa já refletem todas as informações disponíveis ao público, o que torna essencialmente impossível “ganhar do mercado” fazendo previsões de forma consistente. Entretanto, nas décadas subsequentes à publicação dessa teoria, observou-se que o comportamento do mercado muitas vezes desafiava essa noção. Anomalias de mercado, como movimentos de preços que não pareciam estar alinhados com as informações disponíveis, começaram a desafiar a ideia dos mercados sempre eficientes. Novas teorias foram propostas que afirmavam que o comportamento do investidor nem sempre é puramente racional, sendo influenciado por uma série de fatores psicológicos e emocionais.

Essa nova compreensão do mercado abre as portas para o uso de novas tecnologias para identificar anomalias nos preços, como técnicas de inteligência artificial (IA), que cresceram enormemente em popularidade nos últimos anos.  Com o desenvolvimento de poderosos modelos de Machine Learning (ML) capazes de reconhecer padrões em grandes conjuntos de dados e prever valores de séries temporais com base na tendência histórica, tornou-se possível a criação de algoritmos para prever o preço de ações, algo extremamente útil para analistas financeiros e investidores. 

Objetivo

O objetivo deste trabalho é criar um modelo de ML capaz de prever o valor das ações das empresas registradas na Bovespa, usando dados da série histórica, indicadores macroeconômicos, dados fundamentalistas da empresa, e análise de sentimento das notícias mais relevantes do mercado financeiro brasileiro. Investidores, day-traders e outros interessados podem usar essa ferramenta para os auxiliarem a tomar melhores decisões no gerenciamento de seu portfólio e aumentar sua rentabilidade.

Análise de sentimentos

Uma das técnicas usadas para aprimorar a qualidade da previsão feita é adicionar o sentimento de notícias atuais que dizem respeito à empresa. Dependendo se os acontecimentos recentes são positivos ou negativos, o preço da ação pode variar para cima ou para baixo dependendo da percepção do mercado. As notícias foram obtidas de sites especializados como Infomoney e Valor Econômico por meio de web scraping, e para analisar o sentimento delas foi usado o modelo FinBERT-PT-BR, que foi treinado usando notícias do mercado financeiro brasileiro.

Dados técnicos e fundamentalistas

O principal dado usado pelo modelo como base para fazer as previsões é o histórico do valor da ação, cujo estudo é chamado de análise técnica. O algoritmo de ML aqui usado, a Echo State Networks (ESN), é capaz de detectar padrões ocultos na série de preços para produzir uma previsão coerente com o que foi observado no passado. Além disso, ele também usa indicadores macroeconômicos e dados fundamentalistas da empresa, como lucro, receita e dívida, para aprimorar suas previsões. Esses dados foram obtidos por meio da API do Yahoo! Finance, que os disponibiliza para desenvolvedores.

Arquitetura

O primeiro estágio após a coleta dos dados de entrada é a codificação. Ela é necessária pois os dados iniciais possuem frequências e tamanhos diferentes entre si, e precisam ser padronizados para entrar no modelo principal. O codificador fixa o tamanho das entradas usando uma rede neural recorrente (RNN) para casa uma, e depois as concatena. O modelo previsor é composto por uma Echo State Network (ESN), que é um tipo de RNN onde as camadas ocultas são conectadas de forma esparsa, e um decodificador que extrai a previsão do valor da ação no instante t+1.


Echo State Network (ESN)

Echo State Networks (ESNs) são uma subclassificação de Redes Neurais Recorrentes (RNNs), que se destacam pela capacidade de lidar com tarefas relacionadas a séries temporais. As ESNs possuem uma camada de reservatório com conexões dinâmicas que não são treinadas, simplificando o processo de treinamento e ajudando a capturar dinâmicas temporais complexas. Neste projeto é usada uma variante, a Leaky Integrator ESN (LI-ESN), que inclui uma integração "leaky" (vazante) na camada de reservatório, permitindo maior capacidade de modelagem para sistemas temporais lentos ou séries temporais com diferentes escalas de tempo. Esse mecanismo permite que a informação armazenada nos neurônios da camada oculta se degrade com o tempo, permitindo que o modelo se adapte a mudanças nas entradas ao longo do tempo.

Resultados

O modelo alcançou um erro (RMSE) de 3.08, superando o modelo baseline que prevê preços estáticos (8.77). Testes em diversos cenários realizados com o ativo PETR4, mostram os melhores resultados utilizando informações financeiras das empresas junto de dados macroeconômicos. No entanto, verificou-se que a inclusão de notícias não contribuiu significativamente para a performance do modelo.

Aplicação web

Para expor os resultados do trabalho de forma prática, foi desenvolvida uma aplicação web que permite ao usuário selecionar uma ação e visualizar a sua previsão para os próximos dias na forma de um gráfico, ao lado das notícias identificadas como mais relevantes para aquela empresa. Ela foi feita usando NextJS para o front-end, Python para o servidor e AWS para o armazenar os dados de notícias e hospedar o modelo de ML.

 Links relevantes