13 Group 12
Managers: Julie Luftglas, Priel Zimberg, and Thiago Molon
13.1 The setup
<- c("VALE3.SA", "PETR3.SA", "CSAN3.SA", "ABEV3.SA", "RENT3.SA", "LREN3.SA", "RADL3.SA", "HYPE3.SA", "MDIA3.SA", "BRFS3.SA", "TOTS3.SA", "SQIA3.SA", "WEGE3.SA", "RAIL3.SA", "SBSP3.SA", "EGIE3.SA", "CCRO3.SA", "ENEV3.SA", "STBP3.SA", "ITUB4.SA","BBAS3.SA", "SANB11.SA", "B3SA3.SA")
p12_list <- c("0.1432610332" , "0.0099774435" , "0.0030409937" , "0.0345260994" ,"0.0119591851","0.0042846775" , "0.0355244722" , "0.0740462817" , "0.0453380925" , "0.0113319981" , "0.0240854384" , "0.0395698086" , "0.4160391972" , "0.0116140229", "0.0067039882" , "0.0124718950" , "0.0012684350" , "0.0475395738" , "0.0146208298" , "0.0417926527" , "0.0052964620", "0.0019407557" , "0.0037666638" )
p12_w <- c("BRL", "BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL","BRL")
p12_exc <- cbind(p12_list, p12_w, p12_exc)
p12_wlist colnames(p12_wlist) <- c('ticker','weights','Currency')
#Download data Financial
<- yf_get(tickers = p12_list, first_date = start, last_date = end,freq_data = "daily",thresh_bad_data = 0.5)
p12 <- p12[, c("ticker", "ref_date", "price_adjusted" ) ]
p12 <- merge(p12, p12_wlist , by = "ticker")
p12 # Download data Exchange rate
getFX("BRL/USD",from=start , to = end)
<- as.data.frame(BRLUSD)
exchanges $ref_date <- as.Date(rownames(exchanges))
exchanges# Merge
<- merge(p12, exchanges, by = "ref_date")
p12 $BRL.USD[p12$Currency == "USD"] <- 1
p12# Adjusting currency
$price_adj <- p12$price_adjusted * p12$BRL.USD
p12# Calculating return
<- p12 %>%
ret group_by(ticker) %>%
tq_transmute(select = price_adj,
mutate_fun = periodReturn,
period = "daily",
col_rename = "ret")
<- merge(p12, ret, by = c("ref_date", "ticker"))
p12 # Data tabulation
$ret_product <- p12$ret * as.numeric(p12$weights)
p12
# Creating a df of portfolios return
<- p12 %>%
p12_ret group_by(ref_date) %>%
summarise_at(vars(ret_product),
list(p12_return = sum)) %>% as.data.frame()
#Calculating cumulative return per day
for(i in (1:nrow(p12_ret) ) ) {
$p12_cum[i] <- Return.cumulative(p12_ret$p12_return[1:i])
p12_ret
}#Calculating cumulative return total
<- data.frame(matrix(NA, nrow = 1,ncol = 4))
p12_sharpe colnames(p12_sharpe) <- c('p12_return', 'p12_sd', 'p12_rf' , 'p12_sharpe')
$p12_return <- Return.cumulative(p12_ret$p12_return)
p12_sharpe$p12_sd <- sd(p12_ret$p12_return[2:nrow(p12_ret)])
p12_sharpe$p12_rf <- (1+0.03)^(nrow(p12_ret)/252) -1
p12_sharpe$p12_sharpe <- (p12_sharpe$p12_return - p12_sharpe$p12_rf) / p12_sharpe$p12_sd p12_sharpe
13.2 The portfolio
This is the portfolio of this group:
ticker weights Currency
[1,] "VALE3.SA" "0.1432610332" "BRL"
[2,] "PETR3.SA" "0.0099774435" "BRL"
[3,] "CSAN3.SA" "0.0030409937" "BRL"
[4,] "ABEV3.SA" "0.0345260994" "BRL"
[5,] "RENT3.SA" "0.0119591851" "BRL"
[6,] "LREN3.SA" "0.0042846775" "BRL"
[7,] "RADL3.SA" "0.0355244722" "BRL"
[8,] "HYPE3.SA" "0.0740462817" "BRL"
[9,] "MDIA3.SA" "0.0453380925" "BRL"
[10,] "BRFS3.SA" "0.0113319981" "BRL"
[11,] "TOTS3.SA" "0.0240854384" "BRL"
[12,] "SQIA3.SA" "0.0395698086" "BRL"
[13,] "WEGE3.SA" "0.4160391972" "BRL"
[14,] "RAIL3.SA" "0.0116140229" "BRL"
[15,] "SBSP3.SA" "0.0067039882" "BRL"
[16,] "EGIE3.SA" "0.0124718950" "BRL"
[17,] "CCRO3.SA" "0.0012684350" "BRL"
[18,] "ENEV3.SA" "0.0475395738" "BRL"
[19,] "STBP3.SA" "0.0146208298" "BRL"
[20,] "ITUB4.SA" "0.0417926527" "BRL"
[21,] "BBAS3.SA" "0.0052964620" "BRL"
[22,] "SANB11.SA" "0.0019407557" "BRL"
[23,] "B3SA3.SA" "0.0037666638" "BRL"
Checking the sum of weights. The sum of weights is:
13.2.1 The performance
The current cumulative return of this Portfolio is 7.84 percent.
The current standard deviation of daily returns of this Portfolio is 2.4 percent.
The current Sharpe of this portfolio is 3.1576.
ggplot(p12_ret, aes(x= ref_date, y= p12_cum) ) + geom_line(color = "bisque3", size = 1.25) +
labs(y = "Portfolio return",
x = "Time",
title = "Group 12: Julie Luftglas, Priel Zimberg, and Thiago Molon") + theme_solarized()