我有一个权重投资组合,我在matlab中使用quadprog。 我拥有quadprog优化器的所有输入。我只是有一些麻烦,制定 约束matlab quadprog约束问题
我想我的约束,有一个下界0或1%,是有办法做到这一点,而maintainng我的目标函数
谢谢!
我有一个权重投资组合,我在matlab中使用quadprog。 我拥有quadprog优化器的所有输入。我只是有一些麻烦,制定 约束matlab quadprog约束问题
我想我的约束,有一个下界0或1%,是有办法做到这一点,而maintainng我的目标函数
谢谢!
我不确定我是否理解你的问题。
如果你的权重是按照百分比已经定义,它是直接的quadprog
定义:
x = quadprog(H, f, [], [], [], [], lb, [])
所以H
,e
和f
应的MATLAB描述中提供:
quadprog(H,f)
- 返回一个向量x
,最小化1/2 * x' * H * x + f' * x
。H
必须是正定的问题有一个有限的最小值。”
而且lb
是约束的矢量。例如,如果x
处于期望百分比的情况下的矢量3 x 1
,然后lb = [0.01; 0.01; 0.01]
是0.01
(1%
)
在另一方面,让我们假设该sum_{i=1}^{n} w_i
不等于1
。因此,w_i
不百分比来定义的。
THER因此,您需要的限制是p_i (percentage)= w_i/(sum w_i) >= 0.01
(在下限为1%
的情况下)。
注意,在这种情况下,约束是
w_i >= 0.01 * (sum w_i)
或者
-0.01 * (sum_{j=1}^{i-1} w_j) + 0.99 * w_i - 0.01 * (sum_{j=i+1}^{n} w_j) >= 0
或者
0.01 * (sum_{j=1}^{i-1} w_j) - 0.99 w_i + 0.01 * (sum_{j=i+1}^{n} w_j) <= 0
因此,日是Ax <= b
类型的约束。
所以
A_ij = 0.01
当i
为j
A_ij = -0.99
不同的,当i = j
和b = zeros(n, 1)
在这种情况下,你正在使用
x = quadprog(H, f, A, b)
我希望我帮你!
丹尼尔
喜丹尼尔,我想设置最低至是1%或0没什么between..Thats什么,我有 – qfd
挣扎@hdg给我一些时间来更新我的答案!好? – DanielTheRocketMan
@hdg我不明白你想要什么,或者你不理解我的解决方案。例如,考虑所有权重大于2%的情况。在这种情况下,受约束和不受约束的问题具有相同的解决方案。现在想象一下,无约束问题的权重等于0.5%,约束为1%。所以无约束的解决方案是不可接受的。所以受限制的问题应该考虑上面给出的约束条件。我不假定下限是0到1%之间的数字。如果你对上述问题有疑问,就问! – DanielTheRocketMan