Lista 2 - Séries Financeiras

Considere o seguinte processo estocástico:

\(r_t = e_t + \beta*e_{t-1}e_{t-1}\) ; \(e_t\sim NID(0,\sigma^2)\) ; \(E(e_te_s)=0\) \(t \neq s\)

1 A

Considere dois valores para \(\beta\) e \(\sigma\) e gere realização de um processo com tamanho 500

#Crie um vetor de sementes para fixar a geração de números aleatórios
set.seed(29032019)

#Crie um vetor para alocar as 500 gerações da série especificada pelo exercício
r = vector()

#Defina o primeiro beta e o sigma 2, gerando através da normal adequada 
beta = 0.5
sigma2 = 1
e = rnorm(502,0,sqrt(sigma2))

#Para gerar a série requerida, faça uma loop iniciando do valor 3, devido ao erro com índice com t-2.
for (i in 3:502){
  r[i] = e[i] + beta*e[i-1]*e[i-2]
}
r1 = as.vector(na.omit(r))

#Para uma outra série, faça analogamente, apenas alterando o parâmetros.
beta = -0.5
sigma2 = 10
e = rnorm(502,0,sqrt(sigma2))
for (i in 3:502){
  r[i] = e[i] + beta*e[i-1]*e[i-2]
}
r2 = as.vector(na.omit(r))

#Plote a série 
plot(r1,type="l",main="beta = 0.5 e sigma 2 = 1")

plot(r2,type="l",main="beta = -0.5 e sigma 2 = 10")

2 B

#correlograma da série dado os parâmetros b=0.5 e sigma2=1
acf(r1,main="r1")

#correlograma da série ao quadrado dado os parâmetros b=0.5 e sigma2=1
acf(r1,main="r1^2")

#correlograma da série dado os parâmetros b=-0.5 e sigma2=10
acf(r2^2,main="r2")

#correlograma da série ao quadrado dado os parâmetros b=-0.5 e sigma2=10
acf(r2^2,main="r2^2")

#Estatística para a série r1 (b=0.5 e sigma2=1)
r=r1
options(digits=4)
r.describe    <- describe(r)
r.media       <- r.describe[,3]
r.desvpad     <- r.describe[,4]
r.mediana     <- r.describe[,5]
r.assimetria  <- r.describe[,11]
r.exc.curtose <- r.describe[,12]
STATS1         <- cbind(r.media,r.desvpad,r.mediana,r.assimetria,r.exc.curtose)

#Estatística para a série r2 (b=-0.5 e sigma2=10)
r=r2
options(digits=4)
r.describe    <- describe(r)
r.media       <- r.describe[,3]
r.desvpad     <- r.describe[,4]
r.mediana     <- r.describe[,5]
r.assimetria  <- r.describe[,11]
r.exc.curtose <- r.describe[,12]
STATS2         <- cbind(r.media,r.desvpad,r.mediana,r.assimetria,r.exc.curtose)

stats = as.data.frame(rbind(STATS1,STATS2))
rownames(stats) = c("r1","r2")
kable(stats)
r.media r.desvpad r.mediana r.assimetria r.exc.curtose
r1 -0.0071 1.058 -0.0283 0.1140 0.0022
r2 0.0483 5.227 -0.1360 0.1813 1.2482

Verifica-se para a primeira série uma média e uma média próxima de zero, pouca assimetria e quase nenhum excesso de curtose. Já a segunda série evidencia uma média mais distante de zero, um excesso de curto levemente maior um desvio padrão razoavelmente maior, como já era esperado, pois foi imposto no modelo. À exceção da média da segunda série gerada, que não está razoavelmente próxima de zero, todos os fatos estilizados são verificados.

3 C

Como a variância incondicional é a própria variância da série, temos que.

a=var(r1)
b=var(r2)

vari = as.data.frame(rbind(a,b))

rownames(vari) = c("r1","r2")
colnames(vari) = c("Variância")

kable(vari)
Variância
r1 1.12
r2 27.32

4 D

Para calcular a variância condicional, utiliza-se a seguinte expressão:

\(\sigma_{t}^{2} = E[(r_t-\mu_t)^2|F_{t-1}]\)

Podendo ser reescrita como:

\(E_{t-1}[(r_t-\mu_t)^2]\)

Em outras palavras, a variância condicional pode ser interpretada como a variância de um processo, dado tudo o que já foi observado anteriormente. Estamos interessados em “segmentos” da série de retorno.

#Crie vetores para alocar os resultados para as médias condicionais e para as variâncias condicionais
cond1 = vector()
cond2 = vector()
mu1   = vector()
mu2   = vector()


#Média condicional de r1
for (i in 2:500){
mu1[i-1]=mean(r1[i])   
}

#Média condiconal de r2
for (i in 2:500){
mu2[i-1]=mean(r2[i])   
}

#Variância condiciona de r1 (dependente da média condicional de r1)
for (i in 2:499){
cond1[i-1]=mean( (r1[i]-mu1[i])^2 )   
}

#Variância condiciona de r2 (dependente da média condicional de r2)
for (i in 2:499){
cond2[i-1]=mean( (r2[i]-mu2[i])^2 )   
}

