我正在使用quadprog
link来查找最佳权重组合。
到目前为止,我已设法实现一个长期限制(即权重不能小于零w >= 0 and w1 + w2 + ... wN = 1)
,如下所示:
FirstDegree = zeros(NumAssets,1);
SecondDegree = Covariance;
Aeq = ones(1,NumAssets);
beq = 1;
A = -eye(NumAssets);
b = zeros(NumAssets,1);
x0 = 1/NumAssets*ones(NumAssets,1);
MinVol_Weights = quadprog(SecondDegree,FirstDegree,A,b,Aeq,beq,[],[],x0, options);
我现在要设置一个仅限短的约束,即所有权重需要加起来为-1,它们应该全部严格小于或等于零。怎么能改写呢?
答案 0 :(得分:2)
请注意,您可以将任何“大于”不等式a≥b重写为“小于”不等式 -a ≤-b 通过翻转标志。在您的示例中,选择
Aeq = ones(1,NumAssets);
beq = -1;
A = eye(NumAssets);
b = zeros(NumAssets,1);
这意味着Aeq*w == w(1) + w(2) + … + w(NumAssets) == -1
和A*w <= 0
与所有 i 的w(i) <= 0
相同。