ポートフォリオの分散を最小化する重みを選択する方法を探しています。
例えば:
私は 3 つのアセットを持っています。それらのリターンは以下の配列で与えられます:
import numpy as np
x = np.array([[0.2,-0.1,0.5,-0.2],[0, -0.9, 0.8, 0.2],[0.4,0.5,-0.3,-.01]])
重みの合計が 1 になる限り、好きなように重みを付けることができます。ポートフォリオの分散を最小限に抑えるような重みを探しています。
ランダムに選択された重みの 2 つの例を次に示します。
weight_1 = [0.3,0.3,0.4]
weighted_x_1 = [ele_x*ele_w for ele_x,ele_w in zip (x,weight_1)]
var_1 = np.var(sum(weighted_x_1))
weight_2 = [-0.2,0.4,0.8]
weighted_x_2 = [ele_x*ele_w for ele_x,ele_w in zip (x,weight_2)]
var_2 = np.var(sum(weighted_x_2))
出力:
>>> var_1
0.02351675000000001
>>> var_2
0.012071999999999999
2 番目の方法の方が優れています。
これを実行できる Python (または Python ライブラリ) メソッドはありますか? 上記を行うためにどの方法を使用すべきかについての提案がない場合は、歓迎します。
前もって感謝します