Volatilidade do bitcoin: HAR vs. aprendizado de máquina no Python

Neste exercício mostramos como realizar a previsão da Volatilidade do Bitcoin em USD através do modelo HAR. Realizamos uma comparação da especificação proposta dos modelos tipo HAR type utilizando modelos de machine learning. O procedimento de coleta, tratamento e modelagem é realizado através do Python.

Aprenda a coletar, processar e analisar dados na formação de Do Zero à Análise de Dados Econômicos e Financeiros com Python.

Quer aprender a como criar modelos de série econômicas brasileiras usando Machine Learning e IA Generativa? Veja nosso curso IA para previsão Macroeconômica usando Python.

Introdução

O modelo HAR (Heterogeneous Autoregressive Model) é um modelo de previsão de volatilidade que considera diferentes horizontes temporais, como diário, semanal e mensal. Ele é especialmente útil para capturar a natureza persistente da volatilidade em mercados financeiros. A ideia central é que a volatilidade atual pode ser influenciada pela volatilidade observada em diferentes intervalos de tempo.

Estrutura do Modelo HAR

A fórmula básica do modelo HAR é:

    \[RV_t = \beta_0 + \beta_1 RV_{t-1} + \beta_2 RV_{t-1}^{(w)} + \beta_3 RV_{t-1}^{(m)} + \epsilon_t\]

Onde:

- RV_t é a volatilidade realizada no dia t.

- RV_{t-1} é a volatilidade realizada no dia anterior.

- RV_{t-1}^{(w)} é a média da volatilidade realizada na semana anterior.

- RV_{t-1}^{(m)} é a média da volatilidade realizada no mês anterior.

- \beta_0, \beta_1, \beta_2, \beta_3 são parâmetros a serem estimados.

- \epsilon_t é o termo de erro.

Para o caso do exercício, a Volatilidade Realizada calculada é a seguinte:

    \[RV_t \equiv \sum_{j=1}^{M} r_{t,j}^2\]

HAR-J

Existem diversos tipos de modelos do tipo HAR. Um deles é conhecido como HAR-J, que é uma extensão do modelo HAR padrão que incorpora um componente de salto diário (J_t) para capturar saltos bruscos na volatilidade. A inclusão desse componente permite ao modelo capturar melhor a dinâmica da volatilidade, especialmente em mercados financeiros onde saltos repentinos são comuns.

A fórmula do modelo HAR-J é:

    \[RV_{t+h} = \beta_0 + \beta_d RV_t^{(1)} + \beta_w RV_t^{(5)} + \beta_m RV_t^{(22)} + \beta_j J_t + \epsilon_{t+h}\]

Onde:

- RV_{t+h} é a volatilidade realizada no dia t+h.

- RV_t^{(1)} é a volatilidade realizada diária.

- RV_t^{(5)} é a média da volatilidade realizada nos últimos 5 dias (semanal).

- RV_t^{(22)} é a média da volatilidade realizada nos últimos 22 dias (mensal).

- J_t é o componente de salto.

- \beta_0, \beta_d, \beta_w, \beta_m, \beta_j são os parâmetros a serem estimados.

- \epsilon_{t+h} é o termo de erro.

Componente de Salto (J_t)

O componente de salto J_t é definido como a diferença entre a volatilidade realizada (RV_t) e a variação bipower (BPV_t), mas somente quando essa diferença é positiva. Isso permite ao modelo capturar apenas os saltos positivos na volatilidade, que são frequentemente indicativos de eventos bruscos ou choques no mercado.

    \[J_t = \max(RV_t - BPV_t, 0)\]

A variação bipower (BPV_t) é calculada usando a seguinte fórmula:

    \[BPV_t = \left(\frac{2}{\pi}\right) \sum_{j=2}^{M} |r_{t,j-1}||r_{t,j}|\]

Onde r_{t,j} são os retornos logarítmicos.

Modelagem

O modelo HAR pode ser estimado via MQO, utilizando uma regressão linear múltipla. Comparações são feitas com extensões da regressão linear e modelos de machine learning. Os modelos utilizados são:

- LinearRegression

- Ridge

- Lasso

- LinearSVR

- RandomForestRegressor

Os dados são diários, com a amostra iniciando em 2018 e terminando no final de maio de 2024. Metade da amostra é separada para treino, enquanto o restante é utilizado para teste. Para o backtesting, utilizou-se a validação cruzada com janela expansiva, realizando previsões para 5 dias à frente e reestimando o modelo ao fim de cada horizonte.

