【问题标题】:Scipy.optimize minimize 'inequality constraints incompatible'Scipy.optimize 最小化“不兼容的不等式约束”
【发布时间】:2020-07-27 05:47:14
【问题描述】:

我正在尝试将 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 的数据帧。输出与我开始时相同的 0.01 偶数权重和此失败消息:

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

状态:4 成功:错误

【问题讨论】:

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


    【解决方案1】:

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

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

    如果你没有注意到任何事情,没关系。我花了 2 天的时间才意识到我没有将 PCT_CHANGE() 结果除以 100。时间花的很值。我得到了与 15+ 的幂的相关性。最后一行应该是这样的,原始问题中的最小化函数可以正常工作。

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

    抱歉,如果没有上述文章,有人花时间做这件事!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 2017-07-07
      • 2019-03-12
      • 1970-01-01
      • 2018-11-19
      相关资源
      最近更新 更多