Comandos R para análises de séries temporais

10 - Volatilidade Estocástica

Abordagem Bayesiana

O pacote stochvol produz estimativas para modelos de volatilidade estocástica a partir de uma abordagem bayesiana via MCMC.
A abordagem é descrita em Kastner (2015) e utiliza a parametrização na forma canônica de Kim et al. (1998):

\[ \begin{array}{cc} r_t|h_t \sim = \mathcal{N}(0,\exp{h_t}) & (8.1) \\ h_t|\{h_{t-1},\mu,\phi,\sigma\} \sim \mathcal{N}(\mu +\phi(h_{t-1}-\mu),\sigma^2) & (8.2) \\ h_t|\{h_0,\mu,\phi,\sigma\} \sim \mathcal{N}(\mu, \sigma^2 / (1-\phi^2)) & (8.3) \end{array} \]

Considerando \(\underset{\sim}\theta=(\mu,\phi,\sigma)^T\), o vetor de parâmetros, \(\mu\) representa o nível da log-variância, \(\phi\) representa sua persistência e \(\sigma\) sua variância. O processo \(\underset{\sim}h=(h_0,...,h_n)\) é geralmente interpretado como um processo de volatilidade latente variante no tempo.

Uma vez que temos uma abordagem bayesiana, uma distribuição uma priori deve ser suposta para \(\underset{\sim}\theta\). Novamente seguindo a abordagem de Kim et al. (1998), considera-se, no stochvol, \(\underset{\sim}\theta\) com componentes independentes, isto é:

\[ \begin{array}{cc} p(\underset{\sim}\theta)=p(\mu)p(\phi)p(\sigma) & (8.4) \end{array} \]

Com as distribuições de \(\mu,\phi\) e \(\sigma\) definidas por:

\[ \begin{array}{cc} p(\mu)\sim\mathcal{N}(b_\mu,B_\mu) & (8.5)\\ (\phi+1)/2 \sim Beta(a_0,b_0) & (8.6)\\ \sigma^2\sim B_\sigma \times \chi^2_1=Gama(1/2,1/2 B_\sigma) & (8.7) \end{array} \]

Estas prioris são definidas com o objetivo de dar o mínimo de informação inicial. Prioris mais informativas para este modelo são descritas em Kim et al. (1998), Jacquier et al. (2004), Yu (2005), e Omori et al.(2007). Para maiores detalhes sobre a escolha destas prioris, veja Kastner (2015).

Aplicação na Série de retornos do Ibovespa

Utilizando o Exemplo 5.5 de Morettin (2011), vamos ajustar o modelo de volatidade estocástica proposto em (8.1)-(8.3) para a série de retornos do Ibovespa.

library(stochvol)
ibov<-ts(read.table("D-IBV.txt"))
rt.ibov<-diff(log(ibov))
par(mfrow=c(2,1))
plot.ts(ibov,main="Série de preços Ibovespa")
plot.ts(rt.ibov,main="Série de log-retornos(r_t) Ibovespa")

plot.ts(rt.ibov^2,main="Série de r_t² Ibovespa")
plot.ts(log(rt.ibov^2),main="Série de log(r_t)² Ibovespa")

O comando svsample simula, via MCMC, a distribuição a posteriori baseada no modelo proposto em (8.1) - (8.3) e nas prioris propostas em (8.4)-(8.7).
No quadro abaixo temos a descrição dos hiperparametros das distribuições a priori, que devem ser fornecidos para a função svsample. Para \(\mu\), priormu = c(0,100) define 0 e 100 , respectivamente, como a média e desvio-padrão de sua distribuição normal a priori. Para \(\phi\), os valores de \(a_0\) e \(b_0\) iniciais(priorphi) são 5 e 1.5, resultando numa distribuição Beta a priori com média 0.54 e desvio-padrão 0.31. Finalmente, para \(\sigma\), temos \(B_\sigma=1\). Para maiores detalhes sobre estas escolhas dos hiperparametros, consulte Kastner (2015) e Kim et al. (1998).

