Modelo de Hedge para o Café Arábica

 UNIVERSIDADE FEDERAL DA PARAÍBA

Autores

Prof. Dr. Sinézio Fernandes Maia

Josué de Meneses Lopes

Data de Publicação

24 de setembro de 2024

Relatório

Os preços do café arábica estão atrativos para o produtor devido às adversidades climáticas ocorridas no Brasil entre 2021 e 2022, que levaram a uma produção limitada. Além disso, os estoques asiáticos estão reduzidos, causados pelo El Niño, que provocou altas temperaturas e poucas chuvas em países como Vietnã e Indonésia (CONAB, 2024). A demanda forte e a oferta limitada favorecem o contínuo aumento de preços. Entretanto, é necessário ficar atento às possíveis mudanças climáticas que poderão ser causadas pela La Niña ainda este ano, fenômeno que historicamente eleva as precipitações nas regiões Nordeste e Norte, e reduz a quantidade de chuvas na região Sul do Brasil. Segundo o INMET (Instituto Nacional de Meteorologia), há \(58\%\) de chance do fenômeno La Niña iniciar ainda neste mês de setembro e \(60\%\) de chance de ocorrer no mês de outubro, com previsão de duração de até três meses.

As estatísticas para os retornos do café futuro apresentaram uma assimetria de \(0.0268\) e curtose de \(4.7774\), o que indica uma distribuição simétrica das variações dos preços futuros de café, porém com uma leve tendência para retornos positivos e com uma propensão a ter eventos extremos mais frequentes do que o esperado em uma distribuição normal. Para o café spot, os resultados não foram muito diferentes, com uma assimetria de \(0.0610\) e curtose de \(3.1811\), apresentando uma tendência levemente mais forte e um pouco mais estável.

Nas estimações do café futuro, o modelo GARCH(1,1) apresentou um \(\alpha=0,04\) e o \(\beta=0,79\), cuja soma resultou em \(0,83\), o que indica que não há grandes choques na volatilidade, mas que eles demoram para se estabilizar no mercado futuro. No mercado spot, os valores foram ainda maiores, com \(\alpha=0,02\) e o \(\beta=0,94\), resultando em uma soma de \(\alpha+\beta=0,97\) superior à do mercado futuro. O modelo EGARCH(1,1) seguiu a mesma lógica: no café futuro, resultou em um \(\alpha=0,04\) e \(\beta=0,80\), enquanto, no café spot, os resultados foram \(\alpha=0,03\) e o \(\beta=0,93\), A diferença está no parâmetro \(\gamma\), onde, para o preço futuro, o valor foi negativo \(\gamma=-0,35\) e para o preço spot, o valor foi positivo \(\gamma=0,11\), indicando que choques positivos afetam mais o preço spot, enquanto choques negativos afetam mais o preço futuro. Os modelos TGARCH obtiveram o mesmo resultado que os modelos EGARCH.

Nas estimações de hedge do café arábica, foram utilizados os valores do retorno, que são valores logaritmizados e feitos em diferença, pois era necessário corrigir os problemas de heterocedasticidade e autocorrelação. A quantidade ótima de contratos para o processador, que está buscando se proteger da alta dos preços, é de \(1,2531\) contratos, ele deve comprometer \(5,63\%\) da sua produção para para proteger \(13,36\%\) de sua produção. A efetividade do \((R^2)\) foi de \(13,49\%\). Nesse estudo foram utilizados 707 observações para as duas variáveis.

Dados iniciais

Código
remove(list=ls())
options(scipen=999)
options(max.print = 1000000)
par(mfrow=c(1,1))

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)

start_date <- as.Date("2021-10-01")
end_date <- as.Date("2024-08-01")

