Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
braverock
GitHub Repository: braverock/portfolioanalytics
Path: blob/master/sandbox/GMV_analytical.R
1433 views
1
GMV = function (sigma) {
2
3
#'Global Minimum Variance
4
#'Calculates the portfolio weights in accordance with a minimum variance strategy.
5
#'From Goltz, F. & Lodh, A. 2013 "Scientific Beta Efficient Minimum Volatility Indices " EDHEC-Risk Institute Scientific Beta(2013)
6
#'@Title Global Minimum Variance
7
#'@author Corporate Knights Inc.: Michael Fong /email{[email protected]}, Kyle Balkissoon /email{[email protected]}
8
#'@param sigma = Covariance matrix of returns
9
#'
10
#'
11
step1 = sigma
12
unit_vector = c(rep(1,ncol(step1)))
13
# Calculate GMV portfolio weight matrix
14
step2 = (step1)^(-1)%*%unit_vector
15
step3 = as.numeric(t(unit_vector)%*%(step1)^(-1)%*%unit_vector)
16
step4 = step2/step3
17
# Long-Only Adjustment - Set negative weights to zero
18
step5 = ifelse(step4<0,0,step4)
19
# Normalize Weights
20
step6 = step5/sum(step5)
21
return(step6)
22
}
23