Scipy.optimize最小化“不平等约束不兼容”

时间:2020-04-14 13:18:41

标签: python scipy-optimize scipy-optimize-minimize

我正在尝试最小化100种证券投资组合中的差异。

def portvol(w, x):
    return np.dot(w.T, np.dot(x, w))*252

covmat = annreturn.cov()
w0 = np.ones(len(covmat)) * (1 / len(covmat)) #equal weighting initially
bounds = ((0,1),) * len(covmat)
constraints =  {'fun': lambda i: np.sum(i)-1.0, 'type': 'eq'}
optweights = minimize(portvol, w0, args = (covmat), method = 'SLSQP', bounds = bounds, constraints = 
      constraints)

annreturn.cov()是100x100的DataFrame。输出是相同的.01,甚至是我开始使用的权重,也显示以下失败消息:

message: 'Inequality constraints incompatible'
nfev: 102
 nit: 1
njev: 1

状态:4 成功:错误

1 个答案:

答案 0 :(得分:0)

这就是我计算年度回报的方式...

annreturn = data.pct_change() #again, assuming percentage change 
annreturn = annreturn.iloc[1:]
annreturn = (annreturn+1)**252-1

如果您没有发现任何问题,那就没关系。我花了2天的时间才意识到,我并没有将PCT_CHANGE()结果除以100。我与15岁以上的人有联系。这是最后一行的样子,原始问题中的minimal函数可以正常工作。

annreturn = (annreturn/100+1)**252-1

很抱歉,如果没有上述内容,有人花时间了!