cafe <- read_excel("cafe_precos.xlsx")
cafe_diario_spot_zoo <- zoo(cafe$Spot_dolar, order.by = as.Date(cafe$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_zoo <- zoo(cafe$Futuro_dolar, order.by = as.Date(cafe$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)

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")
df <- bind_rows(df_spot, df_fut)
Código
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")

Retornos

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")

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")

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

# Média - Café Futuro
Media.cafe_fut=mean(diff(log(cafe_diario_fut_zoo)));Media.cafe_fut
[1] 0.0002293938
Código
# Desvio - Café Futuro
Desvio.cafe_fut=sd(diff(log(cafe_diario_fut_zoo)));Desvio.cafe_fut
[1] 0.02282953
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.   :2021-10-04   Min.   :-0.1105269            
 1st Qu.:2022-06-21   1st Qu.:-0.0126444            
 Median :2023-03-04   Median : 0.0000000            
 Mean   :2023-03-04   Mean   : 0.0002294            
 3rd Qu.:2023-11-16   3rd Qu.: 0.0142220            
 Max.   :2024-08-01   Max.   : 0.0864736            
Código
Statcafe_diario_fut_zoo<-basicStats(diff(log(cafe_diario_fut_zoo)));Statcafe_diario_fut_zoo
                     x
nobs        706.000000
NAs           0.000000
Minimum      -0.110527
Maximum       0.086474
1. Quartile  -0.012644
3. Quartile   0.014222
Mean          0.000229
Median        0.000000
Sum           0.161952
SE Mean       0.000859
LCL Mean     -0.001458
UCL Mean      0.001916
Variance      0.000521
Stdev         0.022830
Skewness      0.026760
Kurtosis      1.763909
Código
# skewness - Café Futuro
skewness(data.frame(diff(log(cafe_diario_fut_zoo))))
diff.log.cafe_diario_fut_zoo.. 
                    0.02681736 
Código
# Curtose - Café Futuro
kurtosis(data.frame(diff(log(cafe_diario_fut_zoo))))
diff.log.cafe_diario_fut_zoo.. 
                      4.777433 
Código
# Jarque Bera - Café Futuro
jarqueberaTest((diff(log(cafe_diario_fut_zoo))))

Title:
 Jarque - Bera Normalality Test

Test Results:
  STATISTIC:
    X-squared: 93.0198
  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.4028, df = 1, p-value = 0.2363
Código
Box.test((diff(log(cafe_diario_fut_zoo))), lag=6)

    Box-Pierce test

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

    Box-Pierce test

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

    Box-Pierce test

data:  (diff(log(cafe_diario_fut_zoo)))
X-squared = 40.217, df = 24, p-value = 0.02027
Código
# CAFÉ SPOT
# -----------------------------------------------------------------------------

# Média - Café Spot

Media.cafe_spot=mean(diff(log(cafe_diario_spot_zoo)));Media.cafe_spot
[1] 0.0001507311
Código
# Desvio - Café Spot
Desvio.cafe_spot=sd(diff(log(cafe_diario_spot_zoo)));Desvio.cafe_spot
[1] 0.01758965
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.   :2021-10-04   Min.   :-0.0563782             
 1st Qu.:2022-06-21   1st Qu.:-0.0109249             
 Median :2023-03-04   Median : 0.0002526             
 Mean   :2023-03-04   Mean   : 0.0001507             
 3rd Qu.:2023-11-16   3rd Qu.: 0.0115855             
 Max.   :2024-08-01   Max.   : 0.0570347             
Código
Statcafe_diario_spot_zoo<-basicStats(diff(log(cafe_diario_spot_zoo)));Statcafe_diario_spot_zoo
                     x
nobs        706.000000
NAs           0.000000
Minimum      -0.056378
Maximum       0.057035
1. Quartile  -0.010925
3. Quartile   0.011586
Mean          0.000151
Median        0.000253
Sum           0.106416
SE Mean       0.000662
LCL Mean     -0.001149
UCL Mean      0.001450
Variance      0.000309
Stdev         0.017590
Skewness      0.060886
Kurtosis      0.172119
Código
# Skewness - Café Spot
skewness(data.frame(diff(log(cafe_diario_spot_zoo))))
diff.log.cafe_diario_spot_zoo.. 
                      0.0610151 
Código
# Curtose - Café Spot
kurtosis(data.frame(diff(log(cafe_diario_spot_zoo))))
diff.log.cafe_diario_spot_zoo.. 
                       3.181124 
Código
# Jarque Bera - Café Spot
jarqueberaTest((diff(log(cafe_diario_spot_zoo))))

Title:
 Jarque - Bera Normalality Test

Test Results:
  STATISTIC:
    X-squared: 1.4031
  P VALUE:
    Asymptotic p Value: 0.4958 
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.00052608, df = 1, p-value = 0.9817
Código
Box.test((diff(log(cafe_diario_spot_zoo))), lag=6)

    Box-Pierce test

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

    Box-Pierce test

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

    Box-Pierce test

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

Resultados Arima

Código
# ARIMA para o Preço Futuro
ArimaFut111 <- arima(cafe_diario_fut_xts, order = c(2,1,1), method = c("CSS-ML"))
ResiduosFUT <- residuals(ArimaFut111)
par(mfrow=c(1,1))
tsdiag(ArimaFut111)

Código
# ARIMA para o Preço Spot
ArimaSpot111 <- arima(cafe_diario_spot_xts, order = c(1,1,0), method = c("CSS-ML"))
ResiduosSPOT <- residuals(ArimaSpot111)
par(mfrow=c(1,1))
tsdiag(ArimaSpot111)

Dickey-Fuller

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

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression trend 


Call:
lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)

Residuals:
     Min       1Q   Median       3Q      Max 
-23.4854  -3.1175  -0.2724   2.9677  22.3883 

Coefficients:
               Estimate Std. Error t value          Pr(>|t|)    
(Intercept)  -0.1684365  0.4457627  -0.378           0.70565    
z.lag.1      -1.2830309  0.1759539  -7.292 0.000000000000869 ***
tt            0.0007611  0.0010844   0.702           0.48300    
z.diff.lag1   0.2776438  0.1697118   1.636           0.10232    
z.diff.lag2   0.2976555  0.1629901   1.826           0.06826 .  
z.diff.lag3   0.3027475  0.1562018   1.938           0.05302 .  
z.diff.lag4   0.2218167  0.1497780   1.481           0.13909    
z.diff.lag5   0.1908547  0.1431681   1.333           0.18296    
z.diff.lag6   0.2933792  0.1373037   2.137           0.03298 *  
z.diff.lag7   0.2916213  0.1315641   2.217           0.02699 *  
z.diff.lag8   0.3471679  0.1260843   2.753           0.00606 ** 
z.diff.lag9   0.3336567  0.1212114   2.753           0.00607 ** 
z.diff.lag10  0.3479999  0.1159968   3.000           0.00280 ** 
z.diff.lag11  0.2760562  0.1109480   2.488           0.01308 *  
z.diff.lag12  0.2313373  0.1042984   2.218           0.02689 *  
z.diff.lag13  0.2243742  0.0970582   2.312           0.02110 *  
z.diff.lag14  0.1352894  0.0876764   1.543           0.12329    
z.diff.lag15  0.1036851  0.0773099   1.341           0.18032    
z.diff.lag16  0.0467083  0.0669893   0.697           0.48589    
z.diff.lag17  0.0320094  0.0553024   0.579           0.56291    
z.diff.lag18  0.0510680  0.0391408   1.305           0.19244    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 5.6 on 667 degrees of freedom
Multiple R-squared:  0.5213,    Adjusted R-squared:  0.5069 
F-statistic: 36.32 on 20 and 667 DF,  p-value: < 0.00000000000000022


Value of test-statistic is: -7.2919 17.7443 26.6154 

Critical values for test statistics: 
      1pct  5pct 10pct
tau3 -3.96 -3.41 -3.12
phi2  6.09  4.68  4.03
phi3  8.27  6.25  5.34
Código
# Dickey-Fuller - Café Spot
ddickySPOT <- ur.df(ResiduosSPOT, lags = 18, type="trend")
summary(ddickySPOT)

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression trend 


Call:
lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)

Residuals:
     Min       1Q   Median       3Q      Max 
-12.8604  -2.4047   0.0052   2.2254  13.3623 

Coefficients:
               Estimate Std. Error t value       Pr(>|t|)    
(Intercept)  -0.0707645  0.3189278  -0.222         0.8245    
z.lag.1      -1.0226529  0.1586897  -6.444 0.000000000223 ***
tt            0.0003111  0.0007739   0.402         0.6879    
z.diff.lag1   0.0233290  0.1541296   0.151         0.8797    
z.diff.lag2   0.0009255  0.1492386   0.006         0.9951    
z.diff.lag3   0.0325996  0.1443337   0.226         0.8214    
z.diff.lag4  -0.0032027  0.1394049  -0.023         0.9817    
z.diff.lag5   0.0544067  0.1343892   0.405         0.6857    
z.diff.lag6   0.1098758  0.1299133   0.846         0.3980    
z.diff.lag7   0.1119689  0.1254298   0.893         0.3723    
z.diff.lag8   0.1863244  0.1206998   1.544         0.1231    
z.diff.lag9   0.1813772  0.1165954   1.556         0.1203    
z.diff.lag10  0.2149990  0.1120245   1.919         0.0554 .  
z.diff.lag11  0.1417541  0.1075491   1.318         0.1879    
z.diff.lag12  0.1512920  0.1015038   1.491         0.1366    
z.diff.lag13  0.1425760  0.0950547   1.500         0.1341    
z.diff.lag14  0.0786747  0.0874520   0.900         0.3686    
z.diff.lag15  0.0680499  0.0778552   0.874         0.3824    
z.diff.lag16  0.0541690  0.0674688   0.803         0.4223    
z.diff.lag17  0.0340272  0.0548352   0.621         0.5351    
z.diff.lag18  0.0506174  0.0389647   1.299         0.1944    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 4.013 on 667 degrees of freedom
Multiple R-squared:  0.5171,    Adjusted R-squared:  0.5026 
F-statistic: 35.71 on 20 and 667 DF,  p-value: < 0.00000000000000022


Value of test-statistic is: -6.4444 13.8624 20.7891 

Critical values for test statistics: 
      1pct  5pct 10pct
tau3 -3.96 -3.41 -3.12
phi2  6.09  4.68  4.03
phi3  8.27  6.25  5.34

GARCH

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_fut <- garchFit(~ arma(1,2) + garch(1,1),
                    data = diff(log(cafe_diario_fut_zoo)), 
                    include.mean = FALSE, 
                    trace = FALSE)


summary(Garch11_fut)

Title:
 GARCH Modelling 

Call:
 garchFit(formula = ~arma(1, 2) + garch(1, 1), data = diff(log(cafe_diario_fut_zoo)), 
    include.mean = FALSE, trace = FALSE) 

Mean and Variance Equation:
 data ~ arma(1, 2) + garch(1, 1)
<environment: 0x00000246a9d9efe0>
 [data = diff(log(cafe_diario_fut_zoo))]

Conditional Distribution:
 norm 

Coefficient(s):
         ar1           ma1           ma2         omega        alpha1  
-0.052146513   0.001921327  -0.005015825   0.000086414   0.041138459  
       beta1  
 0.792671690  

Std. Errors:
 based on Hessian 

Error Analysis:
          Estimate  Std. Error  t value           Pr(>|t|)    
ar1    -0.05214651  0.33767934   -0.154             0.8773    
ma1     0.00192133  0.34040671    0.006             0.9955    
ma2    -0.00501582  0.05448166   -0.092             0.9266    
omega   0.00008641  0.00004909    1.760             0.0784 .  
alpha1  0.04113846  0.02760964    1.490             0.1362    
beta1   0.79267169  0.10548774    7.514 0.0000000000000573 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log Likelihood:
 1671.882    normalized:  2.368105 

Description:
 Tue Sep 24 13:47:22 2024 by user: josue 


Standardised Residuals Tests:
                                Statistic                 p-Value
 Jarque-Bera Test   R    Chi^2  65.751930 0.000000000000005329071
 Shapiro-Wilk Test  R    W       0.984175 0.000000641534129462894
 Ljung-Box Test     R    Q(10)  11.524635 0.318129166196296164770
 Ljung-Box Test     R    Q(15)  19.861818 0.177297861766118725058
 Ljung-Box Test     R    Q(20)  24.246675 0.231782940931687164721
 Ljung-Box Test     R^2  Q(10)   4.263840 0.934660723433889728540
 Ljung-Box Test     R^2  Q(15)  11.913261 0.685582362462454186769
 Ljung-Box Test     R^2  Q(20)  16.259331 0.700411049038595745486
 LM Arch Test       R    TR^2    5.360308 0.944849694942738183023

Information Criterion Statistics:
      AIC       BIC       SIC      HQIC 
-4.719214 -4.680463 -4.719356 -4.704240 
Código
vconds1 = Garch11_fut@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_fut, which = 3)

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)

