Estimando a volatilidade da taxa de câmbio

O que é Volatilidade? Como podemos calcular essa métrica? Este artigo apresenta uma breve introdução à volatilidade, descreve como podemos calcular a volatilidade utilizando Modelos de Volatilidade Condicional e demonstra a aplicação prática dessa abordagem para estimar a volatilidade da taxa de câmbio BRL/USD por meio da linguagem de programação Python.

Estimando a Volatilidade do Câmbio no Python

Uma importante medida em finanças é o risco associado a um ativo e a volatilidade de ativos é talvez a medida de risco mais utilizada. Ainda que a volatilidade seja bem definida, ela não é diretamente observada na prática. Nós observamos os preços dos ativos e seus derivativos. A volatilidade deve ser, então, estimada com base nesses preços observados. Ainda que a volatilidade não seja diretamente observada, ela apresenta algumas características comuns associadas aos retornos dos ativos. Listamos abaixo algumas delas:

- A volatilidade é alta em certos períodos e baixa em outros, configurando o que a literatura chama de volatility clusters;

- A volatilidade evolui de maneira contínua, de modo que saltos não são comuns;

- A volatilidade costuma variar em um intervalo fixo;

- A volatilidade costuma reagir de forma diferente a um aumento muito grande nos preços e a um decréscimo igualmente muito grande, com o último representando maior impacto.

Essas características implicam que, de modo geral, a volatilidade é uma série estacionária. Ademais, essas características determinam a forma como os modelos serão construídos.

De fato, alguns modelos de volatilidade são formatados justamente para corrigir a inabilidade dos atualmente existentes em capturar algumas das características mencionadas acima.

Na prática, estima-se a volatilidade de um ativo com base nos seus preços ou derivativos. Tipicamente, três tipos de volatilidade são consideradas:

- Volatilidade como o desvio padrão condicional dos retornos diários;

- Volatilidade implícita, obtida a partir de fórmulas de precificação (como Black-Scholes), com base nos preços do mercado de opções, é possível deduzir a volatilidade do preço da ação. Um exemplo desse tipo de procedimento é o VIX Index;

- Volatilidade realizada, obtida com base em dados financeiros de alta frequência, como, por exemplo, retornos intraday de 5 minutos.

Modelagem

Com efeito, para estimar a volatilidade da taxa de câmbio BRL/USD, primeiro, precisamos pegar a série via Sistema de Séries Temporais do Banco Central.

Feito isso, podemos calcular o log retorno da série, estimar um modelo GARCH(1,1) para os mesmos, extraindo assim a série de volatilidade.

Para a volatilidade do Câmbio, usamos um modelo GARCH(1,1).

Definição do Modelo

Um modelo GARCH(1,1) (Generalized Autoregressive Conditional Heteroskedasticity) é uma forma de modelar a volatilidade condicional em séries temporais financeiras. Para entendermos o modelo, devemos compreender o modelo ARCH e os seus termos.

Os modelos ARCH (Autoregressive Conditional Heteroskedasticity) são usados para modelar a heterocedasticidade condicional em séries temporais financeiras, ou seja, a variabilidade condicional da volatilidade ao longo do tempo. Os termos principais em um modelo ARCH incluem:

1. Erro Condicional \epsilon_t: O erro condicional representa a diferença entre o valor observado da série temporal no período t e o valor previsto pelo modelo. Em um modelo ARCH, a variância desse erro não é constante ao longo do tempo, e é isso que o modelo tenta capturar.

2. Variância Condicional \sigma_t^2: A variância condicional é a variabilidade da série temporal em um determinado período de tempo, condicionada às informações anteriores. Ela não é constante, como é o caso de séries temporais com heterocedasticidade condicional. A variância condicional no período t é denotada por \sigma_t^2.

    \[y_t = \mu + \epsilon_t\]

    \[\epsilon_t = y_t - \mu\]

    \[\sigma^2 = E[(y_t - \mu)^2]\]

Um modelo ARCH(1) é representado por:

    \[\epsilon_t = \sigma_t \cdot z_t\]

    \[\sigma_t^2 = \alpha_0 + \alpha_1 \cdot \epsilon_{t-1}^2\]

Já equação geral para um modelo GARCH(1,1) pode ser representada da seguinte forma:

    \[\epsilon_t = \sigma_t \cdot z_t\]

    \[\sigma_t^2 = \alpha_0 + \alpha_1 \cdot \epsilon_{t-1}^2 + \beta_1 \cdot \sigma_{t-1}^2\]

Onde:
- y_t é o valor observado na data t.
- \mu é a média condicional da série temporal.
- \epsilon_t é o erro condicional na data t, assumindo que \epsilon_t é um ruído branco com média zero (E[\epsilon_t] = 0).
- \sigma_t é a volatilidade condicional não constante na data t.
- z_t é uma variável aleatória independente e identicamente distribuída com média zero e variância um (z_t \sim N(0, 1)).
- \alpha_0, \alpha_1, e \beta_1 são parâmetros do modelo GARCH(1,1) que precisam ser estimados.

As suposições e restrições típicas associadas a um modelo GARCH(1,1) incluem:

1. Séries Temporais Estacionárias: O modelo assume que a série temporal é estacionária, o que significa que a média e a variância condicionais são constantes ao longo do tempo. Se a série não for estacionária, pode ser necessário aplicar diferenciação ou transformações para torná-la estacionária.

2. Erros Condicionais Independentes e Identicamente Distribuídos: Os erros \epsilon_t são assumidos como ruído branco, o que significa que são independentes entre si e têm a mesma distribuição, com média zero e variância constante.

3. Condições de Positividade: Os parâmetros \alpha_0, \alpha_1, e \beta_1 devem satisfazer condições de positividade para garantir que a volatilidade condicional seja não negativa.

4. Condição de Estacionariedade: Para que o modelo seja estável, é necessário que \alpha_1 + \beta_1 < 1. Isso garante que a série temporal seja estacionária no sentido fraco.

Para a montagem do Modelo, seguimos o seguinte processo:

1. Especificar uma equação de média, testando a dependência serial nos dados e, se necessário, construindo um modelo econométrico (por exemplo, um modelo ARMA) para a série de retornos, a fim de eliminar qualquer dependência linear.

2. Utilizar os resíduos da equação de média para testar os efeitos ARCH e verificar a distribuição de dados que melhor representa o modelo.

3. Especificar um modelo de volatilidade se os efeitos ARCH forem estatisticamente significativos e realizar uma estimação conjunta das equações de média e volatilidade.

4. Verificar o modelo ajustado cuidadosamente e refiná-lo, se necessário.

Vamos aplicar o GARCH(1,1) para série de primeira diferença logaritimizada do Câmbio R/US.

Dados do Câmbio

Primeiramente, é essencial realizar uma análise dos dados de câmbio. Por meio do gráfico abaixo, podemos observar as variações nos preços dessa variável, destacando a significativa elevação ocorrida em 2020.

A série no nível apresenta características de um passeio aleatório. Portanto, é necessário realizar uma transformação na série. Optamos por calcular o retorno logaritmo, cujo resultado é apresentado abaixo. Conforme mencionado, é possível notar a presença de clusters de volatilidade na série, sugerindo a existência de heterocedasticidade e variação condicional.

Com base nessa análise, procedemos à estimação da série utilizando um modelo GARCH(1,1). O gráfico a seguir exibe o resultado da variância condicional calculada, expressa em termos anualizados.

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.

Referências

R. L. S. Bueno. Econometria de Séries Temporais. Editora Cengage Learning, 2011.

R. S. Tsay. An Introduction to Analysis of Financial Data with R. Editora Wiley, 2013.

 

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Transfer Learning: mostrando porque o Python está na ponta do desenvolvimento

A aprendizagem por transferência (transfer learning) é o reuso de um modelo pré-treinado em um novo problema. Portanto, sua utilização torna-se um avanço enorme para a previsão de diferentes tipos de variáveis, principalmente para aquelas ordenadas no tempo. Mostramos nesta postagem o uso do Transfer Learning com o Python para o caso de Séries Temporais.

Criando Tabelas com o Python: mostrando o poder da linguagem sobre o Excel

Nos dias atuais, pessoas que trabalham com dados estão constantemente confrontados com um dilema: criar uma tabela não tão genial no Excel ou manter em um formato ainda pior, como um dataframe, mas mantendo a flexibilidade de obtenção dos dados. Podemos resolver esse grande problema, unindo a flexibilidade e beleza ao usar a biblioteca great_tables do Python.

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.