varicond = as.data.frame(cbind(cond1[1:9],cond2[1:9]))
colnames(varicond) = c("r1","r2")
rownames(varicond) = rep(paste("t",2:10,sep = ""))
kable(varicond)
r1 r2
t2 1.2121 22.540
t3 0.2436 22.127
t4 0.1892 183.051
t5 0.3783 16.496
t6 0.4735 11.336
t7 1.3774 186.304
t8 2.2885 257.991
t9 0.0427 0.291
t10 10.9953 52.261

5 E

acf(cond1)

acf(cond1^2)

acf(cond2)

acf(cond2^2)

Verifica-se que a série de volatilidade não apresenta, visualmente, autocorrelação.

6 F

Box.test(cond1)
## 
##  Box-Pierce test
## 
## data:  cond1
## X-squared = 47, df = 1, p-value = 6e-12
Box.test(cond2)
## 
##  Box-Pierce test
## 
## data:  cond2
## X-squared = 48, df = 1, p-value = 4e-12
Box.test(cond1^2)
## 
##  Box-Pierce test
## 
## data:  cond1^2
## X-squared = 46, df = 1, p-value = 1e-11
Box.test(cond2^2)
## 
##  Box-Pierce test
## 
## data:  cond2^2
## X-squared = 20, df = 1, p-value = 9e-06

Ao contrário do que foi apresentado em G, o teste de Ljung-Box indica que há evidências de que a série de volatilidade não seja um Ruído Branco.

7 G

Box.test(r1)
## 
##  Box-Pierce test
## 
## data:  r1
## X-squared = 0.37, df = 1, p-value = 0.5
Box.test(r2)
## 
##  Box-Pierce test
## 
## data:  r2
## X-squared = 0.018, df = 1, p-value = 0.9

Por sua vez, pelo teste de Ljung-Box, não existem evidências contra a hipótese de que a série de retorno seja um ruído branco, ao contrário do que foi observado na série de volatilidade.

r=cond1
options(digits=4)
r.describe    <- describe(r)
r.media       <- r.describe[,3]
r.desvpad     <- r.describe[,4]
r.mediana     <- r.describe[,5]
r.assimetria  <- r.describe[,11]
r.exc.curtose <- r.describe[,12]
STATS1         <- cbind(r.media,r.desvpad,r.mediana,r.assimetria,r.exc.curtose)

#Estatística para a série r2 (b=-0.5 e sigma2=10)
r=cond2
options(digits=4)
r.describe    <- describe(r)
r.media       <- r.describe[,3]
r.desvpad     <- r.describe[,4]
r.mediana     <- r.describe[,5]
r.assimetria  <- r.describe[,11]
r.exc.curtose <- r.describe[,12]
STATS2         <- cbind(r.media,r.desvpad,r.mediana,r.assimetria,r.exc.curtose)

stats = as.data.frame(rbind(STATS1,STATS2))
rownames(stats) = c("cond1","cond2")
kable(stats)
r.media r.desvpad r.mediana r.assimetria r.exc.curtose
cond1 2.178 3.583 0.9662 4.273 29.19
cond2 54.376 110.144 13.9639 3.839 17.54

A série de volatidade apresenta medidas resumo grosseiramente diferentes da série de retornos. Assimétrica, com excesso de curtose e média diferente de zero.

8 H

Os dados gerados apresentam uma série de retornos coerente com o que é pautado pelos fatos estilizados. Já a série de volatidade apresenta um comportamento não-normal, para além de uma evidente não-linearidade apresentada nos lags. Conclui-se que o modelo é ideal para a modelagem de uma série de retornos bem comportada.

9 Demonstrações

9.1 Demonstração da média condicional

\(\mu_t = E_{t-1}[r_t]=\)

\(=E_{t-1}[\epsilon_t+\beta_t\epsilon_{t-1}\epsilon_{t-2}]=\)

\(=E_{t-1}[\epsilon_t] + \beta_tE_{t-1}[\epsilon_{t-1}]E_{t-1}[\epsilon_{t-2}]=\)

\(=0 + 0 + 0 = 0\)

9.2 Demonstração da variância condicional

\(\sigma_{t}^{2} = E_{t-1}[r^2]=\)

\(=E_{t-1}[(\epsilon_t+\beta_t\epsilon_{t-1}\epsilon_{t-2})^2]=\)

\(=E_{t-1}[(\epsilon_t)^2]+2\beta_tE_{t-1}[\epsilon_t\epsilon_{t-1}\epsilon_{t-2}] + \beta^2E_{t-1}[\epsilon_{t-1}^{2 }\epsilon_{t-2}^{2}] =\)

\(= V(\epsilon_t) + E_{t-1}^{2}[\epsilon_t] + 0 + \beta^2E_{t-1}[\epsilon_{t-1}^{2 }]E_{t-1}[\epsilon_{t-2}^{2}] =\)

\(= \sigma^2 + 0 + 0 + \beta^2\sigma^4 =\)

\(= \sigma^2( 1 + \beta^2\sigma^2)\)

Rafael Cabral Fernandez

2019-04-03