plot.ts(vol)

Código
# Cálculo da média da volatilidade anualizada
mean(vol)
[1] 0.3610877

SPOT

Código
# Estimação do modelo GARCH(1,1) com uma estrutura ARMA(1,1) na média
Garch11_spot <- garchFit(~ arma(1,1) + garch(1,1),
                    data = diff(log(cafe_diario_spot_zoo)), 
                    include.mean = FALSE, 
                    trace = FALSE)


summary(Garch11_spot)

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: 0x00000246a9d2ca80>
 [data = diff(log(cafe_diario_spot_zoo))]

Conditional Distribution:
 norm 

Coefficient(s):
          ar1            ma1          omega         alpha1          beta1  
 0.3697931384  -0.3796838493   0.0000083038   0.0296595838   0.9437974806  

Std. Errors:
 based on Hessian 

Error Analysis:
           Estimate   Std. Error  t value            Pr(>|t|)    
ar1     0.369793138  0.374785823    0.987               0.324    
ma1    -0.379683849  0.353072442   -1.075               0.282    
omega   0.000008304  0.000006250    1.329               0.184    
alpha1  0.029659584  0.014143350    2.097               0.036 *  
beta1   0.943797481  0.028404423   33.227 <0.0000000000000002 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log Likelihood:
 1857.121    normalized:  2.630483 

