MODELO GARCH - CAFÉ ARÁBICA

 UNIVERSIDADE FEDERAL DA PARAÍBA

Autores

Prof. Dr. Sinézio Fernandes Maia

Josué de Meneses Lopes

Data de Publicação

20 de agosto de 2024

Código
## 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 iniciais
remove(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)
}

Dados

Código
start_date <- as.Date("2023-04-30")
end_date <- as.Date("2024-08-30")

{
# CAFÉ SPOT - DIARIO
cafe_diario_spot <- read_excel("cafe_diario_spot.xlsx")
cafe_diario_spot_zoo <- zoo(cafe_diario_spot$spot, order.by = as.Date(cafe_diario_spot$data))
cafe_diario_spot_zoo <- window(cafe_diario_spot_zoo, start = start_date, end = end_date)

cafe_diario_spot_xts <- as.xts(cafe_diario_spot_zoo)
cafe_diario_spot_xts <- window(cafe_diario_spot_xts, start = start_date, end = end_date)

# CAFÉ FUTURO - DIARIO
cafe_diario_fut <- read_excel("cafe_diario_fut.xlsx")
cafe_diario_fut_zoo <- zoo(cafe_diario_fut$futuro, order.by = as.Date(cafe_diario_fut$data))
cafe_diario_fut_zoo <- window(cafe_diario_fut_zoo, start = start_date, end = end_date)

cafe_diario_fut_xts <- as.xts(cafe_diario_fut_zoo)
cafe_diario_fut_xts <- window(cafe_diario_fut_xts, start = start_date, end = end_date)
}

Gráfico de Preços Spot e Futuro do Café Arábica

Código
{
df_spot <- data.frame(Data = index(cafe_diario_spot_zoo), Preco = coredata(cafe_diario_spot_zoo), Tipo = "Preço Spot")
df_fut <- data.frame(Data = index(cafe_diario_fut_zoo), Preco = coredata(cafe_diario_fut_zoo), Tipo = "Preço Futuro")

# Combinando os dois data.frames
df <- bind_rows(df_spot, df_fut)
}

{
# Criando o gráfico com ggplot2
ggplot(df, aes(x = Data, y = Preco, color = Tipo)) +
  geom_line(size = 1.2) +
  scale_color_manual(values = c("blue", "red")) +
  labs(title = "Preço Spot e Futuro do Café Arábica - Nominal",
       x = " ", y = "Preço em Dólares") +
  theme_minimal() +
  theme(legend.title = element_blank(),
        panel.grid.major = element_line(color = "grey80"), # Grade maior
        panel.grid.minor = element_line(color = "grey90")) + # Grade menor
  scale_y_continuous(labels = scales::dollar) +
  scale_x_date(date_labels = "%m/%y", date_breaks = "1 month")
}

Análise dos Retornos do Preço Spot

Código
# Análise dos Retornos do Preço Spot - Nominal
par(mfrow=c(2,1))
chart.TimeSeries(cafe_diario_spot_zoo, main = "Preços Café Spot - Nominal")
chart.TimeSeries(diff(log(cafe_diario_spot_zoo)), main = "Retorno Café Spot - Nominal")

Análise dos Retornos do Preço Futuro

Código
# Análise dos Retornos do Preço Futuro - Nominal
par(mfrow=c(2,1))
chart.TimeSeries(cafe_diario_fut_zoo, main = "Preços Café Futuro - Nominal")
chart.TimeSeries(diff(log(cafe_diario_fut_zoo)), main = "Retorno Café Futuro - Nominal")

Café Futuro

Código
# CAFÉ FUTURO
# -----------------------------------------------------------------------------

# Média - Café Futuro
Media.cafe_fut=mean(diff(log(cafe_diario_fut_zoo)));Media.cafe_fut
[1] 0.0007850269
Código
# Desvio - Café Futuro
Desvio.cafe_fut=sd(diff(log(cafe_diario_fut_zoo)));Desvio.cafe_fut
[1] 0.02300897
Código
# Histograma - Café Futuro
par(mfrow=c(1,1))
chart.Histogram(diff(log(cafe_diario_fut_zoo)))

Código
summary(diff(log(cafe_diario_fut_zoo)))
     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             
Código
Statcafe_diario_fut_zoo<-basicStats(diff(log(cafe_diario_fut_zoo)));Statcafe_diario_fut_zoo
                     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
Código
# skewness - Café Futuro
skewness(data.frame(diff(log(cafe_diario_fut_zoo))))
diff.log.cafe_diario_fut_zoo.. 
                    -0.1869115 
Código
# Curtose - Café Futuro
kurtosis(data.frame(diff(log(cafe_diario_fut_zoo))))
diff.log.cafe_diario_fut_zoo.. 
                      5.674051 
