I am creating a stock portfolio and I want to run an efficiency frontier. I am running into an error with my portfolio optimum code. I am also noticing that all the stocks have the same monthly return. I am working through this error at the time. Any help with either of my problems would be greatly apprecieated
tickers <- c('DPZ','SPY','AMD','AAPL','TSLA','MSFT','V', 'WMT', 'SQ','EA','ATVI','AMZN','ROKU', 'PYPL','KO','AXP','CCL','DFS') Portfolio1 <- getSymbols.yahoo(tickers[1], from="2016-01-01", to= "2018-12-31", auto.assign=FALSE) Portfolio2 <- Portfolio1[,6] my_portfolio <- monthlyReturn(Portfolio2) for(i in 2:length(tickers)){ ticker1 <- c('DPZ','SPY','AMD','AAPL','TSLA','MSFT','V', 'WMT', 'SQ','EA','ATVI','AMZN','ROKU', 'PYPL','KO','AXP','CCL','DFS') getSymbols.yahoo(tickers[i], from="2016-01-01", to= "2018-12-31", auto.assign=FALSE) Portfolio2 <- Portfolio1[,6] holder <- monthlyReturn(Portfolio2) my_portfolio <- cbind( my_portfolio, holder ) } #Applies ticker name to column names (my_portfolio) <- tickers # Target 7% eff_port <- portfolio.optim(my_portfolio, pm = 0.07, shorts = TRUE) eff_port$pw #Efficiency Frontier #Mean Returns mu <- colMeans(my_portfolio) grid <- seq(0.005, 0.033, length.out = 60) vector_pm <- rep(NA, length(grid)) vector_psd <- rep(NA, length(grid)) eff_weights <- matrix(NA, 60, 18) #FOR LOOP for (i in 1 : length(grid)) { eff.port <- portfolio.optim(my_portfolio, pm = grid[i], shorts =TRUE) vector_pm[i] <- eff.port$pm vector_psd[i] <- eff.port$ps eff_weights[i, ] <- eff.port$pw }