Importação dos dados

Iniciamos a apresentação importando os dados que utilizaremos para análise e apresentando sua estrutura.

dados <- read_excel("Atividade Final - Métodos.xlsx")
## tibble [2,722 x 10] (S3: tbl_df/tbl/data.frame)
##  $ Data     : POSIXct[1:2722], format: "2021-01-05" "2021-01-04" ...
##  $ Market   : num [1:2722] 0.00366 -0.00156 -0.00361 0.00285 0.01146 ...
##  $ HML      : num [1:2722] 0.0021 0.00607 0.00284 0.00135 -0.00708 ...
##  $ SMB      : num [1:2722] -0.00761 0.000421 0.007245 0.006832 -0.007147 ...
##  $ WML      : num [1:2722] 0.006262 0.016905 0.008465 -0.00053 0.000487 ...
##  $ Risk_free: num [1:2722] 7.55e-05 7.55e-05 7.55e-05 7.51e-05 7.55e-05 ...
##  $ VALE3    : num [1:2722] 0.016838 0.045855 0.004364 -0.002749 -0.000572 ...
##  $ USIM3    : num [1:2722] 0.03304 0.00319 -0.00633 0.02866 -0.00454 ...
##  $ Size1    : num [1:2722] -0.00781 -0.00427 0.00524 0.01057 0.00906 ...
##  $ BM1      : num [1:2722] -0.00576 -0.00726 -0.00122 0.00494 0.01792 ...

Questão 1

Regressão - capm_b

capm_b <- lm(usim3_rf ~ Market)
## 
## Call:
## lm(formula = usim3_rf ~ Market)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.18113 -0.01644 -0.00179  0.01258  0.39426 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 0.0000552  0.0006291   0.088     0.93    
## Market      1.0522563  0.0444128  23.693   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03282 on 2720 degrees of freedom
## Multiple R-squared:  0.1711, Adjusted R-squared:  0.1708 
## F-statistic: 561.3 on 1 and 2720 DF,  p-value: < 2.2e-16

Regressão - ffrench_b

ffrench_b <- lm(usim3_rf ~ Market + SMB + HML)
## 
## Call:
## lm(formula = usim3_rf ~ Market + SMB + HML)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.18739 -0.01534 -0.00189  0.01244  0.38178 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.545e-05  6.160e-04   0.106    0.915    
## Market       9.168e-01  4.562e-02  20.094   <2e-16 ***
## SMB         -7.291e-02  7.854e-02  -0.928    0.353    
## HML          9.001e-01  8.536e-02  10.544   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03213 on 2718 degrees of freedom
## Multiple R-squared:  0.206,  Adjusted R-squared:  0.2052 
## F-statistic: 235.1 on 3 and 2718 DF,  p-value: < 2.2e-16

Questão 2

Breusch-Pagan - capm_b e ffrench_b

bptest(capm_b)
## 
##  studentized Breusch-Pagan test
## 
## data:  capm_b
## BP = 1.3036, df = 1, p-value = 0.2536
bptest(ffrench_b)
## 
##  studentized Breusch-Pagan test
## 
## data:  ffrench_b
## BP = 3.3443, df = 3, p-value = 0.3415

Dessa forma, dado que a hipótese nula do teste é que o modelo é homocedástico, temos que tanto o modelo capm_b quanto o modelo ffrench_b são homocedásticos.

Breusch-Godfrey - capm_b e ffrench_b

bgtest(capm_b)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  capm_b
## LM test = 52.515, df = 1, p-value = 4.269e-13
bgtest(ffrench_b)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  ffrench_b
## LM test = 51.07, df = 1, p-value = 8.911e-13

Dessa forma, dado que a hipótese nula do teste é ausência de correlação serial, temos que existe correlação serial tanto no modelo capm_b quanto no modelo ffrench_b.

Outliers - capm_b

Dessa forma, é possível afirmar que existem observações influentes (outliers) em nossa amostra.

