Dear R helpers I have following data
stocks <- c("ABC", "DEF", "GHI", "JKL") prices_df <- data.frame(ABC = c(17,24,15,22,16,22,17,22,15,19), DEF = c(22,28,20,20,28,26,29,18,24,21), GHI = c(32,27,32,36,37,37,34,23,25,32), JKL = c(47,60,60,43,62,38,44,53,61,41)) sd_prices <- c(3.3483,3.9497,4.9721,9.3387) # standard deviations say(sd1, sd2, sd3, sd4) weights <- c(0.10, 0.25, 0.20, 0.45) # say (w1, w2, w3, w4) I need to calculate the standard deviation of the portfolio. The formula is stdev_portfolio = sqrt((w1*sd1)^2+(w2*sd2)^2+(w3*sd3)^2+(w4*sd4)^2 + 2*w1*w2*sd1*sd2*correlation(ABC, DEF)+ 2*w1*w3*sd1*sd3*correlation(ABC, GHI)+ 2*w1*w4*sd1*sd4*correlation(ABC, JKL)+ 2*w2*w3*sd2*sd3*correlation(DEF, GHI)+ 2*w2*w4*sd2*sd4*correlation(DEF, JKL)+ 2*w3*w4*sd3*sd4*correlation(GHI, JKL)) OR if we define P = sd_prices*weights I need to calculate stdev_portfolio = sqrt((P1)^2+(P2)^2+(P3)^2+(P4)^2 + 2*P1*P2*correlation(ABC, DEF)+ 2*P1*P3*correlation(ABC, GHI)+ 2*P1*P4*correlation(ABC, JKL)+ 2*P2*P3*correlation(DEF, GHI)+ 2*P2*P4*correlation(DEF, JKL)+ 2*P3*P4*correlation(GHI, JKL)) In reality I will be dealing with not 4, but many stocks and hence I can't generalize this as stdev_portfolio = sqrt((P[1])^2+(P[2])^2+(P[3])^2+(P[4)^2 + 2*P[1]*P[2]*correlation(ABC, DEF)+ 2*P1*P3*correlation(ABC, GHI)+ 2*P1*P4*correlation(ABC, JKL)+ 2*P2*P3*correlation(DEF, GHI)+ 2*P2*P4*correlation(DEF, JKL)+ 2*P3*P4*correlation(GHI, JKL)) Kindly advise as to how do I calculate the portfolio standard deviation? Thanking in advance Amelia Vettori [[alternative HTML version deleted]]
______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.