Description:
 Tue Sep 24 13:47:22 2024 by user: josue 


Standardised Residuals Tests:
                                 Statistic    p-Value
 Jarque-Bera Test   R    Chi^2   0.9045589 0.63617638
 Shapiro-Wilk Test  R    W       0.9980588 0.60973311
 Ljung-Box Test     R    Q(10)  15.0743063 0.12937618
 Ljung-Box Test     R    Q(15)  20.7967055 0.14345136
 Ljung-Box Test     R    Q(20)  24.4119767 0.22485922
 Ljung-Box Test     R^2  Q(10)   8.2791855 0.60158689
 Ljung-Box Test     R^2  Q(15)  24.2559124 0.06087314
 Ljung-Box Test     R^2  Q(20)  33.1679260 0.03233617
 LM Arch Test       R    TR^2   19.3429940 0.08058040

Information Criterion Statistics:
      AIC       BIC       SIC      HQIC 
-5.246801 -5.214509 -5.246900 -5.234323 
Código
vconds1 = Garch11_spot@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_spot, which = 3)

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)

plot.ts(vol)

Código
# Cálculo da média da volatilidade anualizada
mean(vol)
[1] 0.278614

EGARCH

FUTURO

Código
# Estimação do modelo EGARCH(1,1) com uma estrutura ARMA(1,1) na média - Café Futuro
EGarch11_fut <- garchFit(~ arma(1,2) + aparch(1,1), 
                          data = diff(log(cafe_diario_fut_zoo)), 
                          include.mean = FALSE, 
                          cond.dist = "norm", 
                          garchModel = "EGARCH", 
                          trace = FALSE)

