Tag

arma Archives - Análise Macro

Aplicações de modelos de volatilidade no R

By | mercado financeiro

Modelos de Volatilidade foram criados na década de 1980 com o objetivo de refinar o tratamento do risco e da incerteza em um modelo empírico, algo que os modelos de precificação até então tinham dificuldades em lidar. Modelos do tipo ARCH e GARCH fundamentam-se na variância condicional, levando em consideração os eventos extremos das séries financeiras. No post de hoje, iremos demonstrar as aplicação de modelos do tipo GARCH (1.1) no mundo real.

Antes de começarmos com a aplicação e o código, devemos fazer aqui rapidamente algumas considerações sobre os modelos. Para introduzir melhor sobre o assunto, temos um post aqui na Análise Macro explicando os modelos ARCH e GARCH , bem como possuímos o curso de Econometria Financeira usando o R, que ajuda a entender melhor sobre modelagem de séries financeiras.

Consideramos que a previsão média dos retornos dado a informação disponível no tempo  $t_1$ de uma série é calculada como:

     $$\mu_t = E[R_t | I_{t-1}]$$

Com os erros da previsão sendo

     $$e_t= R_t - \mu_t$$

Com base nas informações no tempo $t-1$, também é possível calcular a variância:

     $$\sigma^2 = E[(R_t - \mu_t)^2 | I_{t-1}]$$

     $$ = E[e^2_t |I_{t_1}]$$

Ao realizar a estimação da previsão média dos retornos, podemos realizá-la tanto através de média móvel dos retornos, calculada a partir de:

     $$\mu_t = \frac{1}{M}\sum_{i = 1}^M R_{t-1}$$

quanto a partir de um processo ARMA.

O que nos permitirá ter os modelos:

ARCH:

     $$\sigma^2_t = \omega + \sum_{i=1}^p \alpha_ie^2_{t-i}$$

GARCH(1,1)

     $$\sigma^2_t = \omega + \sum_{i=1}^p \alpha_ie^2_{t-i} + \sum_{i=1}^p\beta\sigma^2_{t-1}$$

Estimar a volatilidade do Ibovespa

Podemos aplicar o modelo GARCH(1,1) no índice bovespa, de forma a comparar os diferentes períodos de volatilidade da série. Antes da modelagem, porém, realizamos uma análise de dados dos retornos do índice bovespa. No código abaixo, importamos os pacotes e a série da Ibovespa, transformando os seus preços de fechamentos ajustados em log retornos.


Com os retornos em mãos, realizamos uma análise para ajudar a entender melhor a questão da heterocedasticidade condicional. O gráfico de Q-Q permite avaliar a distribuição empíricas dos quantiles e relação a distribuição teórica, sendo assim, é útil para saber se a distribuição dos retornos segue como normal. Como é interessante de ver, apesar da forma retilínea da distribuição, há valores discrepantes, que chamamos de eventos extremos, o que causa problemas na nossa série. Significa que há momentos dos quais o valores se tornam eventos extremos, afetando a variância (volatilidade) em determinados períodos.

Um forma interessante de visualizar esses momentos de heterocedasticidade condicional, é visualizando a série do retorno, bem como seu gráfico de autocorrelação, e comparar com os erros ao quadrado (como na equação acima, demonstrando ser a variância da série).


Vemos que há momentos que realmente houveram variações significativas, principalmente em períodos de crises, e que os valores dos erros ao quadrado mostram através do gráfico de autocorrelação, que elas não são independentes no tempo, ou seja, podemos modelar a variância através de seus valores passados.

Abaixo, criamos um gráfico mais sofisticado do desvio padrão anualizado móvel em períodos de 22 dias, de forma a comparar com os erros ao quadrado.

Por fim, é possível melhorar ainda mais a estimação da volatilidade, utilizando o modelo GARCH (1,1) para obter a estimação da variância e da média condicional utilizando o pacote {ugarch}.

O primeiro passo é a especificação o modelo com ugarchspec. Dentre as especificações, escolhemos que o valor previsto do retorno será estimado pela média amostral (armaOrder = c(0,0), lembrando que é possível utilizar modelos ARMA nesse caso). O modelo da variância será o "standard GARCH", e a distribuição será normal.

O segundo passo é calcular as estimativas com base na função ugarchfit, utilizando a especificação que criamos.

O terceiro passo, opcional, é realizar a previsão nos períodos futuros com a função ugarchforecast.



Aplicação da volatilidade: Teorema da separação de Tobin

