Apresentams uma nova forma de se pensar a volatilidade e a gestão de portfólios quantitativos. Nossa estratégia irá alocar mais em ativos mais voláteis, pensando em se beneficiar da alta do prêmio de risco destes e obter retornos consistentes no longo prazo.
Apresentação dos dados:
## # A tibble: 2,044 x 14
## Datas `3MonthTBill` SPY USDBRL `Information Te~
## <dttm> <dbl> <dbl> <dbl> <dbl>
## 1 2014-01-02 00:00:00 0.00000110 -9.58e-3 1.08e-2 -0.0103
## 2 2014-01-03 00:00:00 0.00000110 -2.19e-4 -4.65e-3 -0.00339
## 3 2014-01-06 00:00:00 0.00000110 -2.84e-3 -1.68e-4 -0.00283
## 4 2014-01-07 00:00:00 0.00000110 6.14e-3 -1.52e-3 0.0101
## 5 2014-01-08 00:00:00 0.00000110 2.18e-4 1.02e-2 0.00124
## 6 2014-01-09 00:00:00 0.00000110 6.54e-4 -2.63e-3 -0.00472
## 7 2014-01-10 00:00:00 0.00000110 2.72e-3 -1.34e-2 0.00180
## 8 2014-01-13 00:00:00 0.00000110 -1.33e-2 5.94e-4 -0.0111
## 9 2014-01-14 00:00:00 0.00000110 1.09e-2 -4.03e-3 0.0187
## 10 2014-01-15 00:00:00 0.00000110 5.39e-3 4.34e-3 0.0117
## # ... with 2,034 more rows, and 9 more variables: `Health Care (VHT)` <dbl>,
## # `Financials (IYF)` <dbl>, `Consumer Discretionary (VCR)` <dbl>,
## # `Communication Services (VOX)` <dbl>, `Industrials (VIS)` <dbl>, `Consumer
## # Staples (IYK)` <dbl>, `Energy (VDE)` <dbl>, `Utilities (VPU)` <dbl>,
## # `Materials (VAW)` <dbl>
## Datas 3MonthTBill SPY
## Min. :2014-01-02 00:00:00 Min. :5.479e-07 Min. :-0.1094237
## 1st Qu.:2016-01-12 18:00:00 1st Qu.:1.096e-06 1st Qu.:-0.0033561
## Median :2018-01-23 12:00:00 Median :7.397e-06 Median : 0.0006161
## Mean :2018-01-22 02:55:25 Mean :1.938e-05 Mean : 0.0004926
## 3rd Qu.:2020-02-04 06:00:00 3rd Qu.:4.164e-05 3rd Qu.: 0.0053297
## Max. :2022-02-04 00:00:00 Max. :6.575e-05 Max. : 0.0906033
##
## USDBRL Information Technology (VGT) Health Care (VHT)
## Min. :-0.057731 Min. :-0.1348632 Min. :-0.1105313
## 1st Qu.:-0.005871 1st Qu.:-0.0047097 1st Qu.:-0.0047443
## Median : 0.000128 Median : 0.0013620 Median : 0.0007191
## Mean : 0.000452 Mean : 0.0008449 Mean : 0.0004983
## 3rd Qu.: 0.006656 3rd Qu.: 0.0071982 3rd Qu.: 0.0063633
## Max. : 0.074251 Max. : 0.1101395 Max. : 0.0791655
## NA's :5
## Financials (IYF) Consumer Discretionary (VCR) Communication Services (VOX)
## Min. :-0.1348026 Min. :-0.1303176 Min. :-0.1141964
## 1st Qu.:-0.0040733 1st Qu.:-0.0045481 1st Qu.:-0.0054611
## Median : 0.0007910 Median : 0.0012112 Median : 0.0006754
## Mean : 0.0004701 Mean : 0.0005825 Mean : 0.0002618
## 3rd Qu.: 0.0061456 3rd Qu.: 0.0065114 3rd Qu.: 0.0064735
## Max. : 0.1175328 Max. : 0.0920982 Max. : 0.0874592
##
## Industrials (VIS) Consumer Staples (IYK) Energy (VDE)
## Min. :-0.1146117 Min. :-0.1006108 Min. :-1.983e-01
## 1st Qu.:-0.0048830 1st Qu.:-0.0038124 1st Qu.:-8.472e-03
## Median : 0.0007750 Median : 0.0007533 Median : 0.000e+00
## Mean : 0.0003894 Mean : 0.0004135 Mean : 4.387e-05
## 3rd Qu.: 0.0060990 3rd Qu.: 0.0050456 3rd Qu.: 8.643e-03
## Max. : 0.1190554 Max. : 0.0814688 Max. : 1.573e-01
##
## Utilities (VPU) Materials (VAW)
## Min. :-0.1122563 Min. :-0.1107048
## 1st Qu.:-0.0049323 1st Qu.:-0.0057641
## Median : 0.0008601 Median : 0.0007399
## Mean : 0.0003555 Mean : 0.0003596
## 3rd Qu.: 0.0061302 3rd Qu.: 0.0070013
## Max. : 0.1300513 Max. : 0.1182967
##
Dessa forma, temos:
3 Month Treasury Bill Yield
SP500
USDBRL
Info. Tech.
Health Care
Financials
Cons. Discretionary
Telecom
Industrials
Cons. Stamples
Energy
Utilities
Materials
Optou-se por remover Real Estate pela não disponibilidade de dados. Todos foram retirados do site Investing.com.
Como dito, a estratégia fara o inverso do que é feito pela estratégia de alocação de Volatility Timing, assim, ativos com maior volatilidade terão maior peso na nossa carteira. Assim, será chamada de Towards Volatility (TV). Além disso, por meio de análises setoriais, optou-se por retirar os seguintes setores da nossa amostra investível: Consumer Stamples, Energy, Industrials, Telecom, Materials. Acreditamos ser setores bastante regulados e com pouca oportunidade de ganhos no longo prazo.
Serão dois anos para a estimação dos parâmetros, após isso a carteira será rebalanceada anualmente. As volatilidades serão também estimadas anualmente, após o primeiro período.
Volatilidades Estimadas:
## Information Technology (VGT) Health Care (VHT)
## 0.1583778 0.1662788
## Financials (IYF) Consumer Discretionary (VCR)
## 0.1468720 0.1469113
## Utilities (VPU) Materials (VAW)
## 0.1514348 0.1640398
wTV <- (vol ^ 8 ) / sum(vol ^ 8)
wTV
## Information Technology (VGT) Health Care (VHT)
## 0.17875106 0.26386914
## Financials (IYF) Consumer Discretionary (VCR)
## 0.09776987 0.09797963
## Utilities (VPU) Materials (VAW)
## 0.12488159 0.23674871
Amostra do código utilizado para o cálculo dos retornos. Os demais serão bastante semelhantes, então opta-se por não mostra-los.
retorno_TV <- Return.portfolio(xts(retornos_loop_1[,-c(1:4)], retornos_loop_1$Datas),wTV)
retorno_ingenuo <- Return.portfolio(xts(retornos_loop_1[,-c(1:4)], retornos_loop_1$Datas),rep(1/6,6))
retorno_SP500 <- Return.portfolio(xts(retornos_loop_1[,3], retornos_loop_1$Datas),1)
names(retorno_TV) <- "Towards Volatility"
names(retorno_SP500) <- "SPY ETF"
names(retorno_ingenuo) <- "Alocação Ingenua"
Ret_Total <- cbind(retorno_TV, retorno_SP500, retorno_ingenuo)
## Information Technology (VGT) Health Care (VHT)
## 0.15890373 0.12291811
## Financials (IYF) Consumer Discretionary (VCR)
## 0.21049038 0.06303113
## Utilities (VPU) Materials (VAW)
## 0.10046501 0.34419163
## Information Technology (VGT) Health Care (VHT)
## 0.35660096 0.06893154
## Financials (IYF) Consumer Discretionary (VCR)
## 0.13507748 0.02497022
## Utilities (VPU) Materials (VAW)
## 0.13427440 0.28014539
## Information Technology (VGT) Health Care (VHT)
## 0.63519895 0.06341545
## Financials (IYF) Consumer Discretionary (VCR)
## 0.04354717 0.13369777
## Utilities (VPU) Materials (VAW)
## 0.01377694 0.11036372
## Information Technology (VGT) Health Care (VHT)
## 0.52514645 0.08364556
## Financials (IYF) Consumer Discretionary (VCR)
## 0.03852718 0.11095506
## Utilities (VPU) Materials (VAW)
## 0.01947880 0.22224696
## Information Technology (VGT) Health Care (VHT)
## 0.19234299 0.02920052
## Financials (IYF) Consumer Discretionary (VCR)
## 0.34033310 0.07985017
## Utilities (VPU) Materials (VAW)
## 0.17358849 0.18468473
Primeiro, vamos avaliar algumas métricas simples do nosso portfólio.
Percebemos que há uma maior volatilidade, na margem.
Vol_TV <- sd(Ret_Total$Towards.Volatility) * sqrt(252)
Vol_SPY <- sd(Ret_Total$SPY.ETF) * sqrt(252)
Vol_Ingenua <- sd(Ret_Total$Alocação.Ingenua) * sqrt(252)
Vol_TV
## [1] 0.1936623
## [1] 0.1809008
## [1] 0.1804734
Por fim, rodamos uma regressão para avaliar os retornos do fundo:
Ret_Total_Tibble<- as_tibble(Ret_Total)
dependente <- Ret_Total_Tibble$Towards.Volatility - retornos_reg[,2]
independente <- retornos_reg$SPY - retornos_reg[,2]
linear_model <- lm(as.ts(dependente) ~ as.ts(independente))
sumario <- summary(linear_model)
summary(linear_model)
##
## Call:
## lm(formula = as.ts(dependente) ~ as.ts(independente))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.0131755 -0.0014517 0.0000045 0.0014297 0.0145259
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.437e-04 6.855e-05 2.097 0.0362 *
## as.ts(independente) 1.044e+00 6.010e-03 173.774 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.002685 on 1536 degrees of freedom
## Multiple R-squared: 0.9516, Adjusted R-squared: 0.9516
## F-statistic: 3.02e+04 on 1 and 1536 DF, p-value: < 2.2e-16
(1+linear_model$coefficients[1])^252 - 1
## (Intercept)
## 0.03688487
acf(sumario$residuals)
hist(sumario$residuals)
jarqueberaTest(sumario$residuals)
##
## Title:
## Jarque - Bera Normalality Test
##
## Test Results:
## STATISTIC:
## X-squared: 334.956
## P VALUE:
## Asymptotic p Value: < 2.2e-16
##
## Description:
## Tue Feb 08 23:09:33 2022 by user: drumond
Ret_Total_Tibble<- as_tibble(Ret_Total_df)
dependente <- Ret_Total_Tibble$Towards.Volatility - retornos_reg[,2]
independente <- retornos_reg$SPY - retornos_reg[,2]
linear_model <- lm(as.ts(dependente) ~ as.ts(independente))
sumario <- summary(linear_model)
summary(linear_model)
##
## Call:
## lm(formula = as.ts(dependente) ~ as.ts(independente))
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.0131755 -0.0014517 0.0000045 0.0014297 0.0145259
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.644e-05 6.855e-05 0.386 0.7
## as.ts(independente) 1.044e+00 6.010e-03 173.774 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.002685 on 1536 degrees of freedom
## Multiple R-squared: 0.9516, Adjusted R-squared: 0.9516
## F-statistic: 3.02e+04 on 1 and 1536 DF, p-value: < 2.2e-16
(1+linear_model$coefficients[1])^252 - 1
## (Intercept)
## 0.006685128