summary(EGarch11_fut)

Title:
 GARCH Modelling 

Call:
 garchFit(formula = ~arma(1, 2) + aparch(1, 1), data = diff(log(cafe_diario_fut_zoo)), 
    cond.dist = "norm", include.mean = FALSE, trace = FALSE, 
    garchModel = "EGARCH") 

Mean and Variance Equation:
 data ~ arma(1, 2) + aparch(1, 1)
<environment: 0x00000246a7303d80>
 [data = diff(log(cafe_diario_fut_zoo))]

Conditional Distribution:
 norm 

Coefficient(s):
       ar1         ma1         ma2       omega      alpha1      gamma1  
-0.0614901   0.0172059  -0.0063309   0.0017227   0.0443659  -0.3532355  
     beta1       delta  
 0.8051470   1.1975486  

Std. Errors:
 based on Hessian 

Error Analysis:
        Estimate  Std. Error  t value          Pr(>|t|)    
ar1    -0.061490    0.307372   -0.200             0.841    
ma1     0.017206    0.310681    0.055             0.956    
ma2    -0.006331    0.053302   -0.119             0.905    
omega   0.001723    0.001124    1.532             0.125    
alpha1  0.044366    0.028349    1.565             0.118    
gamma1 -0.353235    0.440096   -0.803             0.422    
beta1   0.805147    0.111625    7.213 0.000000000000547 ***
delta   1.197549    0.805512    1.487             0.137    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log Likelihood:
 1675.585    normalized:  2.373349 

Description:
 Tue Sep 24 13:47:23 2024 by user: josue 


Standardised Residuals Tests:
                                 Statistic                p-Value
 Jarque-Bera Test   R    Chi^2  60.4082131 0.00000000000007627232
 Shapiro-Wilk Test  R    W       0.9848723 0.00000110946712881694
 Ljung-Box Test     R    Q(10)  11.6473202 0.30935314809581526685
 Ljung-Box Test     R    Q(15)  19.8366134 0.17829039982561423194
 Ljung-Box Test     R    Q(20)  23.9087514 0.24640083013992697403
 Ljung-Box Test     R^2  Q(10)   4.7294497 0.90850297043768257765
 Ljung-Box Test     R^2  Q(15)  11.2511873 0.73459335846503903689
 Ljung-Box Test     R^2  Q(20)  15.8814319 0.72395224947028236073
 LM Arch Test       R    TR^2    5.9943535 0.91636642504357135319

Information Criterion Statistics:
      AIC       BIC       SIC      HQIC 
-4.724036 -4.672369 -4.724289 -4.704071 
Código
vconds_spot_egarch = EGarch11_fut@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)

plot.ts(vol_spot_egarch)

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

SPOT

Código
# Estimação do modelo EGARCH(1,1) com uma estrutura ARMA(1,1) na média - Café Spot
EGarch11_spot <- garchFit(~ arma(1,1) + aparch(1,1), 
                          data = diff(log(cafe_diario_spot_zoo)), 
                          include.mean = FALSE, 
                          cond.dist = "norm", 
                          garchModel = "EGARCH", 
                          trace = FALSE)

summary(EGarch11_spot)

Title:
 GARCH Modelling 

Call:
 garchFit(formula = ~arma(1, 1) + aparch(1, 1), data = diff(log(cafe_diario_spot_zoo)), 
    cond.dist = "norm", include.mean = FALSE, trace = FALSE, 
    garchModel = "EGARCH") 

Mean and Variance Equation:
 data ~ arma(1, 1) + aparch(1, 1)
<environment: 0x00000246a33de030>
 [data = diff(log(cafe_diario_spot_zoo))]

Conditional Distribution:
 norm 

Coefficient(s):
         ar1           ma1         omega        alpha1        gamma1  
 0.378277746  -0.388256560   0.000010469   0.030609777   0.113991342  
       beta1         delta  
 0.935583422   2.000000000  

Std. Errors:
 based on Hessian 

Error Analysis:
          Estimate  Std. Error  t value            Pr(>|t|)    
ar1     0.37827775  0.37414867    1.011               0.312    
ma1    -0.38825656  0.35173156   -1.104               0.270    
omega   0.00001047  0.00000925    1.132               0.258    
alpha1  0.03060978  0.02023901    1.512               0.130    
gamma1  0.11399134  0.21107852    0.540               0.589    
beta1   0.93558342  0.04124367   22.684 <0.0000000000000002 ***
delta   2.00000000  1.94195420    1.030               0.303    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log Likelihood:
 1857.311    normalized:  2.630752 

Description:
 Tue Sep 24 13:47:23 2024 by user: josue 


