## 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áriaslibrary(tidyverse)library(BatchGetSymbols)library(rbcb)library(readxl)library(tseries)library(PerformanceAnalytics)library(deflateBR)library(stats)library(fBasics)library(moments)library(dynlm)library(lmtest)library(whitestrap)library(FinTS)library(fGarch)library(rugarch)library(urca)
Dados
Código
## CAFÉ SPOT - MENSALcafe_mensal_spot <-read_excel("cafe_mensal_spot.xlsx");nrow(cafe_mensal_spot)cafe_mensal_spot_ts <-ts(cafe_mensal_spot$fechamento_mensal_spot, frequency =12, start =c(2014,01), end =c(2024,07))## CAFÉ FUTURO - MENSALcafe_mensal_fut <-read_excel("cafe_mensal_fut.xlsx");nrow(cafe_mensal_fut)cafe_mensal_fut_ts <-ts(cafe_mensal_fut$fechamento_mensal_fut, frequency =12, start =c(2014,01), end =c(2024,07))## ÍNDICE CAFÉ - MENSALindice_cafe_mensal <-get_series(29041, start_date ="2014-01-01", end_date ="2024-08-01");nrow(indice_cafe_mensal)indice_cafe_mensal_ts <-ts(indice_cafe_mensal$"29041", frequency =12, start =c(2014,01), end =c(2024,07))
Gráfico de Preços Spot e Futuro do Café Arábica
Código
plot(cafe_mensal_spot_ts, col ="blue", lwd =2, ylim =range(c(cafe_mensal_spot_ts, cafe_mensal_fut_ts)), xlab ="Ano", ylab ="Preço em Dólares", main ="Preço Spot e Futuro do Café Arábica - Nominal")lines(cafe_mensal_fut_ts, col ="red", lwd =2)legend("topleft", legend =c("Preço Spot", "Preço Futuro"), col =c("blue", "red"), lwd =2)grid()
Gráfico de Preços Futuro e Índice de Commodities do Café Arábica
Código
plot(cafe_mensal_fut_ts, col ="red", lwd =2, ylim =range(c(cafe_mensal_fut_ts, indice_cafe_mensal_ts)), xlab ="Ano", ylab ="Preço em Dólares", main ="Preço Futuro do Café Arábica e Índice de Commodities - Nominal")lines(indice_cafe_mensal_ts, col ="darkgreen", lwd =2)legend("topleft", legend =c("Preço Futuro", "Índice de Commodities"), col =c("red", "darkgreen"), lwd =2)grid()
Deflacionamento dos Preços
Código
times <-seq(as.Date("2014/1/1"), by ="month", length.out =127)cafe_spot_R <-deflate(cafe_mensal_spot_ts, nominal_dates = times, real_date ="07/2024", index ="igpdi")cafe_fut_R <-deflate(cafe_mensal_fut_ts, nominal_dates = times, real_date ="07/2024", index ="igpdi")cafe_indice_R <-deflate(indice_cafe_mensal_ts, nominal_dates = times, real_date ="07/2024", index ="igpdi")
Gráfico de Preços Deflacionados
Código
plot(cafe_spot_R, col ="blue", lwd =2, ylim =range(c(cafe_spot_R, cafe_fut_R)), xlab ="Ano", ylab ="Preço em Dólares", main ="Preço Spot e Futuro do Café Arábica - Deflacionado")lines(cafe_fut_R, col ="red", lwd =2)legend("topleft", legend =c("Preço Spot", "Preço Futuro"), col =c("blue", "red"), lwd =2)grid()
Análise dos Retornos do Preço Futuro - Nominal
Código
par(mfrow=c(2,1))chart.TimeSeries(cafe_mensal_fut_ts, main ="Preços Café Futuro - Nominal")chart.TimeSeries(diff(log(cafe_mensal_fut_ts)), main ="Retorno Café Futuro - Nominal")
Análise dos Retornos do Preço Futuro - Deflacionado
Código
par(mfrow=c(2,1))chart.TimeSeries(cafe_fut_R, main ="Preços Café Futuro - Deflacionado")chart.TimeSeries(diff(log(cafe_fut_R)), main ="Retorno Café Futuro - Deflacionado")
Análise dos Retornos do Preço Spot - Nominal
Código
par(mfrow=c(2,1))chart.TimeSeries(cafe_mensal_spot_ts, main ="Preços Café Spot - Nominal")chart.TimeSeries(diff(log(cafe_mensal_spot_ts)), main ="Retorno Café Spot - Nominal")
Análise dos Retornos do Preço Spot - Deflacionado
Código
par(mfrow=c(2,1))chart.TimeSeries(cafe_spot_R, main ="Preços Café Spot - Deflacionado")chart.TimeSeries(diff(log(cafe_spot_R)), main ="Retorno Café Spot - Deflacionado")
Análise dos Retornos do Índice de Commodities - Nominal
Código
par(mfrow=c(2,1))chart.TimeSeries(indice_cafe_mensal_ts, main ="Preços Índice de Commodities - Nominal")chart.TimeSeries(diff(log(indice_cafe_mensal_ts)), main ="Retorno Índice de Commodities - Nominal")
Análise dos Retornos do Índice de Commodities - Deflacionado
Código
par(mfrow=c(2,1))chart.TimeSeries(cafe_indice_R, main ="Preços Índice de Commodities - Deflacionado")chart.TimeSeries(diff(log(cafe_indice_R)), main ="Retorno Índice de Commodities - Deflacionado")
diff.log.cafe_fut_R.
nobs 126.000000
NAs 0.000000
Minimum -0.265625
Maximum 0.343082
1. Quartile -0.058603
3. Quartile 0.047985
Mean -0.000600
Median -0.006079
Sum -0.075538
SE Mean 0.007780
LCL Mean -0.015998
UCL Mean 0.014799
Variance 0.007627
Stdev 0.087335
Skewness 0.323954
Kurtosis 1.362544
Skewness - Café Futuro
Código
skewness(data.frame(diff(log(cafe_fut_R))))
diff.log.cafe_fut_R..
0.3278489
Curtose - Café Futuro
Código
kurtosis(data.frame(diff(log(cafe_fut_R))))
diff.log.cafe_fut_R..
4.432624
Jarque Bera - Café Futuro
Código
jarqueberaTest((diff(log(cafe_fut_R))))
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 13.0323
P VALUE:
Asymptotic p Value: 0.001479
diff.log.cafe_spot_R.
nobs 126.000000
NAs 0.000000
Minimum -0.165973
Maximum 0.233167
1. Quartile -0.045847
3. Quartile 0.043537
Mean 0.000013
Median -0.005527
Sum 0.001670
SE Mean 0.006204
LCL Mean -0.012266
UCL Mean 0.012292
Variance 0.004850
Stdev 0.069643
Skewness 0.344783
Kurtosis 0.368316
Skewness - Café Spot
Código
skewness(data.frame(diff(log(cafe_spot_R))))
diff.log.cafe_spot_R..
0.3489284
Curtose - Café Spot
Código
kurtosis(data.frame(diff(log(cafe_spot_R))))
diff.log.cafe_spot_R..
3.422424
Jarque Bera - Café Spot
Código
jarqueberaTest((diff(log(cafe_spot_R))))
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 3.4936
P VALUE:
Asymptotic p Value: 0.1743
diff.log.cafe_indice_R.
nobs 126.000000
NAs 0.000000
Minimum -0.132814
Maximum 0.061403
1. Quartile -0.020378
3. Quartile 0.013966
Mean -0.003659
Median -0.001337
Sum -0.461024
SE Mean 0.002666
LCL Mean -0.008935
UCL Mean 0.001617
Variance 0.000895
Stdev 0.029923
Skewness -0.825526
Kurtosis 2.385806
Skewness - Café Índice
Código
skewness(data.frame(diff(log(cafe_indice_R))))
diff.log.cafe_indice_R..
-0.8354525
Curtose - Café Índice
Código
kurtosis(data.frame(diff(log(cafe_indice_R))))
diff.log.cafe_indice_R..
5.472324
Jarque Bera - Café Índice
Código
jarqueberaTest((diff(log(cafe_indice_R))))
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 46.7476
P VALUE:
Asymptotic p Value: 0.00000000007061
## Gráfico de histograma com curva de distribuição normal sobrepostapar(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)
Gráfico QQ-Norm (Normal Quantile-Quantile Plot) para verificar a normalidade dos resíduos
Código
qqnorm(residuosMQO_FUT, col ="blue")qqline(residuosMQO_FUT, col ="red")
Testes de Normalidade
Teste de Jarque-Bera
Código
jarqueberaTest(residuosMQO_FUT)
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 0.1218
P VALUE:
Asymptotic p Value: 0.9409
Teste de Shapiro-Wilk
Código
shapiro.test(residuosMQO_FUT)
Shapiro-Wilk normality test
data: residuosMQO_FUT
W = 0.99104, p-value = 0.6008
Testes de Heterocedasticidade
Código
length(residuosMQO_FUT)
[1] 125
Código
length(residuosMQO_FUT) *0.15
[1] 18.75
Teste de Goldfeld-Quandt
Código
gqtest(MQODin, fraction =18.75, alternative ="greater")
Goldfeld-Quandt test
data: MQODin
GQ = 1.1831, df1 = 52, df2 = 51, p-value = 0.2746
alternative hypothesis: variance increases from segment 1 to 2
Teste de Breusch-Pagan
Código
bptest(MQODin)
studentized Breusch-Pagan test
data: MQODin
BP = 0.68827, df = 1, p-value = 0.4068
Teste White
Código
white_test(MQODin)
White's test results
Null hypothesis: Homoskedasticity of the residuals
Alternative hypothesis: Heteroskedasticity of the residuals
Test Statistic: 0.89
P-value: 0.639392
Gráfico de histograma com curva de distribuição normal sobreposta
Código
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)
Gráfico QQ-Norm (Normal Quantile-Quantile Plot) para verificar a normalidade dos resíduos
Código
qqnorm(residuosMQO_SPOT, col ="blue")qqline(residuosMQO_SPOT, col ="red")
Testes de Normalidade
Código
## Teste de Jarque-BerajarqueberaTest(residuosMQO_SPOT)
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 0.8121
P VALUE:
Asymptotic p Value: 0.6663
Teste de Shapiro-Wilk
Código
shapiro.test(residuosMQO_SPOT)
Shapiro-Wilk normality test
data: residuosMQO_SPOT
W = 0.99413, p-value = 0.8862
Testes de Heterocedasticidade
Código
length(residuosMQO_SPOT)
[1] 125
Código
length(residuosMQO_SPOT) *0.15
[1] 18.75
Teste de Goldfeld-Quandt
Código
gqtest(MQODin, fraction =18.75, alternative ="greater")
Goldfeld-Quandt test
data: MQODin
GQ = 1.4353, df1 = 52, df2 = 51, p-value = 0.09935
alternative hypothesis: variance increases from segment 1 to 2
Teste de Breusch-Pagan
Código
bptest(MQODin)
studentized Breusch-Pagan test
data: MQODin
BP = 0.40405, df = 1, p-value = 0.525
Teste White
Código
white_test(MQODin)
White's test results
Null hypothesis: Homoskedasticity of the residuals
Alternative hypothesis: Heteroskedasticity of the residuals
Test Statistic: 6.21
P-value: 0.044873
Gráfico de histograma com curva de distribuição normal sobreposta
Código
par(mfrow =c(1, 1))hist(residuosMQO_IND, main ="", col ="cadetblue", prob =TRUE, xlab =names(residuosMQO_IND)[1], breaks =30)curve(expr =dnorm(x, mean =mean(residuosMQO_IND), sd =sd(residuosMQO_IND)), col ="red", add =TRUE, lwd =2)
Gráfico QQ-Norm (Normal Quantile-Quantile Plot) para verificar a normalidade dos resíduos
Código
qqnorm(residuosMQO_IND, col ="blue")qqline(residuosMQO_IND, col ="red")
Testes de Normalidade
Teste de Jarque-Bera
Código
jarqueberaTest(residuosMQO_IND)
Title:
Jarque - Bera Normalality Test
Test Results:
STATISTIC:
X-squared: 28.2717
P VALUE:
Asymptotic p Value: 0.0000007259
Teste de Shapiro-Wilk
Código
shapiro.test(residuosMQO_IND)
Shapiro-Wilk normality test
data: residuosMQO_IND
W = 0.97111, p-value = 0.008818
Testes de Heterocedasticidade
Código
length(residuosMQO_IND)
[1] 125
Código
length(residuosMQO_IND) *0.15
[1] 18.75
Teste de Goldfeld-Quandt
Código
gqtest(MQODin, fraction =18.75, alternative ="greater")
Goldfeld-Quandt test
data: MQODin
GQ = 3.2616, df1 = 52, df2 = 51, p-value = 0.0000207
alternative hypothesis: variance increases from segment 1 to 2
Teste de Breusch-Pagan
Código
bptest(MQODin)
studentized Breusch-Pagan test
data: MQODin
BP = 12.089, df = 1, p-value = 0.0005073
Teste White
Código
white_test(MQODin)
White's test results
Null hypothesis: Homoskedasticity of the residuals
Alternative hypothesis: Heteroskedasticity of the residuals
Test Statistic: 15.72
P-value: 0.000386