![](/img/trans.png)
[英]CVXPY country/sector/industry like constraints for min variance optimization
[英]ValueError in CVXPY minization function (Minimum Variance Optimization)
我是一個初學者,正在將可用於最小方差優化的算法從scipy.minimize.optimize
(無法正常執行)轉移到CVXPY
。
R
是預期收益, C
的coveriances和rf
的無風險利率。 w
是最優權重, r
是沿着有效邊界計算的權重的各種方式。
當我運行下面的代碼時,我得到:
ValueError: setting an array element with a sequence.
我相信var在這里有錯,但我不知道該如何構造它。 洞察力不勝感激。 最重要的是, 其余的代碼可能還有其他錯誤,因此,如果發現任何錯誤,請指出它們!
def solve_frontier(R, C, rf, context):
frontier_mean, frontier_var, frontier_weights = [], [], []
n = len(R)
w = cvx.Variable(n)
r = cvx.Parameter(sign='positive')
mean_1 = sum(R*w)
var = dot(dot(w, C), w)
penalty = (1/100)*abs(mean_1-r)
prob = cvx.Problem(cvx.Minimize(var + penalty),
[sum(w)-context.allowableMargin == 0])
r_vals = linspace(max(min(R), rf), max(R), num=20)
for i in range(20):
r.value = r_vals[i]
prob.solve()
frontier_mean.append(r)
frontier_var.append(compute_var(prob.value, C))
frontier_weights.append(prob.value)
print "status:", prob.status
return array(frontier_mean), array(frontier_var), frontier_weights
問題出在frontier_mean.append(r)
,應該是frontier_mean.append(r.value)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.