Outliers - ffrench_b

Dessa forma, é possível afirmar que existem observações influentes (outliers) em nossa amostra.

Outliers, heterocedasticidade e correlaçao serial

  • “A heterocedasticidade também ocorre como resultado da presença de dados discrepantes (outliers). Uma observação discrepante é aquela que difere muito em relação às observações da amostra. Em termos mais exatos, um dado discrepante é a observação de uma população que difere daquela que gera as observações amostradas remanescentes. A inclusão ou exclusão de tal observação, principalmente quando o tamanho da amostra for menor, pode alterar substancialmente os resultados da análise de regressão.”

  • Em relação a correlação serial, sabemos que é um probelema de má especificação no modelo - o termo de erro contém uma variável que foi omitida da equação de regressão (\(\nu_i = \beta X_i + \epsilon_i\)). Dessa forma, “o termo de erro, \(\nu\), refletirá um padrão sistemático”. Essa variável omitida pode tanto ser um outro regressor (os retornos de um outro fator de risco, por exemplo) ou uma defasagem da variável dependente.

  • Dessa forma, podemos esperar que a correlação serial esteja sendo causada por uma má especificação do modelo que está “contaminando” nossos valores esperados e, dessa forma, fazendo com que algumas observações sejam consideradas influentes de forma incorreta.

Questão 3

Jarque-Bera antes do ajuste para correlação serial

jarque.bera.test(capm_b$residuals)
## 
##  Jarque Bera Test
## 
## data:  capm_b$residuals
## X-squared = 49232, df = 2, p-value < 2.2e-16
jarque.bera.test(ffrench_b$residuals)
## 
##  Jarque Bera Test
## 
## data:  ffrench_b$residuals
## X-squared = 53747, df = 2, p-value < 2.2e-16

Dessa forma, rejeitamos a hipótese nula de normalidade dos resíduos para ambos os modelos.

Correção para correlação serial - PACF

Dessa forma, podemos observar que existe uma correlação forte entre o retorno em \(t\) e o retorno em \(t-1\). Por esse motivo, iremos adicionar a primeira defasagem do retorno ao nosso modelo de regressão.

Correção para correlação serial - Regressão (capm_b)

capm_b_lag <- lm(usim3_rf ~ Market + Hmisc::Lag(usim3_rf, -1))
## 
## Call:
## lm(formula = usim3_rf ~ Market + Hmisc::Lag(usim3_rf, -1))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.18750 -0.01629 -0.00180  0.01304  0.39762 
## 
## Coefficients:
##                           Estimate Std. Error t value Pr(>|t|)    
## (Intercept)              3.576e-05  6.226e-04   0.057    0.954    
## Market                   1.060e+00  4.396e-02  24.107  < 2e-16 ***
## Hmisc::Lag(usim3_rf, -1) 1.339e-01  1.728e-02   7.747 1.32e-14 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03248 on 2718 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.189,  Adjusted R-squared:  0.1884 
## F-statistic: 316.7 on 2 and 2718 DF,  p-value: < 2.2e-16

Correção para correlação serial - Regressão (ffrench_b)

ffrench_b_lag <- lm(usim3_rf ~ Market + SMB + HML + Hmisc::Lag(usim3_rf, -1))
## 
## Call:
## lm(formula = usim3_rf ~ Market + SMB + HML + Hmisc::Lag(usim3_rf, 
##     -1))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.19280 -0.01575 -0.00167  0.01291  0.38544 
## 
## Coefficients:
##                            Estimate Std. Error t value Pr(>|t|)    
## (Intercept)               0.0000417  0.0006108   0.068    0.946    
## Market                    0.9270252  0.0452515  20.486  < 2e-16 ***
## SMB                      -0.1129558  0.0780715  -1.447    0.148    
## HML                       0.8661767  0.0847667  10.218  < 2e-16 ***
## Hmisc::Lag(usim3_rf, -1)  0.1203567  0.0170593   7.055 2.18e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03185 on 2716 degrees of freedom
##   (1 observation deleted due to missingness)
## Multiple R-squared:  0.2203, Adjusted R-squared:  0.2192 
## F-statistic: 191.9 on 4 and 2716 DF,  p-value: < 2.2e-16

