我编写了一个函数A = function(W)(....)
,该函数计算12个资产的投资组合的风险价值作为W = [W1,.....,W12]的函数,它是权重的向量。
(它不是普通的VAR,它内部有很多循环,它会计算滚动度量,然后将其减小为单个值,这是我想最小化的东西)
我试图做的是使用诸如以下的约束来最小化此功能:
我所做的是:
constrOptim(theta = WW, A, grad = jacobian(A, W, method = "Richardson", side = NULL), ui=U, ci = C, method = c("Nelder_Mead", "BFGS", "CG", "L-BFGS", "SANN", "Brent"), hessian = FALSE)
其中:
U = matrix(c(ERV,-ERV, rep(-1,12), rep(1,12), diag(x=1,12,12)),ncol=12, byrow =TRUE)
C = matrix(c(0.0019,-0.0021, -1.01, 0.99, rep(0,12)))
问题是它花费了很长时间,而且我不知道是否有更快的方法以及我做对的方法。 最重要的是,我得到了: “警告消息:在if(method ==“ SANN”)中[:条件的长度大于1,并且仅使用第一个元素