允许参数组合中的空头头寸

时间:2016-04-20 17:30:12

标签: r constraints portfolio

我必须优化参数组合,其中权重取决于状态变量。假设我有以下返回矩阵(ret

[0.5 0.1 0.2 0.2
 0.4 0.1 0.9 0.1
 0.6 0.2 0.8 0.7] 

要构建参数组合,我必须将ret乘以“条件”权重矩阵。每个资产的权重取决于2个因变量AB

w1=as.vector(((x[1]*A)+(x[2]*B)))
w2=as.vector(((x[1]*A)+(x[2]*B))) 
w3=as.vector(((x[1]*A)+(x[2]*B)))
w4=as.vector(((x[1]*A)+(x[2]*B)))

....#2与w1w2w3w4相关的约束

,权重矩阵构造如下:

  w=cbind(w1,w2,w3,w4)

最后,通过组合返回和权重向量,我们得到返回矩阵

  r=w*ret

然后,投资组合, portfolio<-rowSums(r)

问题是,在计算r之前,我需要添加2个约束:

  • 权重总和为一个
  • 允许空头头寸。

例如,我必须得到以下w矩阵

[0.25 -0.25  0.5  0.5
 0.3  -0.25  0.6 -0.35
 0.4  -0.4   0.6  0.4 ]

这是修改后的代码

charact<-cbind(A,B)
func<-function(x,ret,charact) {    #x: parameters (x1 and x2)
  w1=as.vector(((x[1]*A)+(x[2]*B))) #the weight of each asset depends on 2 charac A and B
  w2=as.vector(((x[1]*A)+(x[2]*B))) 
  w3=as.vector(((x[1]*A)+(x[2]*B)))
  w4=as.vector(((x[1]*A)+(x[2]*B)))
  w=cbind(w1,w2,w3,w4)
  # Weight vector should sum to one
  pen=sum(abs(rowSums(w) - c(1,1,1) )) *10
  r=w*ret

  #Calculating utility
  u<-1/nrow(r)*sum((1+rp)^(1-5)/(1-5))
  obj<--u+pen
  return(obj)
}

0 个答案:

没有答案