A correlação serial deixa de estar presente?

bgtest(capm_b_lag)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  capm_b_lag
## LM test = 0.12621, df = 1, p-value = 0.7224
bgtest(ffrench_b_lag)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  ffrench_b_lag
## LM test = 1.0711, df = 1, p-value = 0.3007

SIM! Dado que a hipótese nula de ausência de correlação serial não pode ser rejeitada (p-valor > 0.05).

Jarque-Bera após o ajuste para correlação serial

jarque.bera.test(capm_b_lag$residuals)
## 
##  Jarque Bera Test
## 
## data:  capm_b_lag$residuals
## X-squared = 41950, df = 2, p-value < 2.2e-16
jarque.bera.test(ffrench_b_lag$residuals)
## 
##  Jarque Bera Test
## 
## data:  ffrench_b_lag$residuals
## X-squared = 44967, df = 2, p-value < 2.2e-16

Dessa forma, mesmo com um modelo homocedástico e com ausência de correlação serial, rejeitamos a hipótese nula de normalidade dos resíduos.

Questão 4

Capm_a

capm_a <- lm(capm_a <- lm(vale3_rf ~ Market))
## 
## Call:
## lm(formula = capm_a <- lm(vale3_rf ~ Market))
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.22821 -0.01049 -0.00038  0.01022  0.11905 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 0.0003033  0.0004083   0.743    0.458    
## Market      1.1291019  0.0288264  39.169   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0213 on 2720 degrees of freedom
## Multiple R-squared:  0.3606, Adjusted R-squared:  0.3604 
## F-statistic:  1534 on 1 and 2720 DF,  p-value: < 2.2e-16

Ffrench_a

ffrench_a <- lm(vale3_rf ~ Market + SMB + HML)
## 
## Call:
## lm(formula = vale3_rf ~ Market + SMB + HML)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.230339 -0.010451 -0.000357  0.009904  0.133162 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.0002519  0.0003929   0.641    0.522    
## Market       0.9982885  0.0290980  34.308  < 2e-16 ***
## SMB         -0.4124811  0.0500908  -8.235 2.76e-16 ***
## HML          0.7873107  0.0544413  14.462  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.02049 on 2718 degrees of freedom
## Multiple R-squared:  0.4087, Adjusted R-squared:  0.408 
## F-statistic: 626.2 on 3 and 2718 DF,  p-value: < 2.2e-16

Beta de mercado é igual a 1? (VALE3 - capm)

linearHypothesis(capm_a, "Market = 1")
## Linear hypothesis test
## 
## Hypothesis:
## Market = 1
## 
## Model 1: restricted model
## Model 2: vale3_rf ~ Market
## 
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   2721 1.2434                                  
## 2   2720 1.2343  1 0.0091018 20.058 7.823e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dado que a hipótese nula do teste é de que o modelo restrito é válido, temos, nesse caso, que a hipótese nula é rejeitada, ou seja, o modelo irrestrito é melhor. Desse modo, o beta é estatisticamente diferente de 1.

Beta de mercado é igual a 1? (VALE3 - ffrench)

linearHypothesis(ffrench_a, "Market = 1")
## Linear hypothesis test
## 
## Hypothesis:
## Market = 1
## 
## Model 1: restricted model
## Model 2: vale3_rf ~ Market + SMB + HML
## 
##   Res.Df    RSS Df  Sum of Sq      F Pr(>F)
## 1   2719 1.1415                            
## 2   2718 1.1415  1 1.4531e-06 0.0035 0.9531

