python求方差、利用return函数_基于scipy-optimiz的python中Markowitz均值-方差优化

我试图找到10只股票组合的有效边界。我首先加载数据(data),其中包括104个周期内10只股票的周收益。然后,我使用以下代码随机化权重来绘制任意投资组合:def random_weights(n):

a = np.random.rand(n)

return a/a.sum()

def initial_portfolio(data):

cov = data.cov()

expected_return = np.matrix(data.mean())

weights = np.matrix(random_weights(expected_return.shape[1]))

mu = weights.dot(expected_return.T)

sigma = np.sqrt(weights.dot(cov.dot(weights.T)))

var = weights.dot(cov.dot(weights.T))

return mu[0,0], sigma[0,0], var[0,0]#, cov, expected_return, weights

def initial_portfolio_other(data):

cov = np.cov(data)

expected_return = np.matrix(data.mean())

weights = np.matrix(random_weights(expected_return.shape[1]))

mu = weights.dot(expected_return.T)

sigma = np.sqrt(weights * cov.dot(weights.T))

var = weights * cov.dot(weights.T)

return cov, expected_return, weights

n_portfolios = 1000

means, stds, var = np.column_stack([

initial_portfolio(data)

for _ in range(n_portfolios)

])

plt.xlabel('Standard deviation')

plt.ylabel('Expected return')

plt.scatter(stds, means)

plt.axis([0.02, 0.035, 0.002,0.009])

plt.figure(figsize = (8,6))

plt.show()

到目前为止,代码运行良好,接下来我想通过最小化1000周收益的投资组合方差来找到有效边界。这是我目前掌握的密码

^{pr2}$

输出是1000个完全相同的方差的列表,当然还有1000组完全相同的权重。我知道少了点什么,但我就是不知道是什么。我一直看到其他人正在使用minimize函数中的args参数,但老实说,我不知道如何或通过什么来传递它。如果有人在python优化方面有任何经验,特别是在均值方差优化方面,我将非常感谢您的帮助。在

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值