Código
# Jarque Bera - Café Futuro
jarqueberaTest((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 logaritmo
log_diff_cafe_fut <- na.omit(log_diff_cafe_fut)
}

# ACF e PACF
acf(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.005
Box.test((diff(log(cafe_diario_fut_zoo))), lag=1)

    Box-Pierce test

data:  (diff(log(cafe_diario_fut_zoo)))
X-squared = 1.847, df = 1, p-value = 0.1741
Código
Box.test((diff(log(cafe_diario_fut_zoo))), lag=6)

    Box-Pierce test

data:  (diff(log(cafe_diario_fut_zoo)))
X-squared = 12.354, df = 6, p-value = 0.05452
Código
Box.test((diff(log(cafe_diario_fut_zoo))), lag=10)

    Box-Pierce test

data:  (diff(log(cafe_diario_fut_zoo)))
X-squared = 17.989, df = 10, p-value = 0.05516
Código
Box.test((diff(log(cafe_diario_fut_zoo))), lag=24)

    Box-Pierce test

data:  (diff(log(cafe_diario_fut_zoo)))
X-squared = 28.275, df = 24, p-value = 0.2486

Café Spot

Código
# CAFÉ SPOT
# -----------------------------------------------------------------------------

# Média - Café Spot

Media.cafe_spot=mean(diff(log(cafe_diario_spot_zoo)));Media.cafe_spot
[1] 0.0005524765
Código
# Desvio - Café Spot
Desvio.cafe_spot=sd(diff(log(cafe_diario_spot_zoo)));Desvio.cafe_spot
[1] 0.01650435
Código
# Histograma - Café Spot
par(mfrow=c(1,1))
chart.Histogram(diff(log(cafe_diario_spot_zoo)))

Código
summary(diff(log(cafe_diario_spot_zoo)))
     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             
Código
Statcafe_diario_spot_zoo<-basicStats(diff(log(cafe_diario_spot_zoo)));Statcafe_diario_spot_zoo
                     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
Código
# Skewness - Café Spot
skewness(data.frame(diff(log(cafe_diario_spot_zoo))))
diff.log.cafe_diario_spot_zoo.. 
                      0.1483366 
Código
# Curtose - Café Spot
kurtosis(data.frame(diff(log(cafe_diario_spot_zoo))))
diff.log.cafe_diario_spot_zoo.. 
                       3.792884 
Código
# Jarque Bera - Café Spot
jarqueberaTest((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 logaritmo
log_diff_cafe_spot <- na.omit(log_diff_cafe_spot)
}

# ACF e PACF
acf(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.005
Box.test((diff(log(cafe_diario_spot_zoo))), lag=1)

    Box-Pierce test

data:  (diff(log(cafe_diario_spot_zoo)))
X-squared = 0.811, df = 1, p-value = 0.3678
Código
Box.test((diff(log(cafe_diario_spot_zoo))), lag=6)

    Box-Pierce test

data:  (diff(log(cafe_diario_spot_zoo)))
X-squared = 13.863, df = 6, p-value = 0.03121
Código
Box.test((diff(log(cafe_diario_spot_zoo))), lag=10)

    Box-Pierce test

data:  (diff(log(cafe_diario_spot_zoo)))
X-squared = 18.333, df = 10, p-value = 0.0496
Código
Box.test((diff(log(cafe_diario_spot_zoo))), lag=24)

    Box-Pierce test

data:  (diff(log(cafe_diario_spot_zoo)))
X-squared = 42.727, df = 24, p-value = 0.01069

Arima

Código
# Estimação dos Retornos por ARIMA
# -----------------------------------------------------------------------------

# ARIMA para o Preço Futuro
ArimaFut111 <- 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 Spot
ArimaSpot111 <- 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)

Código
chart.ACF(ResiduosSPOT)

Código
tsdiag(ArimaSpot111)

Dickey-Fuller

Código
# Dickey-Fuller
# -----------------------------------------------------------------------------

#  Dickey-Fuller - Café Futuro
ddickyFUT <- ur.df(ResiduosFUT, lags = 0, type="trend")
summary(ddickyFUT)

############################################### 
# 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 
-26.4591  -2.5403   0.0103   2.7922  20.8880 

Coefficients:
             Estimate Std. Error t value            Pr(>|t|)    
(Intercept) -0.370936   0.608650  -0.609               0.543    
z.lag.1     -1.004255   0.054995 -18.261 <0.0000000000000002 ***
tt           0.003548   0.003145   1.128               0.260    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5.554 on 332 degrees of freedom
Multiple R-squared:  0.5011,    Adjusted R-squared:  0.4981 
F-statistic: 166.7 on 2 and 332 DF,  p-value: < 0.00000000000000022


Value of test-statistic is: -18.2607 111.1557 166.7319 

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
Código
# Dickey-Fuller - Café Spot
ddickySPOT <- ur.df(ResiduosSPOT, lags = 0, type="trend")
summary(ddickySPOT)

############################################### 
# 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 logaritmo
log_diff_cafe_fut <- na.omit(log_diff_cafe_fut)


dcafe_diario_fut_zoo <- log_diff_cafe_fut
dcafe_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::lag
MQODin <- dynlm(dcafe_diario_fut_zoo ~ lag(dcafe_diario_fut_zoo, -1))
coef(MQODin)
                  (Intercept) lag(dcafe_diario_fut_zoo, -1) 
                 0.0009216968                 -0.0771375666 
Código
summary(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_FUT
chart.TimeSeries(residuosMQO_FUT)

# Histograma
chart.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-Bera
jarqueberaTest(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-Quandt
gqtest(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-Pagan
bptest(MQODin)

    studentized Breusch-Pagan test

data:  MQODin
BP = 0.70692, df = 1, p-value = 0.4005
Código
# Teste White
white_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
Código
# Teste ARCH
ArchTest(residuosMQO_FUT, lags = 4)

    ARCH LM-test; Null hypothesis: no ARCH effects

data:  residuosMQO_FUT
Chi-squared = 0.78431, df = 4, p-value = 0.9405
Código
# Testes de autocorrelação dos resíduos
# -----------------------------------------------------------------------------

# Teste de Durbin-Watson
dwtest(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-Godfrey
bgtest(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-Pierce
Box.test(residuosMQO_FUT, lag = 12, type = "Box-Pierce")

    Box-Pierce test

data:  residuosMQO_FUT
X-squared = 15.311, df = 12, p-value = 0.2249
Código
# 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édia
Garch11 <- 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 
Código
round(Garch11@fit$matcoef, 6)
        Estimate  Std. Error   t value Pr(>|t|)
ar1    -0.948383    0.100200 -9.464871 0.000000
ar2    -0.067652    0.059849 -1.130378 0.258317
ma1     0.849844    0.088457  9.607431 0.000000
omega   0.000144    0.000097  1.488026 0.136744
alpha1  0.113728    0.068842  1.652008 0.098533
beta1   0.618483    0.210995  2.931264 0.003376
Código
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
#vconds1
plot.ts(vconds1)

Código
# Cálculo do desvio-padrão condicional
DP <- sqrt(vconds1)

# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano
vol <- DP * sqrt(252)

#vol
plot.ts(vol)

Código
# Cálculo da média da volatilidade anualizada
mean(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é Futuro
EGarch11_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 
Código
round(EGarch11_Spot@fit$matcoef, 6)
        Estimate  Std. Error   t value Pr(>|t|)
ar1    -0.824140    0.164954 -4.996190 0.000001
ar2    -0.116619    0.049158 -2.372311 0.017677
ma1     0.714991    0.168035  4.255021 0.000021
omega   0.000067    0.000143  0.467231 0.640335
alpha1  0.009501    0.073656  0.128995 0.897362
beta1   0.888951    0.281078  3.162648 0.001563
shape   3.262481    0.802134  4.067253 0.000048
Código
vconds_spot_egarch = EGarch11_Spot@h.t

# Gráfico da série temporal da variância condicional EGARCH(1,1) - Café Futuro
plot.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é Futuro
DP_spot_egarch <- sqrt(vconds_spot_egarch)

# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano - Café Futuro
vol_spot_egarch <- DP_spot_egarch * sqrt(252)

#vol_spot_egarch
plot.ts(vol_spot_egarch)

Código
# Cálculo da média da volatilidade anualizada - Café Futuro
mean(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é Futuro
TGarch11_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 
Código
round(TGarch11_Spot@fit$matcoef, 6)
        Estimate  Std. Error   t value Pr(>|t|)
ar1    -0.824140    0.164954 -4.996190 0.000001
ar2    -0.116619    0.049158 -2.372311 0.017677
ma1     0.714991    0.168035  4.255021 0.000021
omega   0.000067    0.000143  0.467231 0.640335
alpha1  0.009501    0.073656  0.128995 0.897362
beta1   0.888951    0.281078  3.162648 0.001563
shape   3.262481    0.802134  4.067253 0.000048
Código
vconds_spot_tgarch = TGarch11_Spot@h.t

# Gráfico da série temporal da variância condicional TGARCH(1,1) - Café Futuro
plot.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é Futuro
DP_spot_tgarch <- sqrt(vconds_spot_tgarch)

# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano - Café Futuro
vol_spot_tgarch <- DP_spot_tgarch * sqrt(252)

#vol_spot_tgarch
plot.ts(vol_spot_tgarch)

Código
# Cálculo da média da volatilidade anualizada - Café Futuro
mean(vol_spot_tgarch)
[1] 0.4025182

MQO - Café SPOT

Código
# Estimação do modelo MQO Dinâmico - CAFÉ SPOT
# -----------------------------------------------------------------------------
{
dcafe_diario_spot_zoo <- diff(log(cafe_diario_spot_zoo))
cbind(cafe_diario_spot_zoo, dcafe_diario_spot_zoo)
}
Código
# Regressão Dinâmica usando a série diferenciada (MQO Dinâmico)
lag <- stats::lag
MQODin <- dynlm(dcafe_diario_spot_zoo ~ lag(dcafe_diario_spot_zoo, -1))
coef(MQODin)
                   (Intercept) lag(dcafe_diario_spot_zoo, -1) 
                  0.0005875175                  -0.0642328462 
Código
summary(MQODin)

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_SPOT
chart.TimeSeries(residuosMQO_SPOT)
}

Código
# Histograma
chart.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-Bera
jarqueberaTest(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-Quandt
gqtest(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-Pagan
bptest(MQODin)

    studentized Breusch-Pagan test

data:  MQODin
BP = 0.38734, df = 1, p-value = 0.5337
Código
# Teste White
white_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
Código
# Teste ARCH
ArchTest(residuosMQO_SPOT, lags = 4)

    ARCH LM-test; Null hypothesis: no ARCH effects

data:  residuosMQO_SPOT
Chi-squared = 4.9632, df = 4, p-value = 0.2911
Código
# Testes de autocorrelação dos resíduos
# -----------------------------------------------------------------------------

# Teste de Durbin-Watson
dwtest(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-Godfrey
bgtest(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-Pierce
Box.test(residuosMQO_SPOT, lag = 12, type = "Box-Pierce")

    Box-Pierce test

data:  residuosMQO_SPOT
X-squared = 22.17, df = 12, p-value = 0.03566
Código
# 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édia
Garch11 <- 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 
Código
round(Garch11@fit$matcoef, 6)
        Estimate  Std. Error   t value Pr(>|t|)
ar1    -0.411125    0.293417 -1.401163 0.161165
ma1     0.330297    0.301924  1.093973 0.273967
omega   0.000011    0.000008  1.277765 0.201332
alpha1  0.037264    0.021785  1.710551 0.087164
beta1   0.924742    0.041014 22.547142 0.000000
Código
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
#vconds1
plot.ts(vconds1)

Código
# Cálculo do desvio-padrão condicional
DP <- sqrt(vconds1)

# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano
vol <- DP * sqrt(252)

#vol
plot.ts(vol)

Código
# Cálculo da média da volatilidade anualizada
mean(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é Spot
EGarch11_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 
Código
round(EGarch11_Spot@fit$matcoef, 6)
        Estimate  Std. Error    t value Pr(>|t|)
ar1     0.390400    0.231659   1.685234 0.091943
ar2     0.153858    0.053417   2.880338 0.003972
ma1    -0.448832    0.229940  -1.951948 0.050944
omega   0.000000    0.000001   0.000196 0.999844
alpha1  0.003948    0.006176   0.639265 0.522650
beta1   0.997337    0.003688 270.433010 0.000000
shape   6.628298    3.114390   2.128281 0.033314
Código
vconds_spot_egarch = EGarch11_Spot@h.t

# Gráfico da série temporal da variância condicional EGARCH(1,1) - Café Spot
plot.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é Spot
DP_spot_egarch <- sqrt(vconds_spot_egarch)

# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano - Café Spot
vol_spot_egarch <- DP_spot_egarch * sqrt(252)

#vol_spot_egarch
plot.ts(vol_spot_egarch)

Código
# Cálculo da média da volatilidade anualizada - Café Spot
mean(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é Spot
TGarch11_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 
Código
round(TGarch11_Spot@fit$matcoef, 6)
        Estimate  Std. Error    t value Pr(>|t|)
ar1     0.390400    0.231659   1.685234 0.091943
ar2     0.153858    0.053417   2.880338 0.003972
ma1    -0.448832    0.229940  -1.951948 0.050944
omega   0.000000    0.000001   0.000196 0.999844
alpha1  0.003948    0.006176   0.639265 0.522650
beta1   0.997337    0.003688 270.433010 0.000000
shape   6.628298    3.114390   2.128281 0.033314
Código
vconds_spot_tgarch = TGarch11_Spot@h.t

# Gráfico da série temporal da variância condicional TGARCH(1,1) - Café Spot
plot.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é Spot
DP_spot_tgarch <- sqrt(vconds_spot_tgarch)

# Cálculo da volatilidade anualizada assumindo 252 dias úteis no ano - Café Spot
vol_spot_tgarch <- DP_spot_tgarch * sqrt(252)

#vol_spot_tgarch
plot.ts(vol_spot_tgarch)

Código
# Cálculo da média da volatilidade anualizada - Café Spot
mean(vol_spot_tgarch)
[1] 0.2712917