## UNIVERSIDADE FEDERAL DA PARAÍBA## DEPARTAMENTO DE ECONOMIA## CURSO DE GESTÃO DE RISCO## PROFESSOR: SINÉZIO FERNANDES MAIA## ALUNO: JOSUÉ DE MENESES LOPES## Estimação de Modelos GARCH## ============================================================================## Limpeza do ambiente e configurações iniciaisremove(list=ls())options(scipen=999)options(max.print =1000000)par(mfrow=c(1,1))## Carregamento das bibliotecas necessárias{library(xts)library(zoo)library(tidyverse)library(BatchGetSymbols)library(rbcb)library(readxl)library(tseries)library(PerformanceAnalytics)library(zoo)library(stats)library(fBasics)library(moments)library(dynlm)library(lmtest)library(whitestrap)library(FinTS)library(fGarch)library(rugarch)library(urca)library(quantmod)}
Index diff(log(cafe_diario_fut_zoo))
Min. :2023-05-03 Min. :-0.110527
1st Qu.:2023-08-29 1st Qu.:-0.011127
Median :2024-01-03 Median : 0.000000
Mean :2024-01-01 Mean : 0.000785
3rd Qu.:2024-05-04 3rd Qu.: 0.014035
Max. :2024-08-30 Max. : 0.086474
x
nobs 335.000000
NAs 0.000000
Minimum -0.110527
Maximum 0.086474
1. Quartile -0.011127
3. Quartile 0.014035
Mean 0.000785
Median 0.000000
Sum 0.262984
SE Mean 0.001257
LCL Mean -0.001688
UCL Mean 0.003258
Variance 0.000529
Stdev 0.023009
Skewness -0.186075
Kurtosis 2.640227
# Jarque Bera - Café FuturojarqueberaTest((diff(log(cafe_diario_fut_zoo))))
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 101.7604
P VALUE:
Asymptotic p Value: < 0.00000000000000022
Código
# Calcular a série logaritmizada e diferenciada{log_diff_cafe_fut <-diff(log(cafe_diario_fut_zoo))# Remover NAs após a diferenciação e logaritmolog_diff_cafe_fut <-na.omit(log_diff_cafe_fut)}# ACF e PACFacf(as.numeric(log_diff_cafe_fut), main ="ACF - Café Futuro")
Código
pacf(as.numeric(log_diff_cafe_fut), main ="PACF - Café Futuro")
Código
# Box-Pierce - Café Futuro# Não há autocorrelação quando p-valor > 0.005Box.test((diff(log(cafe_diario_fut_zoo))), lag=1)
Index diff(log(cafe_diario_spot_zoo))
Min. :2023-05-03 Min. :-0.0563782
1st Qu.:2023-08-29 1st Qu.:-0.0092330
Median :2024-01-03 Median : 0.0003571
Mean :2024-01-01 Mean : 0.0005525
3rd Qu.:2024-05-04 3rd Qu.: 0.0103754
Max. :2024-08-30 Max. : 0.0570347
x
nobs 335.000000
NAs 0.000000
Minimum -0.056378
Maximum 0.057035
1. Quartile -0.009233
3. Quartile 0.010375
Mean 0.000552
Median 0.000357
Sum 0.185080
SE Mean 0.000902
LCL Mean -0.001221
UCL Mean 0.002326
Variance 0.000272
Stdev 0.016504
Skewness 0.147673
Kurtosis 0.770273
# Jarque Bera - Café SpotjarqueberaTest((diff(log(cafe_diario_spot_zoo))))
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 10.0037
P VALUE:
Asymptotic p Value: 0.006726
Código
# Calcular a série logaritmizada e diferenciada{log_diff_cafe_spot <-diff(log(cafe_diario_spot_zoo))# Remover NAs após a diferenciação e logaritmolog_diff_cafe_spot <-na.omit(log_diff_cafe_spot)}# ACF e PACFacf(as.numeric(log_diff_cafe_spot), main ="ACF - Café Spot")
Código
pacf(as.numeric(log_diff_cafe_spot), main ="PACF - Café Spot")
Código
# Box-Pierce - Café Spot# Não há autocorrelação quando p-valor > 0.005Box.test((diff(log(cafe_diario_spot_zoo))), lag=1)
# Estimação dos Retornos por ARIMA# -----------------------------------------------------------------------------# ARIMA para o Preço FuturoArimaFut111 <-arima(cafe_diario_fut_xts, order =c(1,1,0), method =c("CSS-ML"))ResiduosFUT <-residuals(ArimaFut111)par(mfrow=c(1,1))chart.TimeSeries(ResiduosFUT)
Código
chart.ACF(ResiduosFUT)
Código
tsdiag(ArimaFut111)
Código
# ARIMA para o Preço SpotArimaSpot111 <-arima(cafe_diario_spot_xts, order =c(2,1,0), method =c("CSS-ML"))ResiduosSPOT <-residuals(ArimaSpot111)par(mfrow=c(1,1))chart.TimeSeries(ResiduosSPOT)
###############################################
# Augmented Dickey-Fuller Test Unit Root Test #
###############################################
Test regression trend
Call:
lm(formula = z.diff ~ z.lag.1 + 1 + tt)
Residuals:
Min 1Q Median 3Q Max
-14.7673 -1.8547 -0.0121 2.1072 13.3981
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -0.372788 0.387613 -0.962 0.337
z.lag.1 -1.021907 0.054888 -18.618 <0.0000000000000002 ***
tt 0.002948 0.002003 1.472 0.142
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 3.534 on 332 degrees of freedom
Multiple R-squared: 0.5108, Adjusted R-squared: 0.5078
F-statistic: 173.3 on 2 and 332 DF, p-value: < 0.00000000000000022
Value of test-statistic is: -18.6179 115.5429 173.3141
Critical values for test statistics:
1pct 5pct 10pct
tau3 -3.98 -3.42 -3.13
phi2 6.15 4.71 4.05
phi3 8.34 6.30 5.36
MQO - Café Futuro
Código
# Estimação do modelo MQO Dinâmico - CAFÉ FUTURO# -----------------------------------------------------------------------------# Calcular a série logaritmizada e diferenciada{log_diff_cafe_fut <-diff(log(cafe_diario_fut_zoo))# Remover NAs após a diferenciação e logaritmolog_diff_cafe_fut <-na.omit(log_diff_cafe_fut)dcafe_diario_fut_zoo <- log_diff_cafe_futdcafe_diario_fut_zoo <-na.omit(dcafe_diario_fut_zoo)cbind(cafe_diario_fut_zoo, cafe_diario_fut_zoo)}
Código
# Regressão Dinâmica usando a série diferenciada (MQO Dinâmico)lag <- stats::lagMQODin <-dynlm(dcafe_diario_fut_zoo ~lag(dcafe_diario_fut_zoo, -1))coef(MQODin)
Time series regression with "zoo" data:
Start = 2023-05-04, End = 2024-08-30
Call:
dynlm(formula = dcafe_diario_fut_zoo ~ lag(dcafe_diario_fut_zoo,
-1))
Residuals:
Min 1Q Median 3Q Max
-0.107786 -0.012082 -0.000443 0.012381 0.086400
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0009217 0.0012578 0.733 0.464
lag(dcafe_diario_fut_zoo, -1) -0.0771376 0.0546704 -1.411 0.159
Residual standard error: 0.02297 on 332 degrees of freedom
Multiple R-squared: 0.005961, Adjusted R-squared: 0.002967
F-statistic: 1.991 on 1 and 332 DF, p-value: 0.1592
Resíduos - Café Futuro
Código
# Resíduos da regressão{residuosMQO_FUT <-residuals(MQODin)residuosMQO_FUTchart.TimeSeries(residuosMQO_FUT)# Histogramachart.Histogram(residuosMQO_FUT)}
Código
# Gráfico de histograma com curva de distribuição normal sobreposta{par(mfrow =c(1, 1))hist(residuosMQO_FUT, main ="", col ="cadetblue", prob =TRUE, xlab =names(residuosMQO_FUT)[1], breaks =30)curve(expr =dnorm(x, mean =mean(residuosMQO_FUT), sd =sd(residuosMQO_FUT)), col ="red", add =TRUE, lwd =2)}
Código
# Gráfico QQ-Norm (Normal Quantile-Quantile Plot) para verificar a normalidade dos resíduos{qqnorm(residuosMQO_FUT, col ="blue")qqline(residuosMQO_FUT, col ="red")}
Testes - Café Futuro
Código
# Testes de Normalidade# -----------------------------------------------------------------------------# Teste de Jarque-BerajarqueberaTest(residuosMQO_FUT)
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 100.7964
P VALUE:
Asymptotic p Value: < 0.00000000000000022
Código
# Teste de Shapiro-Wilk#shapiro.test(residuosMQO_FUT)# Testes de Heterocedasticidade# -----------------------------------------------------------------------------{length(residuosMQO_FUT)length(residuosMQO_FUT) *0.15}
[1] 50.1
Código
# Teste de Goldfeld-Quandtgqtest(MQODin, fraction =50.1, alternative ="greater")
Goldfeld-Quandt test
data: MQODin
GQ = 1.1498, df1 = 140, df2 = 139, p-value = 0.2055
alternative hypothesis: variance increases from segment 1 to 2
Código
# Teste de Breusch-Paganbptest(MQODin)
studentized Breusch-Pagan test
data: MQODin
BP = 0.70692, df = 1, p-value = 0.4005
Código
# Teste Whitewhite_test(MQODin)
White's test results
Null hypothesis: Homoskedasticity of the residuals
Alternative hypothesis: Heteroskedasticity of the residuals
Test Statistic: 1.35
P-value: 0.509098
# Testes de autocorrelação dos resíduos# -----------------------------------------------------------------------------# Teste de Durbin-Watsondwtest(MQODin)
Durbin-Watson test
data: MQODin
DW = 1.9941, p-value = 0.4802
alternative hypothesis: true autocorrelation is greater than 0
Código
# Teste de Breusch-Godfreybgtest(MQODin, order =4)
Breusch-Godfrey test for serial correlation of order up to 4
data: MQODin
LM test = 7.0223, df = 4, p-value = 0.1347
Código
# Teste Box-PierceBox.test(residuosMQO_FUT, lag =12, type ="Box-Pierce")
# Função de Autocorrelação dos resíduos com 36 defasagens{par(mfrow =c(1, 1))acf(as.numeric(residuosMQO_FUT, lag =36, col ="red", lwd =2, main ="ACF com 36 Defasagem", xlab ="Defasagem"))}
GARCH- Café Futuro
Código
### ESTIMAÇÃO GARCH / RETORNO E VARIÂNCIA# -----------------------------------------------------------------------------# Estimação do modelo GARCH(1,1) com uma estrutura ARMA(1,1) na médiaGarch11 <-garchFit(~arma(2,1) +garch(1,1),data =diff(log(cafe_diario_fut_zoo)), include.mean =FALSE, trace =FALSE)summary(Garch11)
Title:
GARCH Modelling
Call:
garchFit(formula = ~arma(2, 1) + garch(1, 1), data = diff(log(cafe_diario_fut_zoo)),
include.mean = FALSE, trace = FALSE)
Mean and Variance Equation:
data ~ arma(2, 1) + garch(1, 1)
<environment: 0x0000012ad2bf6578>
[data = diff(log(cafe_diario_fut_zoo))]
Conditional Distribution:
norm
Coefficient(s):
ar1 ar2 ma1 omega alpha1 beta1
-0.94838316 -0.06765178 0.84984369 0.00014389 0.11372822 0.61848261
Std. Errors:
based on Hessian
Error Analysis:
Estimate Std. Error t value Pr(>|t|)
ar1 -0.9483832 0.1002003 -9.465 < 0.0000000000000002 ***
ar2 -0.0676518 0.0598488 -1.130 0.25832
ma1 0.8498437 0.0884569 9.607 < 0.0000000000000002 ***
omega 0.0001439 0.0000967 1.488 0.13674
alpha1 0.1137282 0.0688424 1.652 0.09853 .
beta1 0.6184826 0.2109952 2.931 0.00338 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Log Likelihood:
794.0345 normalized: 2.370252
Description:
Tue Sep 10 15:18:30 2024 by user: josue
Standardised Residuals Tests:
Statistic p-Value
Jarque-Bera Test R Chi^2 52.9721160 0.000000000003142375
Shapiro-Wilk Test R W 0.9729679 0.000006422881065669
Ljung-Box Test R Q(10) 12.3787617 0.260506709834577022
Ljung-Box Test R Q(15) 19.5256784 0.190892816371796448
Ljung-Box Test R Q(20) 30.1097322 0.068095010194346051
Ljung-Box Test R^2 Q(10) 6.6066963 0.761979951095084318
Ljung-Box Test R^2 Q(15) 15.5885538 0.409910573202979744
Ljung-Box Test R^2 Q(20) 20.5082321 0.426567603232857362
LM Arch Test R TR^2 6.5970213 0.883055893135824888
Information Criterion Statistics:
AIC BIC SIC HQIC
-4.704684 -4.636371 -4.705310 -4.677449
vconds1 = Garch11@h.t# Gráfico da série temporal da variância condicional GARCH(1,1)plot.ts(vconds1, type ="l",main ="Variância Condicional GARCH(1,1)",xlab ="",ylab ="Variância Condicional")
Código
plot(Garch11, which =3)
Código
#vconds1plot.ts(vconds1)
Código
# Cálculo do desvio-padrão condicionalDP <-sqrt(vconds1)# Cálculo da volatilidade anualizada assumindo 252 dias úteis no anovol <- DP *sqrt(252)#volplot.ts(vol)
Código
# Cálculo da média da volatilidade anualizadamean(vol)
[1] 0.3627026
EGARCH - Café FUTURO
Código
# Estimação do modelo EGARCH(1,1) com uma estrutura ARMA(1,1) na média - Café FuturoEGarch11_Spot <-garchFit(~arma(2,1) +garch(1,1), data =diff(log(cafe_diario_fut_zoo)), include.mean =FALSE, cond.dist ="std", garchModel ="eGARCH", trace =FALSE)summary(EGarch11_Spot)
Title:
GARCH Modelling
Call:
garchFit(formula = ~arma(2, 1) + garch(1, 1), data = diff(log(cafe_diario_fut_zoo)),
cond.dist = "std", include.mean = FALSE, trace = FALSE, garchModel = "eGARCH")
Mean and Variance Equation:
data ~ arma(2, 1) + garch(1, 1)
<environment: 0x0000012acf3cc4e8>
[data = diff(log(cafe_diario_fut_zoo))]
Conditional Distribution:
std
Coefficient(s):
ar1 ar2 ma1 omega alpha1
-0.824140180 -0.116618951 0.714990922 0.000066779 0.009501214
beta1 shape
0.888951448 3.262481064
Std. Errors:
based on Hessian
Error Analysis:
Estimate Std. Error t value Pr(>|t|)
ar1 -0.82414018 0.16495372 -4.996 0.000000585 ***
ar2 -0.11661895 0.04915838 -2.372 0.01768 *
ma1 0.71499092 0.16803463 4.255 0.000020903 ***
omega 0.00006678 0.00014293 0.467 0.64033
alpha1 0.00950121 0.07365564 0.129 0.89736
beta1 0.88895145 0.28107821 3.163 0.00156 **
shape 3.26248106 0.80213385 4.067 0.000047571 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Log Likelihood:
811.3811 normalized: 2.422033
Description:
Tue Sep 10 15:18:30 2024 by user: josue
Standardised Residuals Tests:
Statistic p-Value
Jarque-Bera Test R Chi^2 103.3114642 0.0000000000000
Shapiro-Wilk Test R W 0.9628545 0.0000001588054
Ljung-Box Test R Q(10) 13.5823621 0.1929075243619
Ljung-Box Test R Q(15) 22.6870131 0.0910150143405
Ljung-Box Test R Q(20) 32.2773346 0.0404313398799
Ljung-Box Test R^2 Q(10) 5.8346239 0.8289607139153
Ljung-Box Test R^2 Q(15) 15.3295851 0.4279474606675
Ljung-Box Test R^2 Q(20) 19.5371247 0.4871986204520
LM Arch Test R TR^2 6.5297654 0.8870625727042
Information Criterion Statistics:
AIC BIC SIC HQIC
-4.802275 -4.722577 -4.803125 -4.770502
vconds_spot_egarch = EGarch11_Spot@h.t# Gráfico da série temporal da variância condicional EGARCH(1,1) - Café Futuroplot.ts(vconds_spot_egarch, type ="l",main ="Variância Condicional EGARCH(1,1) - Café Futuro",xlab ="",ylab ="Variância Condicional")
Código
# Cálculo do desvio-padrão condicional - Café FuturoDP_spot_egarch <-sqrt(vconds_spot_egarch)# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano - Café Futurovol_spot_egarch <- DP_spot_egarch *sqrt(252)#vol_spot_egarchplot.ts(vol_spot_egarch)
Código
# Cálculo da média da volatilidade anualizada - Café Futuromean(vol_spot_egarch)
[1] 0.4025182
TGARCH - Café FUTURO
Código
# Estimação do modelo TGARCH(1,1) com uma estrutura ARMA(1,1) na média - Café FuturoTGarch11_Spot <-garchFit(~arma(2,1) +garch(1,1), data =diff(log(cafe_diario_fut_zoo)), include.mean =FALSE, cond.dist ="std", garchModel ="TGARCH", trace =FALSE)summary(TGarch11_Spot)
Title:
GARCH Modelling
Call:
garchFit(formula = ~arma(2, 1) + garch(1, 1), data = diff(log(cafe_diario_fut_zoo)),
cond.dist = "std", include.mean = FALSE, trace = FALSE, garchModel = "TGARCH")
Mean and Variance Equation:
data ~ arma(2, 1) + garch(1, 1)
<environment: 0x0000012ac0649918>
[data = diff(log(cafe_diario_fut_zoo))]
Conditional Distribution:
std
Coefficient(s):
ar1 ar2 ma1 omega alpha1
-0.824140180 -0.116618951 0.714990922 0.000066779 0.009501214
beta1 shape
0.888951448 3.262481064
Std. Errors:
based on Hessian
Error Analysis:
Estimate Std. Error t value Pr(>|t|)
ar1 -0.82414018 0.16495372 -4.996 0.000000585 ***
ar2 -0.11661895 0.04915838 -2.372 0.01768 *
ma1 0.71499092 0.16803463 4.255 0.000020903 ***
omega 0.00006678 0.00014293 0.467 0.64033
alpha1 0.00950121 0.07365564 0.129 0.89736
beta1 0.88895145 0.28107821 3.163 0.00156 **
shape 3.26248106 0.80213385 4.067 0.000047571 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Log Likelihood:
811.3811 normalized: 2.422033
Description:
Tue Sep 10 15:18:31 2024 by user: josue
Standardised Residuals Tests:
Statistic p-Value
Jarque-Bera Test R Chi^2 103.3114642 0.0000000000000
Shapiro-Wilk Test R W 0.9628545 0.0000001588054
Ljung-Box Test R Q(10) 13.5823621 0.1929075243619
Ljung-Box Test R Q(15) 22.6870131 0.0910150143405
Ljung-Box Test R Q(20) 32.2773346 0.0404313398799
Ljung-Box Test R^2 Q(10) 5.8346239 0.8289607139153
Ljung-Box Test R^2 Q(15) 15.3295851 0.4279474606675
Ljung-Box Test R^2 Q(20) 19.5371247 0.4871986204520
LM Arch Test R TR^2 6.5297654 0.8870625727042
Information Criterion Statistics:
AIC BIC SIC HQIC
-4.802275 -4.722577 -4.803125 -4.770502
vconds_spot_tgarch = TGarch11_Spot@h.t# Gráfico da série temporal da variância condicional TGARCH(1,1) - Café Futuroplot.ts(vconds_spot_tgarch, type ="l",main ="Variância Condicional TGARCH(1,1) - Café Futuro",xlab ="",ylab ="Variância Condicional")
Código
# Cálculo do desvio-padrão condicional - Café FuturoDP_spot_tgarch <-sqrt(vconds_spot_tgarch)# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano - Café Futurovol_spot_tgarch <- DP_spot_tgarch *sqrt(252)#vol_spot_tgarchplot.ts(vol_spot_tgarch)
Código
# Cálculo da média da volatilidade anualizada - Café Futuromean(vol_spot_tgarch)
Time series regression with "zoo" data:
Start = 2023-05-04, End = 2024-08-30
Call:
dynlm(formula = dcafe_diario_spot_zoo ~ lag(dcafe_diario_spot_zoo,
-1))
Residuals:
Min 1Q Median 3Q Max
-0.059434 -0.009403 -0.000459 0.010203 0.056302
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0005875 0.0009044 0.650 0.516
lag(dcafe_diario_spot_zoo, -1) -0.0642328 0.0547703 -1.173 0.242
Residual standard error: 0.01652 on 332 degrees of freedom
Multiple R-squared: 0.004126, Adjusted R-squared: 0.001126
F-statistic: 1.375 on 1 and 332 DF, p-value: 0.2417
Residuos - Café Spot
Código
# Resíduos da regressão{residuosMQO_SPOT <-residuals(MQODin)residuosMQO_SPOTchart.TimeSeries(residuosMQO_SPOT)}
Código
# Histogramachart.Histogram(residuosMQO_SPOT)
Código
# Gráfico de histograma com curva de distribuição normal sobreposta{par(mfrow =c(1, 1))hist(residuosMQO_SPOT, main ="", col ="cadetblue", prob =TRUE, xlab =names(residuosMQO_SPOT)[1], breaks =30)curve(expr =dnorm(x, mean =mean(residuosMQO_SPOT), sd =sd(residuosMQO_SPOT)), col ="red", add =TRUE, lwd =2)}
Código
# Gráfico QQ-Norm (Normal Quantile-Quantile Plot) para verificar a normalidade dos resíduos{qqnorm(residuosMQO_SPOT, col ="blue")qqline(residuosMQO_SPOT, col ="red")}
Testes - Café SPOT
Código
# Testes de Normalidade# -----------------------------------------------------------------------------# Teste de Jarque-BerajarqueberaTest(residuosMQO_SPOT)
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 10.5999
P VALUE:
Asymptotic p Value: 0.004992
Código
# Teste de Shapiro-Wilk#shapiro.test(residuosMQO_SPOT)# Testes de Heterocedasticidade# -----------------------------------------------------------------------------length(residuosMQO_SPOT)
[1] 334
Código
length(residuosMQO_SPOT) *0.15
[1] 50.1
Código
# Teste de Goldfeld-Quandtgqtest(MQODin, fraction =50.1, alternative ="greater")
Goldfeld-Quandt test
data: MQODin
GQ = 1.6334, df1 = 140, df2 = 139, p-value = 0.002007
alternative hypothesis: variance increases from segment 1 to 2
Código
# Teste de Breusch-Paganbptest(MQODin)
studentized Breusch-Pagan test
data: MQODin
BP = 0.38734, df = 1, p-value = 0.5337
Código
# Teste Whitewhite_test(MQODin)
White's test results
Null hypothesis: Homoskedasticity of the residuals
Alternative hypothesis: Heteroskedasticity of the residuals
Test Statistic: 1.13
P-value: 0.567585
# Testes de autocorrelação dos resíduos# -----------------------------------------------------------------------------# Teste de Durbin-Watsondwtest(MQODin)
Durbin-Watson test
data: MQODin
DW = 1.9823, p-value = 0.4366
alternative hypothesis: true autocorrelation is greater than 0
Código
# Teste de Breusch-Godfreybgtest(MQODin, order =4)
Breusch-Godfrey test for serial correlation of order up to 4
data: MQODin
LM test = 11.879, df = 4, p-value = 0.01827
Código
# Teste Box-PierceBox.test(residuosMQO_SPOT, lag =12, type ="Box-Pierce")
# Função de Autocorrelação dos resíduos com 36 defasagens{par(mfrow =c(1, 1))acf(as.numeric(residuosMQO_SPOT, lag =36, col ="red", lwd =2, main ="ACF com 36 Defasagem", xlab ="Defasagem"))}
GARCH - Café Spot
Código
### ESTIMAÇÃO GARCH / RETORNO E VARIÂNCIA# -----------------------------------------------------------------------------# Estimação do modelo GARCH(1,1) com uma estrutura ARMA(1,1) na médiaGarch11 <-garchFit(~arma(1,1) +garch(1,1),data =diff(log(cafe_diario_spot_zoo)), include.mean =FALSE, trace =FALSE)summary(Garch11)
Title:
GARCH Modelling
Call:
garchFit(formula = ~arma(1, 1) + garch(1, 1), data = diff(log(cafe_diario_spot_zoo)),
include.mean = FALSE, trace = FALSE)
Mean and Variance Equation:
data ~ arma(1, 1) + garch(1, 1)
<environment: 0x0000012acfeb1b10>
[data = diff(log(cafe_diario_spot_zoo))]
Conditional Distribution:
norm
Coefficient(s):
ar1 ma1 omega alpha1 beta1
-0.411124689 0.330296508 0.000010668 0.037263646 0.924741774
Std. Errors:
based on Hessian
Error Analysis:
Estimate Std. Error t value Pr(>|t|)
ar1 -0.411124689 0.293416689 -1.401 0.1612
ma1 0.330296508 0.301923958 1.094 0.2740
omega 0.000010668 0.000008349 1.278 0.2013
alpha1 0.037263646 0.021784583 1.711 0.0872 .
beta1 0.924741774 0.041013702 22.547 <0.0000000000000002 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Log Likelihood:
903.9437 normalized: 2.698339
Description:
Tue Sep 10 15:18:31 2024 by user: josue
Standardised Residuals Tests:
Statistic p-Value
Jarque-Bera Test R Chi^2 5.4669823 0.0649919966
Shapiro-Wilk Test R W 0.9925742 0.0944634331
Ljung-Box Test R Q(10) 16.6307639 0.0829440464
Ljung-Box Test R Q(15) 22.8363926 0.0876758599
Ljung-Box Test R Q(20) 31.4447751 0.0495858574
Ljung-Box Test R^2 Q(10) 15.5778602 0.1123711746
Ljung-Box Test R^2 Q(15) 29.5986131 0.0134540597
Ljung-Box Test R^2 Q(20) 46.5983158 0.0006667468
LM Arch Test R TR^2 21.0839331 0.0491648079
Information Criterion Statistics:
AIC BIC SIC HQIC
-5.366828 -5.309901 -5.367265 -5.344133
vconds1 = Garch11@h.t# Gráfico da série temporal da variância condicional GARCH(1,1)plot.ts(vconds1, type ="l",main ="Variância Condicional GARCH(1,1)",xlab ="",ylab ="Variância Condicional")
Código
plot(Garch11, which =3)
Código
#vconds1plot.ts(vconds1)
Código
# Cálculo do desvio-padrão condicionalDP <-sqrt(vconds1)# Cálculo da volatilidade anualizada assumindo 252 dias úteis no anovol <- DP *sqrt(252)#volplot.ts(vol)
Código
# Cálculo da média da volatilidade anualizadamean(vol)
[1] 0.2619101
EGARCH - Café Spot
Código
### ESTIMAÇÃO GARCH / RETORNO E VARIÂNCIA# -----------------------------------------------------------------------------# Estimação do modelo EGARCH(1,1) com uma estrutura ARMA(1,1) na média - Café SpotEGarch11_Spot <-garchFit(~arma(2,1) +garch(1,1), data =diff(log(cafe_diario_spot_zoo)), include.mean =FALSE, cond.dist ="std", garchModel ="eGARCH", trace =FALSE)summary(EGarch11_Spot)
Title:
GARCH Modelling
Call:
garchFit(formula = ~arma(2, 1) + garch(1, 1), data = diff(log(cafe_diario_spot_zoo)),
cond.dist = "std", include.mean = FALSE, trace = FALSE, garchModel = "eGARCH")
Mean and Variance Equation:
data ~ arma(2, 1) + garch(1, 1)
<environment: 0x0000012ac7a77758>
[data = diff(log(cafe_diario_spot_zoo))]
Conditional Distribution:
std
Coefficient(s):
ar1 ar2 ma1 omega
0.39039974863197 0.15385823875279 -0.44883181586030 0.00000000027239
alpha1 beta1 shape
0.00394805559886 0.99733694683797 6.62829752650076
Std. Errors:
based on Hessian
Error Analysis:
Estimate Std. Error t value Pr(>|t|)
ar1 0.3903997486320 0.2316590170638 1.685 0.09194 .
ar2 0.1538582387528 0.0534167328159 2.880 0.00397 **
ma1 -0.4488318158603 0.2299404860284 -1.952 0.05094 .
omega 0.0000000002724 0.0000013915365 0.000 0.99984
alpha1 0.0039480555989 0.0061759250246 0.639 0.52265
beta1 0.9973369468380 0.0036879260733 270.433 < 0.0000000000000002 ***
shape 6.6282975265008 3.1143896618577 2.128 0.03331 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Log Likelihood:
909.0493 normalized: 2.71358
Description:
Tue Sep 10 15:18:32 2024 by user: josue
Standardised Residuals Tests:
Statistic p-Value
Jarque-Bera Test R Chi^2 6.556666 0.03769103026
Shapiro-Wilk Test R W 0.991844 0.06237861509
Ljung-Box Test R Q(10) 9.873331 0.45167587029
Ljung-Box Test R Q(15) 17.322531 0.29995190930
Ljung-Box Test R Q(20) 27.254982 0.12824147638
Ljung-Box Test R^2 Q(10) 18.319805 0.04980272061
Ljung-Box Test R^2 Q(15) 29.850582 0.01247183323
Ljung-Box Test R^2 Q(20) 56.402463 0.00002527778
LM Arch Test R TR^2 23.611966 0.02295765146
Information Criterion Statistics:
AIC BIC SIC HQIC
-5.385369 -5.305670 -5.386218 -5.353595
vconds_spot_egarch = EGarch11_Spot@h.t# Gráfico da série temporal da variância condicional EGARCH(1,1) - Café Spotplot.ts(vconds_spot_egarch, type ="l",main ="Variância Condicional EGARCH(1,1) - Café Spot",xlab ="",ylab ="Variância Condicional")
Código
# Cálculo do desvio-padrão condicional - Café SpotDP_spot_egarch <-sqrt(vconds_spot_egarch)# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano - Café Spotvol_spot_egarch <- DP_spot_egarch *sqrt(252)#vol_spot_egarchplot.ts(vol_spot_egarch)
Código
# Cálculo da média da volatilidade anualizada - Café Spotmean(vol_spot_egarch)
[1] 0.2712917
TGARCH - Café Spot
Código
# Estimação do modelo TGARCH(1,1) com uma estrutura ARMA(1,1) na média - Café SpotTGarch11_Spot <-garchFit(~arma(2,1) +garch(1,1), data =diff(log(cafe_diario_spot_zoo)), include.mean =FALSE, cond.dist ="std", garchModel ="TGARCH", trace =FALSE)summary(TGarch11_Spot)
Title:
GARCH Modelling
Call:
garchFit(formula = ~arma(2, 1) + garch(1, 1), data = diff(log(cafe_diario_spot_zoo)),
cond.dist = "std", include.mean = FALSE, trace = FALSE, garchModel = "TGARCH")
Mean and Variance Equation:
data ~ arma(2, 1) + garch(1, 1)
<environment: 0x0000012acb294f20>
[data = diff(log(cafe_diario_spot_zoo))]
Conditional Distribution:
std
Coefficient(s):
ar1 ar2 ma1 omega
0.39039974863197 0.15385823875279 -0.44883181586030 0.00000000027239
alpha1 beta1 shape
0.00394805559886 0.99733694683797 6.62829752650076
Std. Errors:
based on Hessian
Error Analysis:
Estimate Std. Error t value Pr(>|t|)
ar1 0.3903997486320 0.2316590170638 1.685 0.09194 .
ar2 0.1538582387528 0.0534167328159 2.880 0.00397 **
ma1 -0.4488318158603 0.2299404860284 -1.952 0.05094 .
omega 0.0000000002724 0.0000013915365 0.000 0.99984
alpha1 0.0039480555989 0.0061759250246 0.639 0.52265
beta1 0.9973369468380 0.0036879260733 270.433 < 0.0000000000000002 ***
shape 6.6282975265008 3.1143896618577 2.128 0.03331 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Log Likelihood:
909.0493 normalized: 2.71358
Description:
Tue Sep 10 15:18:33 2024 by user: josue
Standardised Residuals Tests:
Statistic p-Value
Jarque-Bera Test R Chi^2 6.556666 0.03769103026
Shapiro-Wilk Test R W 0.991844 0.06237861509
Ljung-Box Test R Q(10) 9.873331 0.45167587029
Ljung-Box Test R Q(15) 17.322531 0.29995190930
Ljung-Box Test R Q(20) 27.254982 0.12824147638
Ljung-Box Test R^2 Q(10) 18.319805 0.04980272061
Ljung-Box Test R^2 Q(15) 29.850582 0.01247183323
Ljung-Box Test R^2 Q(20) 56.402463 0.00002527778
LM Arch Test R TR^2 23.611966 0.02295765146
Information Criterion Statistics:
AIC BIC SIC HQIC
-5.385369 -5.305670 -5.386218 -5.353595
vconds_spot_tgarch = TGarch11_Spot@h.t# Gráfico da série temporal da variância condicional TGARCH(1,1) - Café Spotplot.ts(vconds_spot_tgarch, type ="l",main ="Variância Condicional TGARCH(1,1) - Café Spot",xlab ="",ylab ="Variância Condicional")
Código
# Cálculo do desvio-padrão condicional - Café SpotDP_spot_tgarch <-sqrt(vconds_spot_tgarch)# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano - Café Spotvol_spot_tgarch <- DP_spot_tgarch *sqrt(252)#vol_spot_tgarchplot.ts(vol_spot_tgarch)
Código
# Cálculo da média da volatilidade anualizada - Café Spotmean(vol_spot_tgarch)