svsample:
    y                     # Série de log-retornos  
    burnin = 1000         # Número de observações iniciais simuladas a serem descartadas.   
    draws = 10000         # Número de observações simuladas após o descarte das observações em 'burnin'.   
    priormu = c(0, 100)   # Hiperparametros da distribuição de mu.   
    priorphi = c(5, 1.5)  # Hiperparametros da distribuição de phi.   
    priorsigma = 1        # Hiperparametro da distribuição de sigma.   

Os comandos a seguir simulam a distribuição a posteriori da volatilidade dos retornos do Ibovespa e imprimem os gráficos e estimativas dos parâmetros da posteriori.

post.ibov<-svsample(rt.ibov)
## Warning in svsample(rt.ibov): Argument 'y' (data vector) contains zeros.
## I am adding an offset constant of size 2.8645533693365e-06 to do the
## auxiliary mixture sampling. If you want to avoid this, you might consider
## de-meaning the returns before calling this function.
summary(post.ibov, showlatent=FALSE) # Para ter eacesso aos parâmetros estimados da posteriori
## 
## Summary of 10000 MCMC draws after a burn-in of 1000.
## 
## Prior distributions:
## mu        ~ Normal(mean = 0, sd = 100)
## (phi+1)/2 ~ Beta(a0 = 5, b0 = 1.5)
## sigma^2   ~ 1 * Chisq(df = 1)
## 
## Posterior draws of parameters (thinning = 1):
##             mean     sd     5%    50%    95%  ESS
## mu        -7.673 0.2381 -8.050 -7.673 -7.282 3719
## phi        0.972 0.0089  0.957  0.973  0.986  411
## sigma      0.232 0.0279  0.187  0.232  0.280  183
## exp(mu/2)  0.022 0.0026  0.018  0.022  0.026 3719
## sigma^2    0.055 0.0131  0.035  0.054  0.078  183
plot(post.ibov) # Plota as estimativas do processo, os traços dos parâmetros estimados ao longo das iterações e as distribuições priori e posteriori.   

É possivel ainda calcular o resíduo para este modelo, da forma ususal:

resid.ibov<-resid(post.ibov)
plot(resid.ibov, col="darkblue",cex=0.5)

Pelos gráficos anteriores, vemos que os resíduos do ajustes possuem comportamento aproximadamente normal, sem indícios de heterocedasticidade. Comparando os quantis da distribuição a posteriori simulada e a volatilidade observada da série, vemos que a posteriori consegue captar os maiores picos de volatilidade observados.

#par(mfrow=c(2,1))
plot.ts(rt.ibov^2,main="Série de r_t² Ibovespa")

volplot(post.ibov)

Referências

  • Jacquier E, Polson NG, Rossi PE (2004). Bayesian Analysis of Stochastic Volatility Models With Fat-Tails and Correlated Errors. Journal of Econometrics, 122(1), 185–212.

  • Kastner G., 2015, Dealing with Stochastic Volatility in Time Series Using the R Package stochvol, Journal of statistical software, 12 (to appear).

  • Kastner G. and Frühwirth-Schnatte, S., 2014, Ancillarity-Sufficiency Interweaving Strategy (ASIS) for Boosting MCMC Estimation of Stochastic Volatility Models. Computational Statistics & Data Analysis. 08/2014; 76, 408–423.

  • Kim, S., Shephard, N. and Chib, S., 1998. Stochastic volatility: Likelihood inference and comparison with ARCH models. Review of Economic Studies, 65, 361–393.

  • Morettin P.A., Econometria Financeira, Blucher 2ed. Sao Paulo, 2011.

  • Omori Y, Chib S, Shephard N, Nakajima J (2007). Stochastic Volatility With Leverage: Fast and Efficient Likelihood Inference. Journal of Econometrics, 140(2), 425–449.

  • Yu Y, Meng XL (2011). To Center or Not to Center: That is Not the Question—An Ancillarity-Suffiency Interweaving Strategy (ASIS) for Boosting MCMC Efficiency. Journal of Computational and Graphical Statistics, 20(3), 531–570.