Podemos utilizar como exemplo o teorema da separação de Tobin (1958), que a grosso modo, estabelece a carteira eficiente de ativos arriscados, e também determina a fração (peso) ótima para investir na carteira de ativos arriscado e no ativo livre de risco.

Se um portfolio investe a porcentagem $w$ em um ativo de risco (com volatilidade   $\sigma_t$ ) e mantêm  $1 - w$  no ativo livre de risco, obtemos uma volatilidade igual a:

     $$\sigma_p = w\sigma_t$$

Como definimos  $w$ ? É possível através do volatility targeting. O valor de  $w$ será aquele que o valor previsto da volatilidade anualizada será igual ao valor do target, sendo então 5%, por exemplo:

     $$w* = 0,05/\sigma_t$$



O gráfico demonstra a relação do portfolio e da variância, vemos que quanto maior o nível de volatilidade em certo períodos, menor será a fração no portfolio de ativos de risco.

Referências

James Tobin. Liquidity preference as behavior towards risk. Review of Economic Studies, XXV(2):65–86, February 1958.

Rolling Regression e Inércia Inflacionária no R

By | Comentário de Conjuntura

No nosso Curso de Macroeconometria II, nós vemos diversas técnicas econométricas aplicadas a variáveis macroeconômicas reais. Para ilustrar, vamos considerar nesse comentário de conjuntura o comportamento da inércia inflacionária no período recente através da técnica de rolling regression. A abordagem de regressão recursiva é frequentemente usada na análise de séries temporais para avaliar a estabilidade dos parâmetros do modelo em relação ao tempo.

Para isso, vamos precisar carregar alguns pacotes e coletar o dado da inflação mensal diretamente do Banco Central com o pacote BETS. Você também pode usar outros pacotes para isso, como o rbcb ou o Quandl ou ainda a própria API do Banco Central.


library(BETS)
library(lmtest)
library(forecast)
library(ggplot2)
library(scales)

### Importando a inflação mensal
ipca = BETSget(433, from='1999-06-01')

Eu peguei a inflação mensal a partir de junho de 1999, quando foi o publicado o decreto executivo sobre o regime de metas para inflação. Uma vez coletada a inflação, nós podemos construir nossa rolling regression. A ideia básica da regressão recursiva é tomar uma janela de observações e andar com ela ao longo da amostra disponível. Por exemplo, podemos criar uma janela com de 48 meses e estimar o nosso modelo para as primeiras 48 observações. Guardamos o parâmetro que interessa do modelo e andamos com a nossa janela, até chegar a última observação disponível.

Para fazer isso na prática, nós vamos precisar criar um loop, que basicamente automatiza o processo de andar com a nossa janela. Para não termos que repetir o processo acima n vezes.

Para fazer isso, primeiro, vamos setar algumas coisas, como o número de parâmetros a serem guardados e o tamanho da janela da rolling regression. Além disso, vamos criar matrizes para guardar os parâmetros estimados e os seus desvios-padrão.


### Criando matrizes que guardarão coeficientes e desvios-padrões
p <- 2 # Parâmetros a serem guardados
janela <- 48 # número de meses da janela
coefs <- matrix(NA, ncol = p, nrow = length(ipca)-janela)
dps <- matrix(NA, ncol = p, nrow = length(ipca)-janela)
colnames(coefs) <- c('AR(1)', 'Intercepto')
colnames(dps) <- c('AR(1)', 'Intercepto')

Uma vez que esteja tudo preparado para receber os valores, nós precisaremos estimar o nosso modelo. A ideia aqui é basicamente estimar um modelo AR(1), guardando assim o coeficiente autorregressivo que irá medir a inércia inflacionária ao longo do tempo.


### Loop para rodar o AR(1)
for (i in 1:nrow(coefs)){
ar1 <- Arima(ipca[(1+i-1):(janela+i-1)],
order=c(1,0,0))
coefs[i,] <- coef(ar1)
dps[i,] <- coeftest(ar1)[,2]
}

Uma vez estimado o modelo e guardado os parâmetros, nós podemos criar um gráfico como abaixo, que ilustrar o comportamento da inércia inflacionária ao longo do tempo. Isto é, o comportamento do coeficiente autorregressivo do nosso modelo AR(1).

Como se pode ver, há um recuo da inércia inflacionária a partir do início de 2018.

_____________________

(*) Isso e muito mais você irá aprender no nosso Curso de Macroeconometria II.


_____________________

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente