微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

scipy.optimize.minimize 只返回initial_guess x0

如何解决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 举报,一经查实,本站将立刻删除。