Standardised Residuals Tests:
                                 Statistic    p-Value
 Jarque-Bera Test   R    Chi^2   0.9615377 0.61830781
 Shapiro-Wilk Test  R    W       0.9980935 0.62652709
 Ljung-Box Test     R    Q(10)  14.6637354 0.14481084
 Ljung-Box Test     R    Q(15)  20.3892483 0.15750364
 Ljung-Box Test     R    Q(20)  24.2059426 0.23351191
 Ljung-Box Test     R^2  Q(10)   9.0641611 0.52602549
 Ljung-Box Test     R^2  Q(15)  25.6043878 0.04239237
 Ljung-Box Test     R^2  Q(20)  35.0705576 0.01973169
 LM Arch Test       R    TR^2   20.6066847 0.05644520

Information Criterion Statistics:
      AIC       BIC       SIC      HQIC 
-5.241674 -5.196465 -5.241868 -5.224205 
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)

plot.ts(vol_spot_egarch)

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

TGARCH

FUTURO

Código
# Estimação do modelo TGARCH(1,1) com uma estrutura ARMA(1,1) na média - Café Futuro
TGarch11_fut <- garchFit(~ arma(1,2) + aparch(1,1), 
                          data = diff(log(cafe_diario_fut_zoo)), 
                          include.mean = FALSE, 
                          cond.dist = "norm", 
                          garchModel = "EGARCH", 
                          trace = FALSE)

summary(TGarch11_fut)

Title:
 GARCH Modelling 

Call:
 garchFit(formula = ~arma(1, 2) + aparch(1, 1), data = diff(log(cafe_diario_fut_zoo)), 
    cond.dist = "norm", include.mean = FALSE, trace = FALSE, 
    garchModel = "EGARCH") 

Mean and Variance Equation:
 data ~ arma(1, 2) + aparch(1, 1)
<environment: 0x00000246a25e8a98>
 [data = diff(log(cafe_diario_fut_zoo))]

Conditional Distribution:
 norm 

Coefficient(s):
       ar1         ma1         ma2       omega      alpha1      gamma1  
-0.0614901   0.0172059  -0.0063309   0.0017227   0.0443659  -0.3532355  
     beta1       delta  
 0.8051470   1.1975486  

Std. Errors:
 based on Hessian 

Error Analysis:
        Estimate  Std. Error  t value          Pr(>|t|)    
ar1    -0.061490    0.307372   -0.200             0.841    
ma1     0.017206    0.310681    0.055             0.956    
ma2    -0.006331    0.053302   -0.119             0.905    
omega   0.001723    0.001124    1.532             0.125    
alpha1  0.044366    0.028349    1.565             0.118    
gamma1 -0.353235    0.440096   -0.803             0.422    
beta1   0.805147    0.111625    7.213 0.000000000000547 ***
delta   1.197549    0.805512    1.487             0.137    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log Likelihood:
 1675.585    normalized:  2.373349 

Description:
 Tue Sep 24 13:47:24 2024 by user: josue 


Standardised Residuals Tests:
                                 Statistic                p-Value
 Jarque-Bera Test   R    Chi^2  60.4082131 0.00000000000007627232
 Shapiro-Wilk Test  R    W       0.9848723 0.00000110946712881694
 Ljung-Box Test     R    Q(10)  11.6473202 0.30935314809581526685
 Ljung-Box Test     R    Q(15)  19.8366134 0.17829039982561423194
 Ljung-Box Test     R    Q(20)  23.9087514 0.24640083013992697403
 Ljung-Box Test     R^2  Q(10)   4.7294497 0.90850297043768257765
 Ljung-Box Test     R^2  Q(15)  11.2511873 0.73459335846503903689
 Ljung-Box Test     R^2  Q(20)  15.8814319 0.72395224947028236073
 LM Arch Test       R    TR^2    5.9943535 0.91636642504357135319

Information Criterion Statistics:
      AIC       BIC       SIC      HQIC 
-4.724036 -4.672369 -4.724289 -4.704071 
Código
vconds_spot_tgarch = TGarch11_fut@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)

plot.ts(vol_spot_tgarch)

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

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(1,1) + aparch(1,1), 
                          data = diff(log(cafe_diario_spot_zoo)), 
                          include.mean = FALSE, 
                          cond.dist = "norm", 
                          garchModel = "TGARCH", 
                          trace = FALSE)

summary(TGarch11_spot)

Title:
 GARCH Modelling 

Call:
 garchFit(formula = ~arma(1, 1) + aparch(1, 1), data = diff(log(cafe_diario_spot_zoo)), 
    cond.dist = "norm", include.mean = FALSE, trace = FALSE, 
    garchModel = "TGARCH") 

Mean and Variance Equation:
 data ~ arma(1, 1) + aparch(1, 1)
<environment: 0x00000246ad28fab8>
 [data = diff(log(cafe_diario_spot_zoo))]

Conditional Distribution:
 norm 

Coefficient(s):
         ar1           ma1         omega        alpha1        gamma1  
 0.378277746  -0.388256560   0.000010469   0.030609777   0.113991342  
       beta1         delta  
 0.935583422   2.000000000  

