簡體   English   中英

CVXPY最小化函數中的ValueError(最小方差優化)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM