Filtro de Kalman e Beta de Mercado

O Filtro de Kalman é onipresente em problemas de controle de engenharia, incluindo orientação e navegação, análise de trajetória de naves espaciais e fabricação, entretanto, também é amplamente utilizado em finanças quantitativas. Neste post de hoje, trataremos de introduzir o Filtro de Kalman de forma intuitiva aplicando um exemplo de estimação do Beta de Mercado utilizando o algoritmo no Python.

O filtro de Kalman é um algoritmo que usa observações com ruídos de um sistema ao longo do tempo para estimar os parâmetros do sistema (alguns dos quais não são observáveis) e prever observações futuras. A cada passo de tempo, ele faz uma previsão, recebe uma medição e se atualiza com base na comparação entre a previsão e a medição. Esse algoritmo faz parte de um sistema de espaço de estados.

A premissa geral de um modelo de espaço de estados é que temos um conjunto de estados que evoluem no tempo (como a razão de hedge entre dois pares cointegrados de ações), mas nossas observações desses estados contêm ruído estatístico (como ruído de microestrutura de mercado) , e, portanto, não podemos observar diretamente os estados "verdadeiros".

O objetivo do modelo de espaço de estados é inferir informações sobre os estados, dadas as observações, à medida que novas informações chegam. Ou seja, utiliza-se de um algoritmo recursivo que permite usar uma série temporal observável para estimar uma série não observável, chamada de variável de estado, sendo construído na forma de estado-espaço.

Na imagem, temos de forma ilustrada o processo do algoritmo de Kalman.

Produzido por Fernando da Silva

Usualmente, existem três tipos de inferência que nós estamos interessado quando considerado modelos de espaço estado:

  • Previsão - Prevê os valores valores subsequentes do estado
  • Filtragem - Estimação dos valores atuais do estado através das observações passadas e atuais do estado
  • Suavização - Estimação dos valores passados ​​do estado de acordo com as observações

Não iremos discutir os aspectos matemáticos do algoritmo, visto que é complexo e exige a demonstração de diversas equações. Seguiremos apenas na parte intuitiva, e que será suficiente para entender a estimação do Beta a partir do Filtro de Kalman.

O interessante do Filtro de Kalman é a sua possibilidade de ser utilizado para estimar valores através de uma regressão. Como o Filtro de Kalman é recursivo, ou seja, é baseado na repetição e atualização dos valores para estimar uma variação desconhecida, podemos utilizá-lo para estimar o Beta de Mercado móvel de uma ação, visto que o Beta varia ao longo do tempo.

Visto que o valores de Beta variam ao longo de tempo, é normal utilizar-se de regressões móveis, como forma de obter o valor do Beta de uma ação no período mais recente. Por definição, neste processo, o usuário deve escolher o período da janela do cálculo. Pelo Filtro de Kalman, isso não é necessário, visto que utiliza-se da última observação apenas para estimar o valores desconhecidos no estado atual, e o próprio algoritmo atualiza as mudanças estruturais dos dados ao longo do tempo. Isso é extremamente útil para alguns tipos de estratégias de trading que necessitam dos melhores valores mais recentes.

Agora, seguiremos para a demonstração com um código de construção do Beta através da biblioteca pykalman.

Utilizaremos o pandas_datareader para a importação dos preços e o pandas e numpy para cálculo dos retornos da ação e do retorno de mercado com  a finalidade de calcular o beta pelo Filtro da Kalman.

No código abaixo tratamos de importar os dados da ITUB4 e calcular os seus retornos diários no período de 2019 a 07/2022. Realizamos o mesmo processo para o Ibovespa.

Por fim, devemos definir como iremos calcular o Filtro de Kalman utilizando a classe KalmanFilter, definindo os valores do parâmetros iniciais do algoritmo. Para entender mais sobre como são definidos os argumento da função, veja a documentação da biblioteca.

Por fim, procedemos com o cálculo dos valores, com o método filter(). O resultado será o estado dos valores do coeficiente da regressão e seu intercepto, bem com o estado das covariâncias.

Abaixo, podemos visualizar o Beta estimado ao longo do tempo.

Interessante notar as mudanças ao longo do tempo do coeficiente, corroborando para a utilização em estratégias que necessitam de valores dinâmicos do Beta.

__________________________________________________

Quer saber mais?

Veja nosso curso de Python para Investimentos.

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Criando operações SQL com IA Generativa no R com querychat

No universo da análise de dados, a velocidade para obter respostas é um diferencial competitivo. Frequentemente, uma simples pergunta de negócio — “Qual foi nosso produto mais vendido no último trimestre na região Nordeste?” — inicia um processo que envolve abrir o RStudio, escrever código dplyr ou SQL, executar e, finalmente, obter a resposta. E se pudéssemos simplesmente perguntar isso aos nossos dados em português, diretamente no nosso dashboard Shiny?

Dashboard Financeiro com IA e Shiny Python: Análise de Dados Abertos da CVM

Este artigo apresenta um tutorial completo sobre como construir uma ferramenta de análise financeira de ponta. Utilizando Shiny for Python, demonstramos a automação da coleta de dados das Demonstrações Financeiras Padronizadas (DFP) da CVM e o tratamento dessas informações com Pandas. O ponto alto do projeto é a integração da IA Generativa do Google Gemini, que atua como um assistente de análise, interpretando os dados filtrados pelo usuário e fornecendo insights contábeis e financeiros em tempo real. O resultado é um dashboard dinâmico que democratiza a análise de dados complexos e acelera a tomada de decisão.

Econometria, ML ou IA para previsão da PMS?

Prever a Pesquisa Mensal de Serviços (PMS/IBGE) é um desafio por natureza: trata-se de uma série mensal, sujeita a volatilidade e choques que vão de fatores sazonais a mudanças estruturais no setor. Para enfrentar esse problema, realizamos um exercício de comparação entre três abordagens de modelagem: econometria tradicional (ARIMA), machine learning (XGBoost) e inteligência artificial (TimeGPT).

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.