Análise de dados

O gráfico mostra uma tendência geral de alta no preço do Bitcoin em USD desde o final de 2018. No entanto, existem períodos de flutuações consideráveis, com quedas acentuadas seguidas de recuperação.

  • O Bitcoin teve um período de alta volatilidade em 2021, com quedas e recuperação significativas durante o ano.
  • O Bitcoin experimentou uma queda acentuada no final de 2021 e início de 2022, com um período de recuperação mais gradual depois.
  • O preço do Bitcoin parece ter se estabilizado um pouco em 2022 e 2023, embora tenha mostrado uma tendência de alta novamente em 2024.

O gráfico de log-retornos do Bitcoin demonstra um padrão interessante:

  • Volatilidade: Os log-retornos oscilam ao redor de zero, indicando uma volatilidade constante ao longo do período.
  • Picos de Volatilidade: Há alguns picos significativos de volatilidade, como o ocorrido em 2020, que indicam eventos de alta volatilidade no mercado.
  • Distribuição: A distribuição dos log-retornos parece ser próxima de uma distribuição normal, com a maior parte dos valores concentrada em torno de zero.

2. Volatilidade Realizada:

O gráfico de volatilidade realizada mostra como a volatilidade do Bitcoin se manifesta ao longo do tempo:

  • Pico em 2020: Existe um pico acentuado de volatilidade no início de 2020, coincidente com a queda no preço do Bitcoin. Isso indica um período de grande incerteza e instabilidade no mercado.
  • Flutuações: A volatilidade realizada apresenta flutuações consideráveis ao longo do período, com períodos de alta e baixa volatilidade.
  • Tendência: A volatilidade realizada tende a diminuir gradualmente após 2020, indicando uma redução na incerteza do mercado.

3. Saltos:

O gráfico de saltos evidencia os momentos de maior variação no preço do Bitcoin:

  • Pico em 2020: Assim como nos gráficos anteriores, o gráfico de saltos apresenta um pico significativo em 2020, sinalizando uma mudança repentina e significativa no preço do Bitcoin.
  • Eventos Discretos: O gráfico de saltos destaca eventos discretos de alta volatilidade, que provavelmente representam eventos como crises ou grandes notícias.
  • Tendência: A frequência e intensidade dos saltos diminuem após 2020, corroborando a tendência de menor volatilidade observada nos outros gráficos.

O gráfico apresenta a decomposição da volatilidade realizada do Bitcoin em suas componentes de tendência, sazonalidade e resíduo.

1. Tendência:

  • A tendência da volatilidade realizada mostra um aumento gradual da volatilidade até 2020, seguido por uma redução e estabilização.

2. Sazonalidade:

  • A sazonalidade da volatilidade realizada é relativamente baixa, com pequenas flutuações ao longo do tempo.

3. Resíduo:

  • O componente de resíduo, que representa a parte da volatilidade não explicada pela tendência e sazonalidade, é geralmente baixo e oscila ao redor de zero.
  • Há alguns picos discretos de resíduo em 2020.

A análise conjunta do ACF e PACF da volatilidade realizada do Bitcoin indica que a série possui autocorrelação significativa e persistente, com um padrão periódico, como observado no ACF. No PACF, o primeiro lag apresenta autocorrelação significativa, enquanto os lags seguintes são próximos de zero, sugerindo um processo AR(1), ou seja, a volatilidade atual é influenciada principalmente pela volatilidade do período anterior.

Previsões

Abaixo, as métricas de MSE e as previsões dos modelos no período de teste da validação cruzada.

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

Coletando dados regionais do CAGED no Python

Os dados regionais do CAGED permitem analisar o mercado de trabalho de forma detalhada, em termos de setores, educação, rendimento e características pessoais dos trabalhadores brasileiros. Neste exercício mostramos como acessar estas informações online via Python.

Coletando dados de Setores Censitários do Censo 2022 no Python

Dados sobre a demografia e o território são primordiais para definir e implementar políticas públicas, áreas de atuação comercial e/ou estratégias de marketing. Sendo assim, saber usar os dados do Censo 2022 pode trazer vantagens competitivas. Neste exercício mostramos como obter os dados da Malha de Setores Censitários no formato vetorial (GeoJson) usando o Python.

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.