Lidando com Missing Values em Séries Financeiras

Podemos dizer que um fato é certeiro na vida de todo Cientista de Dados: encontrar Missing Values. A vida de quem trabalha com finanças também não é diferente, sendo comum encontrar séries financeiras com dados faltantes. Neste post, iremos mostrar como podemos lidar com este problema.

library(quantmod)
library(zoo)
library(knitr)
library(magrittr)
library(timetk)

Vamos aqui trabalhar com a série de preços da MGLU3. Podemos ver através do gráfico que há um NA faltante no dia 26 de fevereiro de 2020.

getSymbols("MGLU3.SA",
                     auto.assign = TRUE,
                     from = "2020-01-01",
                     to = "2020-12-31")

plot(Ad(MGLU3.SA))

Podemos utilizar a função window() para visualizar detalhadamente a data em que nossa série de preços possui dados faltantes.

mglu_na <- window(Ad(MGLU3.SA), 
       start = "2020-02-18",
       end = "2020-03-02")

Agora iremos trabalhar em como podemos lidar com esse NA.

A primeira forma será utilizando a função na.locf(), do pacote {zoo}. Ela permite que o último valor, anterior ao NA, seja repetido para que seja feito esse preenchimento.

na.locf(mglu_na) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

É possível também utilizar o valor adiante ao NA, passando o argumento fromLast = TRUE na função na.locf().

na.locf(mglu_na, fromLast = TRUE) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

Outra forma de resolver o problema, pode ser preenchendo o dado faltante de forma manual, com a função na.fill(), passando no argumento fill o valor desejado.

na.fill(mglu_na, fill = 13) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

Pode-se utilizar a função na.omit() para que o valor seja simplesmente retirado da série de preços.

na.omit(mglu_na) %>% 
  tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

Por fim, uma forma interessante é utilizar a função na.approx() do pacote {zoo}. A função realiza uma interpolação linear para preencher o valor faltante.

na.approx(mglu_na) %>% 
tk_tbl(preserve_index = TRUE,
         rename_index = "date") %>% 
  kable()

plot(na.approx(Ad(MGLU3.SA)))

________________________

(*) Para entender mais sobre Mercado Financeiro e aprender como realizar a coleta, tratamento e visualização de dados financeiros, confira nosso curso de R para o Mercado Financeiro.

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.