Std. Errors:
 based on Hessian 

Error Analysis:
          Estimate  Std. Error  t value            Pr(>|t|)    
ar1     0.37827775  0.37414867    1.011               0.312    
ma1    -0.38825656  0.35173156   -1.104               0.270    
omega   0.00001047  0.00000925    1.132               0.258    
alpha1  0.03060978  0.02023901    1.512               0.130    
gamma1  0.11399134  0.21107852    0.540               0.589    
beta1   0.93558342  0.04124367   22.684 <0.0000000000000002 ***
delta   2.00000000  1.94195420    1.030               0.303    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Log Likelihood:
 1857.311    normalized:  2.630752 

Description:
 Tue Sep 24 13:47:24 2024 by user: josue 


Standardised Residuals Tests:
                                 Statistic    p-Value
 Jarque-Bera Test   R    Chi^2   0.9615377 0.61830781
 Shapiro-Wilk Test  R    W       0.9980935 0.62652709
 Ljung-Box Test     R    Q(10)  14.6637354 0.14481084
 Ljung-Box Test     R    Q(15)  20.3892483 0.15750364
 Ljung-Box Test     R    Q(20)  24.2059426 0.23351191
 Ljung-Box Test     R^2  Q(10)   9.0641611 0.52602549
 Ljung-Box Test     R^2  Q(15)  25.6043878 0.04239237
 Ljung-Box Test     R^2  Q(20)  35.0705576 0.01973169
 LM Arch Test       R    TR^2   20.6066847 0.05644520

Information Criterion Statistics:
      AIC       BIC       SIC      HQIC 
-5.241674 -5.196465 -5.241868 -5.224205 
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)

plot.ts(vol_spot_tgarch)

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

Regressão

Código
# Logaritmizando (para corrigir a heterocedasticidade)
# -----------------------------------------------------------------------------

lspot <- log(cafe_diario_spot_zoo)
lfuturo <- log(cafe_diario_fut_zoo)

par(mfrow = c(2,1))
plot(cafe_diario_spot_zoo, main = "CAFÉ ARÁBICA - SPOT diário");plot(cafe_diario_fut_zoo, main = "CAFÉ ARÁBICA - FUTURO diário")

Código
plot(lspot, main = "CAFÉ ARÁBICA - log SPOT diário"); plot(lfuturo, main = "CAFÉ ARÁBICA - log FUTURO diário")

Código
# Regressão em diff (para corrigir a autocorrelacao)
# -----------------------------------------------------------------------------

lag <- stats::lag
Diario <- dynlm(diff(lspot)~diff(lag(lfuturo,3)+diff(lag(lfuturo,-2)+diff(lag(lspot,1)+diff(lag(lspot,-2))))))
summary(Diario)

Time series regression with "zoo" data:
Start = 2021-10-11, End = 2024-07-29

Call:
dynlm(formula = diff(lspot) ~ diff(lag(lfuturo, 3) + diff(lag(lfuturo, 
    -2) + diff(lag(lspot, 1) + diff(lag(lspot, -2))))))

Residuals:
      Min        1Q    Median        3Q       Max 
-0.047957 -0.011274 -0.000585  0.010906  0.055492 

Coefficients:
                                                                                              Estimate
(Intercept)                                                                                  0.0002139
diff(lag(lfuturo, 3) + diff(lag(lfuturo, -2) + diff(lag(lspot, 1) + diff(lag(lspot, -2))))) -0.0563913
                                                                                            Std. Error
(Intercept)                                                                                  0.0006201
diff(lag(lfuturo, 3) + diff(lag(lfuturo, -2) + diff(lag(lspot, 1) + diff(lag(lspot, -2)))))  0.0054135
                                                                                            t value
(Intercept)                                                                                   0.345
diff(lag(lfuturo, 3) + diff(lag(lfuturo, -2) + diff(lag(lspot, 1) + diff(lag(lspot, -2))))) -10.417
                                                                                                       Pr(>|t|)
(Intercept)                                                                                                0.73
diff(lag(lfuturo, 3) + diff(lag(lfuturo, -2) + diff(lag(lspot, 1) + diff(lag(lspot, -2))))) <0.0000000000000002
                                                                                               
(Intercept)                                                                                    
diff(lag(lfuturo, 3) + diff(lag(lfuturo, -2) + diff(lag(lspot, 1) + diff(lag(lspot, -2))))) ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.01638 on 696 degrees of freedom
Multiple R-squared:  0.1349,    Adjusted R-squared:  0.1336 
F-statistic: 108.5 on 1 and 696 DF,  p-value: < 0.00000000000000022

Testes para os resíduos

