如何解决scipy.optimize.minimize 只返回initial_guess x0
- 权重之和等于 1
- 每个权重的界限是 (0.05,0.3)
- 最后一个对我来说很困难的是:所有的权重都应该是 5% 的倍数
我制作了这段代码,但它给了我最初的解决方案“init_guess”:
def minimize_vol(target_return,er,covmat):
n = er.shape[0]
init_guess = np.repeat(1/n,n)
#init_guess = np.array([0.3,0.25,0.1,0.2,0.15])
bounds = ((0.05,0.3),)*n
return_is_target = {
'type' : 'eq','args' : (er,),'fun' : lambda weights,er : target_return - portfolio_return(weights,er)
}
weights_sum_to_1 = {
'type' : 'eq','fun' : lambda weights : np.sum(weights)-1
}
multiplicity = {
'type' : 'eq','fun' : lambda weights : (weights*100)%5
}
results = minimize(portfolio_vol,init_guess,args = (covmat,method = "SLSQP",options= {'disp' : False},constraints = (return_is_target,weights_sum_to_1,multiplicity),bounds = bounds
)
return results.x
感谢您的回答
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。