0

numeric.js で quadprog を使用して、このポートフォリオの最適化 (最適な重みを見つける) で何が間違っているのかわかりません。

私のポートフォリオの制約は単純です。重みの合計は 1 になり、すべての重み (3 つの資産のそれぞれについて) は 0 から 1 の間でなければなりません (空売りなし、レバレッジなし)。制約が認識されず、重みが非常に高くなります (さらに負の値になります)。

    var constraintsmatrix = [[0,0,0,0], [1,0,1,0], [1,0,0,0]]; 
    var covmatrix = [[0.00020817,0.00016281,0.00009747],[0.00016281,0.00026680,0.00009912],[0.00009747,0.00009912,0.00019958]]; 
    var returnsmatrix = [0.1,0.05,0.1];
    var bvec = 1; // [1,0,0,0,0,0,0,1,1,1];
    var result = numeric.solveQP(covmatrix, returnsmatrix, constraintsmatrix, bvec);

ヒントをいただければ幸いです。ありがとう

4

1 に答える 1

1

制約が正しく指定されておらず、rhs が渡されていないと思います。次の制約が必要です (等式優先):

x1+x2+x3 = 1
x1 >= 0
x2 >= 0
x3 >= 0

これは、

A=[[1,1,0,0],[1,0,1,0],[1,0,0,1]]
b=[1,0,0,0]

ここに私が得るものがあります:

ここに画像の説明を入力

このモデルの目的は であることに注意してください0.5*x'Dx-d'x。また、5 つの引数を に渡すことにも注意してくださいsolveQP

于 2016-02-26T06:14:23.223 に答える