Calculate portfolio standard deviation using the full equation.
w_1 <- w[1]
w_2 <- w[2]
w_3 <- w[3]
w_4 <- w[4]
w_5 <- w[5]
asset1 <- asset_returns_xts[,1]
asset2 <- asset_returns_xts[,2]
asset3 <- asset_returns_xts[,3]
asset4 <- asset_returns_xts[,4]
asset5 <- asset_returns_xts[,5]
sd_by_hand <-
sqrt(
(w_1^2 * var(asset1)) + (w_2^2 * var(asset2)) +
(w_3^2 * var(asset3)) +
(w_4^2 * var(asset4)) + (w_5^2 * var(asset5)) +
(2 * w_1 * w_2 * cov(asset1, asset2)) +
(2 * w_1 * w_3 * cov(asset1, asset3)) +
(2 * w_1 * w_4 * cov(asset1, asset4)) +
(2 * w_1 * w_5 * cov(asset1, asset5)) +
(2 * w_2 * w_3 * cov(asset2, asset3)) +
(2 * w_2 * w_4 * cov(asset2, asset4)) +
(2 * w_2 * w_5 * cov(asset2, asset5)) +
(2 * w_3 * w_4 * cov(asset3, asset4)) +
(2 * w_3 * w_5 * cov(asset3, asset5)) +
(2 * w_4 * w_5 * cov(asset4, asset5))
) %>%
`colnames<-`("Standard Devation")
rownames(sd_by_hand) <- c()
round(sd_by_hand * 100, 2)
Standard Devation
[1,] 2.66