我正在尝试最小化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 成功:错误
答案 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
很抱歉,如果没有上述内容,有人花时间了!