Python CVXPY最小化函数中的值错误(最小方差优化)

Python CVXPY最小化函数中的值错误(最小方差优化),python,quantitative-finance,minimization,convex-optimization,cvxpy,Python,Quantitative Finance,Minimization,Convex Optimization,Cvxpy,我是一个初学者,正在将一个适用于最小方差优化的算法从scipy.minimize.optimize(未正确执行)移动到CVXPY R是预期收益,C是保兑率,

我是一个初学者,正在将一个适用于最小方差优化的算法从
scipy.minimize.optimize
(未正确执行)移动到
CVXPY

R
是预期收益,
C
是保兑率,
是无风险利率
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\u-mean.append(r)
,它应该是
frontier\u-mean.append(r.value)

错误应该准确地告诉您问题发生的线路。请得到那个信息。另外,如果你仔细阅读并改进你的问题,除了对未来的用户更有帮助之外,它可能会得到更好的回答。我使用的是ipython笔记本,它实际上没有说哪一行有问题。我将尝试使其成为mcv。这部分在我看来可疑
[sum(w)-context.allowableMargin==0]
。您真的打算在列表中传递一个布尔值作为参数吗?如果不是,你打算做什么?另外,您是说上面的代码打印您提到的值错误吗?如果是这样,则该
问题
类隐藏未处理的错误是很奇怪的,您需要关注该类中发生的情况。allowableMargin根据任意条件设置为1或更多;该约束隐式地确保了非杠杆交易的权重总和为1,如果杠杆起作用,则权重总和更高。如果我手动调试,我可以看到在定义“var”时抛出的错误;这可能是个问题吗?