Primeiro, importamos a base de dados já com os retornos de cada fundo de investimento, dos índices de mercado e da taxa livre de risco.
dados <- read_excel("CotaFundos2015.xlsx")
## tibble [77 x 56] (S3: tbl_df/tbl/data.frame)
## $ Data : POSIXct[1:77], format: "2009-01-01" "2009-02-01" ...
## $ 190349...2 : num [1:77] 0.0316 -0.0302 0.0708 0.1361 0.104 ...
## $ 150053 : num [1:77] 0.00927 0.00953 0.05986 0.12951 0.09191 ...
## $ 155421 : num [1:77] 0.084637 0.000891 -0.010752 0.201939 0.13579 ...
## $ 190330 : num [1:77] 0.0362 -0.0261 0.0768 0.1411 0.1089 ...
## $ 190357 : num [1:77] 0.0341 -0.0277 0.0731 0.1368 0.106 ...
## $ 185302 : num [1:77] 0.0232 -0.0312 0.062 0.1341 0.1025 ...
## $ 202045 : num [1:77] -0.0063 0.00752 -0.05439 0.21118 0.07488 ...
## $ 190349...9 : num [1:77] 0.0316 -0.0302 0.0708 0.1361 0.104 ...
## $ 217530 : num [1:77] 0.044458 0.000414 0.063098 0.129208 0.099612 ...
## $ 153907 : num [1:77] 0.04678 -0.00977 0.04046 0.15095 0.09605 ...
## $ 93386 : num [1:77] 0.0205 -0.0134 0.0711 0.2078 0.1306 ...
## $ 21644 : num [1:77] 0.0622 -0.0236 0.0679 0.1072 0.1107 ...
## $ 48550 : num [1:77] 0.0296 -0.0277 0.0587 0.1443 0.1106 ...
## $ 195766 : num [1:77] 0.0486 -0.0274 0.0775 0.152 0.1134 ...
## $ 21636 : num [1:77] 0.047 -0.0287 0.0757 0.1502 0.1116 ...
## $ 138762 : num [1:77] 0.0428 -0.0213 0.0621 0.1517 0.1068 ...
## $ 217255 : num [1:77] 0.0436 -0.0783 0.0107 0.1299 0.0862 ...
## $ 220396 : num [1:77] 0.01266 0.00869 0.04096 0.09462 0.08189 ...
## $ 194931 : num [1:77] 0.0497 -0.0265 0.0785 0.153 0.1143 ...
## $ 78131 : num [1:77] 0.0332 0.0111 0.068 0.1931 0.1072 ...
## $ 6211 : num [1:77] 0.0357 -0.0231 0.069 0.141 0.1142 ...
## $ 200093 : num [1:77] 0.04192 -0.00289 0.04388 0.12317 0.10675 ...
## $ 87475 : num [1:77] 0.03114 -0.00538 0.06966 0.13623 0.11048 ...
## $ 212962 : num [1:77] -0.01157 0.05522 -0.00893 0.21299 0.12316 ...
## $ 123889 : num [1:77] 0.0372 -0.0666 0.0566 0.2838 0.1837 ...
## $ 152080 : num [1:77] 0.0284 -0.0239 0.0622 0.1443 0.1209 ...
## $ 94196 : num [1:77] 0.0284 -0.0239 0.0621 0.1439 0.1208 ...
## $ 211095 : num [1:77] 0.0154 0.019 0.0486 0.1177 0.0841 ...
## $ 152587 : num [1:77] 0.04834 -0.00447 0.07684 0.12636 0.11292 ...
## $ 157635 : num [1:77] 0.04688 -0.00369 0.07677 0.12348 0.11167 ...
## $ 82864 : num [1:77] 0.05545 -0.00793 0.08193 0.13225 0.12005 ...
## $ 205559 : num [1:77] 0.0474 -0.0222 0.0747 0.1438 0.121 ...
## $ 71323 : num [1:77] 0.03782 -0.00542 0.07572 0.12407 0.10729 ...
## $ 211850 : num [1:77] 0.03522 -0.00688 0.0769 0.12446 0.1075 ...
## $ 187615 : num [1:77] 0.0368 -0.0214 0.0774 0.1272 0.1157 ...
## $ 95664 : num [1:77] 0.0368 -0.0207 0.0773 0.1252 0.1133 ...
## $ 209333 : num [1:77] 0.0873 -0.023 0.0748 0.1312 0.1228 ...
## $ 12882 : num [1:77] 0.0411 -0.0209 0.0846 0.1415 0.12 ...
## $ 205753 : num [1:77] 0.0286 -0.0235 0.0615 0.1426 0.1194 ...
## $ 54321 : num [1:77] 0.0327 -0.0111 0.0636 0.1136 0.1072 ...
## $ 56553 : num [1:77] 0.04 -0.0221 0.0836 0.1405 0.1197 ...
## $ 205664 : num [1:77] 0.0283 -0.0248 0.0618 0.1456 0.1222 ...
## $ 205672 : num [1:77] 0.0283 -0.0242 0.0619 0.1446 0.1212 ...
## $ 231 : num [1:77] 0.05414 -0.00899 0.06813 0.13173 0.12379 ...
## $ 118771 : num [1:77] 0.0334 -0.0104 0.0644 0.1145 0.1082 ...
## $ 187364 : num [1:77] 0.0358 -0.0219 0.0764 0.1247 0.1132 ...
## $ 96326 : num [1:77] 0.0448 -0.0178 0.0838 0.1415 0.119 ...
## $ 15741 : num [1:77] 0.05729 -0.00636 0.06754 0.13112 0.12448 ...
## $ 122378 : num [1:77] 0.0318 -0.0209 0.0656 0.1477 0.124 ...
## $ 102644 : num [1:77] 0.05599 -0.00739 0.07049 0.13408 0.12594 ...
## $ 116963 : num [1:77] 0.03603 -0.00814 0.06706 0.11711 0.1107 ...
## $ IBOV : num [1:77] 0.0466 -0.0284 0.0718 0.1555 0.1249 ...
## $ IBRX : num [1:77] 0.03509 -0.00948 0.07397 0.13174 0.11026 ...
## $ IBRX50 : num [1:77] 0.0429 -0.0107 0.0792 0.1312 0.115 ...
## $ LFT Efetiva Mes: num [1:77] 0.01048 0.00855 0.00971 0.0084 0.00771 ...
Em seguida, tranformamos o dado em TimeSeries.
dado <- xts(dados[,2:55], dados$Data)
Código dos Fundos: 155421 e 202045 (Alavancados); 153907 (Não Alavancado).
F155421_m2 <- Modigliani(dado[,3, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## [1] 0.003585585
F155421_VaR <- VaR(dado[,3, drop = FALSE], method = "historical")
## 155421
## VaR -0.1115005
F155421_CVar <- CVaR(dado[,3, drop = FALSE], method = "historical")
## 155421
## ES -0.1325981
F155421_Sortino <- SortinoRatio(dado[,3, drop = FALSE])
## 155421
## Sortino Ratio (MAR = 0%) 0.05449491
F155421_MT_TM <- MarketTiming(dado[,3, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## Alpha Beta Gamma
## 155421 to IBOV -0.005211067 1.024173 0.4869749
F155421_MT_HM <- MarketTiming(dado[,3, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE],
method = "HM")
## Alpha Beta Gamma
## 155421 to IBOV -0.005655734 1.070738 -0.0888272
F202045_m2 <- Modigliani(dado[,7, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## [1] 0.01731992
F202045_VaR <- VaR(dado[,7, drop = FALSE], method = "historical")
## 202045
## VaR -0.05478146
F202045_CVar <- CVaR(dado[,7, drop = FALSE], method = "historical")
## 202045
## ES -0.07425254
F202045_Sortino <- SortinoRatio(dado[,7, drop = FALSE])
## 202045
## Sortino Ratio (MAR = 0%) 0.6961191
F202045_MT_TM <- MarketTiming(dado[,7, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## Alpha Beta Gamma
## 202045 to IBOV 0.006652831 0.4972612 0.3685761
F202045_MT_HM <- MarketTiming(dado[,7, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE],
method = "HM")
## Alpha Beta Gamma
## 202045 to IBOV 0.01021022 0.4558193 0.09515596
F153907_m2 <- Modigliani(dado[,10, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## [1] 0.0107489
F153907_VaR <- VaR(dado[,10, drop = FALSE], method = "historical")
## 153907
## VaR -0.06108546
F153907_CVar <- CVaR(dado[,10, drop = FALSE], method = "historical")
## 153907
## ES -0.06985995
F153907_Sortino <- SortinoRatio(dado[,10, drop = FALSE])
## 153907
## Sortino Ratio (MAR = 0%) 0.4150816
F153907_MT_TM <- MarketTiming(dado[,10, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## Alpha Beta Gamma
## 153907 to IBOV 0.003377431 0.6307323 -0.06019352
F153907_MT_HM <- MarketTiming(dado[,10, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE],
method = "HM")
## Alpha Beta Gamma
## 153907 to IBOV 0.003743092 0.6188578 0.02393646
Código dos fundos: 48550, 205559, 122378, 102644 e 116963
Criamos a careteira 1 e 2, sendo que ambas são equal weighted. Além disso, sem apresentar o código para tal, adicionamos os dados de retorno mensal dessas carteiras na df “dados”.
carteira1 <- (dado$`48550` + dado$`205559` + dado$`122378`)/3
carteira2 <- (dado$`102644` + dado$`116963`)/2
Primeiro, criamos o fator para os retornos e, em seguida, acumulamos esses retornos.
carteira1_fator <- carteira1 + 1
carteira2_fator <- carteira2 + 1
carteira1_acumulado <- prod(carteira1_fator)
## [1] 1.38253
carteira2_acumulado <- prod(carteira2_fator)
## [1] 1.634976
Assim, o valor do investimento, ao final do período, é:
20000*carteira1_acumulado
## [1] 27650.59
10000*carteira2_acumulado
## [1] 16349.76
E a taxa média anual de retorno é:
(carteira1_acumulado ^ (12/length(carteira1_fator)) - 1) * 100
## [1] 5.177608
(carteira2_acumulado ^ (12/length(carteira2_fator)) - 1) * 100
## [1] 7.962887
O procedimento adotado não poderia ser mais simples: o peso de cada ativo é, simplesmente, \(1/N\). Como ainda não fizemos nenhuma análise de retorno ajustado ao risco, essa forma de construir portfólios evita que o investidor aloque analisando apenas o retorno passado.
StdDev.annualized(dado[,55, drop = FALSE], scale = 12)
## carteira1
## Annualized Standard Deviation 0.1937749
SharpeRatio(dado[,55, drop = FALSE],
dado[,54, drop = FALSE],
FUN = "StdDev")
## carteira1
## StdDev Sharpe (Rf=0.8%, p=95%): -0.03930951
Modigliani(dado[,55, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## [1] 0.005621181
VaR(dado[,55, drop = FALSE], method = "historical")
## carteira1
## VaR -0.08017692
CVaR(dado[,55, drop = FALSE], method = "historical")
## carteira1
## ES -0.1010964
SortinoRatio(dado[,55, drop = FALSE])
## carteira1
## Sortino Ratio (MAR = 0%) 0.1679298
CAPM.alpha(dado[,55, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## [1] -0.0004843781
CAPM.beta(dado[,55, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## [1] 0.9444793
CAPM.beta.bull(dado[,55, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## [1] 0.9432212
CAPM.beta.bear(dado[,55, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE])
## [1] 0.9450019
TreynorRatio(dado[,55, drop = FALSE],
dado[,51, drop = FALSE],
dado[,54, drop = FALSE],
scale = 12)
## [1] -0.04656524
maxDrawdown(dado[,55, drop = FALSE])
## [1] 0.3095856
Visando evitar repetição desnecessária, daqui para frente, o código será omitido.
## carteira2
## Annualized Standard Deviation 0.1849712
## carteira2
## StdDev Sharpe (Rf=0.8%, p=95%): -0.002672667
## [1] 0.007784076
## carteira2
## VaR -0.07779479
## carteira2
## ES -0.09800527
## carteira2
## Sortino Ratio (MAR = 0%) 0.2441625
## [1] 0.001481251
## [1] 0.8945954
## [1] 0.8748852
## [1] 0.9345127
## [1] -0.02063078
## [1] 0.2306886
## X48550
## Annualized Standard Deviation 0.1996947
## X48550
## StdDev Sharpe (Rf=0.8%, p=95%): -0.08336615
## [1] 0.003020249
## X48550
## VaR -0.07978311
## X48550
## ES -0.1051712
## X48550
## Sortino Ratio (MAR = 0%) 0.0853083
## [1] -0.003048511
## [1] 0.968041
## [1] 0.9602829
## [1] 0.9517313
## [1] -0.07715338
## [1] 0.3988642
## X205559
## Annualized Standard Deviation 0.1867127
## X205559
## StdDev Sharpe (Rf=0.8%, p=95%): -0.003649801
## [1] 0.00772639
## X205559
## VaR -0.0745713
## X205559
## ES -0.09749943
## X205559
## Sortino Ratio (MAR = 0%) 0.2439483
## [1] 0.001447114
## [1] 0.9055431
## [1] 0.9119644
## [1] 0.9111592
## [1] -0.02134853
## [1] 0.2320699
## X122378
## Annualized Standard Deviation 0.1967135
## X122378
## StdDev Sharpe (Rf=0.8%, p=95%): -0.02807303
## [1] 0.006284538
## X122378
## VaR -0.07757892
## X122378
## ES -0.1042008
## X122378
## Sortino Ratio (MAR = 0%) 0.1839307
## [1] 0.000148263
## [1] 0.959854
## [1] 0.9574162
## [1] 0.972115
## [1] -0.03909914
## [1] 0.3077227
## X102644
## Annualized Standard Deviation 0.1867155
## X102644
## StdDev Sharpe (Rf=0.8%, p=95%): 0.00212141
## [1] 0.008067099
## X102644
## VaR -0.07682429
## X102644
## ES -0.09836678
## X102644
## Sortino Ratio (MAR = 0%) 0.2515056
## [1] 0.001744192
## [1] 0.8978378
## [1] 0.9005116
## [1] 0.942617
## [1] -0.01751385
## [1] 0.2492399
## X116963
## Annualized Standard Deviation 0.1843812
## X116963
## StdDev Sharpe (Rf=0.8%, p=95%): -0.007510704
## [1] 0.007498457
## X116963
## VaR -0.07496664
## X116963
## ES -0.09877113
## X116963
## Sortino Ratio (MAR = 0%) 0.2355393
## [1] 0.001218309
## [1] 0.891353
## [1] 0.8492588
## [1] 0.9264084
## [1] -0.02398997
## [1] 0.2290239