Código
# Testes para os resíduos
{
par(mfrow = c(1,1))
ResiduosDiario <- residuals(Diario); head(ResiduosDiario)
plot(ResiduosDiario, type="l", col="red")
abline(h=0, col="blue", lw=3)
par(mfrow=c(1,2))
hist(ResiduosDiario, main="", col="cadetblue", prob=T, xlab = names(ResiduosDiario)[1], breaks = 30)
curve(expr=dnorm(x,mean=mean(ResiduosDiario),sd=sd(ResiduosDiario)),col="red",add= TRUE, lwd=2)
qqnorm(ResiduosDiario, col="blue")
qqline(ResiduosDiario, col="red")
}

Teste para normalidade

Código
# Jarque Bera
jarqueberaTest(ResiduosDiario)

Title:
 Jarque - Bera Normalality Test

Test Results:
  STATISTIC:
    X-squared: 3.173
  P VALUE:
    Asymptotic p Value: 0.2046 

Testes para heterocedasticidade

Código
# Goldfeld-Quandt
length(ResiduosDiario); length(ResiduosDiario)*0.15
[1] 698
[1] 104.7
Código
gqtest(Diario, fraction = 104.7, alternative = "greater")

    Goldfeld-Quandt test

data:  Diario
GQ = 0.85045, df1 = 295, df2 = 294, p-value = 0.9174
alternative hypothesis: variance increases from segment 1 to 2
Código
# Breusch-Pagan-Godfrey
bptest(Diario)

    studentized Breusch-Pagan test

data:  Diario
BP = 0.6385, df = 1, p-value = 0.4243
Código
# White
white_test(Diario)
White's test results

Null hypothesis: Homoskedasticity of the residuals
Alternative hypothesis: Heteroskedasticity of the residuals
Test Statistic: 0.65
P-value: 0.723808

Testes de autocorrelação

Código
# Durbin Watson
dwtest(Diario)

    Durbin-Watson test

data:  Diario
DW = 1.9106, p-value = 0.1237
alternative hypothesis: true autocorrelation is greater than 0
Código
# Breusch-Godfrey
bgtest(Diario, order = 4)

    Breusch-Godfrey test for serial correlation of order up to 4

data:  Diario
LM test = 115.03, df = 4, p-value < 0.00000000000000022
Código
# Arch
ArchTest(ResiduosDiario, lags = 4)

    ARCH LM-test; Null hypothesis: no ARCH effects

data:  ResiduosDiario
Chi-squared = 1.1226, df = 4, p-value = 0.8907
Código
# Dickey-Fuller
dfuller <- ur.df(ResiduosDiario, lags = 18, type="trend")
summary(dfuller)

############################################### 
# Augmented Dickey-Fuller Test Unit Root Test # 
############################################### 

Test regression trend 


Call:
lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.048740 -0.009970 -0.000190  0.009272  0.048747 

Coefficients:
                 Estimate   Std. Error t value      Pr(>|t|)    
(Intercept)  -0.000736501  0.001279103  -0.576         0.565    
z.lag.1      -0.815789226  0.134270611  -6.076 0.00000000209 ***
tt            0.000001965  0.000003139   0.626         0.531    
z.diff.lag1  -0.105000515  0.130860797  -0.802         0.423    
z.diff.lag2   0.035031951  0.127057865   0.276         0.783    
z.diff.lag3  -0.135712919  0.123148122  -1.102         0.271    
z.diff.lag4   0.023180202  0.119212344   0.194         0.846    
z.diff.lag5   0.073971459  0.114997940   0.643         0.520    
z.diff.lag6   0.036964752  0.111509264   0.331         0.740    
z.diff.lag7   0.091558999  0.107594095   0.851         0.395    
z.diff.lag8   0.150856965  0.103751745   1.454         0.146    
z.diff.lag9   0.106462061  0.100667171   1.058         0.291    
z.diff.lag10  0.156220806  0.096949625   1.611         0.108    
z.diff.lag11  0.075748823  0.093788357   0.808         0.420    
z.diff.lag12  0.062320614  0.089428660   0.697         0.486    
z.diff.lag13  0.086271684  0.083984665   1.027         0.305    
z.diff.lag14 -0.002313436  0.078979156  -0.029         0.977    
z.diff.lag15  0.009723528  0.072408794   0.134         0.893    
z.diff.lag16  0.013654871  0.061541846   0.222         0.824    
z.diff.lag17  0.007831239  0.053160232   0.147         0.883    
z.diff.lag18  0.028178058  0.039176631   0.719         0.472    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.01593 on 658 degrees of freedom
Multiple R-squared:  0.5252,    Adjusted R-squared:  0.5108 
F-statistic:  36.4 on 20 and 658 DF,  p-value: < 0.00000000000000022


Value of test-statistic is: -6.0757 12.307 18.459 

Critical values for test statistics: 
      1pct  5pct 10pct
tau3 -3.96 -3.41 -3.12
phi2  6.09  4.68  4.03
phi3  8.27  6.25  5.34

Número ótimo de contratos

Código
ContratosDiarios <-  (10000*0.0563913)/450
ContratosDiarios
[1] 1.25314