Dado que a hipótese nula do teste é de que o modelo restrito é válido, temos, nesse caso, que a hipótese nula não é rejeitada, ou seja, o modelo restrito é melhor. Desse modo, o beta é estatisticamente igual de 1.

Beta de mercado é igual a 1? (USIM3 - capm)

linearHypothesis(capm_b, "Market = 1")
## Linear hypothesis test
## 
## Hypothesis:
## Market = 1
## 
## Model 1: restricted model
## Model 2: usim3_rf ~ Market
## 
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1   2721 2.9314                           
## 2   2720 2.9299  1 0.0014912 1.3844 0.2395

Dado que a hipótese nula do teste é de que o modelo restrito é válido, temos, nesse caso, que a hipótese nula não é rejeitada, ou seja, o modelo restrito é melhor. Desse modo, o beta é estatisticamente igual de 1.

Beta de mercado é igual a 1? (USIM3 - ffrench)

linearHypothesis(ffrench_b, "Market = 1")
## Linear hypothesis test
## 
## Hypothesis:
## Market = 1
## 
## Model 1: restricted model
## Model 2: usim3_rf ~ Market + SMB + HML
## 
##   Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
## 1   2719 2.8097                              
## 2   2718 2.8063  1 0.0034354 3.3273 0.06825 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dado que a hipótese nula do teste é de que o modelo restrito é válido, temos, nesse caso, que a hipótese nula não é rejeitada, ou seja, o modelo restrito é melhor. Desse modo, o beta é estatisticamente igual de 1.

Qual dos dois ativos é mais arriscado?

  • Como o beta de USIM3 foi estatisticamente igual a 1 em ambos os modelos e o beta de VALE3 foi estatisticamente diferente de 1 no modelo CAPM (\(\beta > 1\)), podemos afirmar que VALE3 é mais arriscado.

Questão 5

Qual o modelo mais adequado para inferências?

anova(capm_b, ffrench_b)
## Analysis of Variance Table
## 
## Model 1: usim3_rf ~ Market
## Model 2: usim3_rf ~ Market + SMB + HML
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1   2720 2.9299                                  
## 2   2718 2.8063  2   0.12357 59.842 < 2.2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Dado que a hipótese nula do teste é de que o modelo restrito é válido, temos, nesse caso, que a hipótese nula é rejeitada, ou seja, o modelo irrestrito é melhor. Dessa forma, o modelo de 3 fatores de Fama & French é mais adequeado para inferências.

Questão 6

Alfa (intercepto) é igual a zero? (USIM3 - Ffrench)

## 
## Call:
## lm(formula = usim3_rf ~ Market + SMB + HML)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.18739 -0.01534 -0.00189  0.01244  0.38178 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  6.545e-05  6.160e-04   0.106    0.915    
## Market       9.168e-01  4.562e-02  20.094   <2e-16 ***
## SMB         -7.291e-02  7.854e-02  -0.928    0.353    
## HML          9.001e-01  8.536e-02  10.544   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.03213 on 2718 degrees of freedom
## Multiple R-squared:  0.206,  Adjusted R-squared:  0.2052 
## F-statistic: 235.1 on 3 and 2718 DF,  p-value: < 2.2e-16

O p-valor do intercepto, como pode ser visto, foi de 0.915. Nesse caso, não rejeitamos a hipótese nula de que o intercepto é igual a 0.

Questão 7

Representação gráfica dos resíduos

Representação gráfica dos resíduos ao quadrado

Modelo é heterocedástico?

bptest(ffrench_b)
## 
##  studentized Breusch-Pagan test
## 
## data:  ffrench_b
## BP = 3.3443, df = 3, p-value = 0.3415

Como nosso modelo já é homocedástico, não é necessário fazer nenhum tipo de ajuste na variância do erro. Entretanto, caso fosse heterocedástico poderíamos estimar os parâmetros utilizando Mínimos Quadrados Ponderados, utilizar matriz robusta (Erros Padrão de White) ou até tirar o logaritmo neperiano das variáveis.