Tôi đang thực hiện tối ưu hóa phương sai trung bình để giải quyết vấn đề tối ưu hóa danh mục đầu tư. Những gì tôi đang cố gắng làm là để giảm thiểu phương sai đối với cả hai hạn chế:Tối ưu hóa phương sai trung bình
- x1m1 + x2m2 + ... + xnmn = m
- x1 + x2 + ... + xn = 1
vì vậy, đây là đoạn code tôi đã làm:
################ Simulation for n=3 ################
################ Parameters ################
mu<-50 ## Mean of the portfolio
n<-3 ## Number of asset
m1<-30000 ## Size of the simulation
########### 3 Assets ############
x<- rnorm(m1,2,1)
y<- rnorm(m1,0.5,1.5)
z<- rnorm(m1,3.75,1)
d<-data.frame(x,y,z)
################ Solution Directe ################
Sol<-function(m1) {
A = matrix(nrow=n+2, ncol=n+2)
for (i in 1:n){
for (j in 1:n)
if(i==j) {
A[i,j] <- (2*var(d[,i]))
} else {
A[i,j] <- cov(d[,i],d[,j])
}
}
for (i in 1:n){
A[i,n+1] <- -mean(d[,i])
A[i,n+2] <- -1
}
for (j in 1:n){
A[n+1,j] <- mean(d[,j])
A[n+2,j] <- 1
}
for (i in 2:n+2){
for (j in 2:n+2)
if(i==j) {
A[i,j] <- 0
} else {
A[i,j] <- 0
}
}
A
Inv=solve(A)
Sol=Inv%*%c(0,0,0,m1,1)
result=list(x=Sol,A=A,Inv=Inv)
return(result)
}
Sol(mu)
Sol(mu)$x ## The solution
Sol(mu)$A
tôi biết, tôi đang sử dụng rất nhiều điều xấu cho R, nhưng tôi không thể tìm ra một giải pháp tốt hơn. Vì vậy, câu hỏi của tôi là nó đúng?
Bất kỳ sửa chữa và đề xuất nào để cải thiện quy trình này! vui lòng chia sẻ mã mở rộng của bạn trong R.
Rất cám ơn!
Bạn có thể nhận ma trận hiệp phương sai của các tài sản bằng cách: 'cov (d)' và có nghĩa là 'colMeans (d)'. –
'Mu' chơi gì ở đây? – Khashaa