金融学习之十五 |
您所在的位置:网站首页 › xform组合是怎么选出来的 › 金融学习之十五 |
前一讲我们已经说了如何计算一个投资组合的预期收益率和预期收益率的波动率。然而,人们在投资的时候,往往都是在风险相同的情况下,选择收益最大的配置方案,而在收益相同的情况下,会选择风险最小的配置方案。但上讲的内容在整个计算过程中,有一个问题是没有解决的:在什么配置情况下,我能获得最大的投资收益率?(收益最大)或者说,在投资收益率确定的情况下,什么配置能让我的波动率最小?(风险最小) 这里就不得不引入一个概念:有效前沿。 我们通常将一定资产所有可能的投资组合称为可行集,而有效前沿就是可行集的一条包络线,在有效前沿上的所有的点,都满足在风险相同的情况下,收益最大的条件。也可以理解为,将每一个投资组合看成一个点,有效前沿就是由那些风险既定时,收益最大的点所构成的一条曲线。 在这里,我们还是沿用上讲中所用到的数据,意图找到该投资组合的有效前沿。 首先先绘制可行集 rp=[]#收益率 vp=[]#波动率 for i in np.arange(2000):#随机生成2000组配置比例数据 x=np.random.random(5) weights=x/sum(x) #每支股票的权重计算 rp.append(np.sum(weights*r_mean)) #计算组合的收益率 vp.append(np.sqrt(np.dot(weights,np.dot(r_cov,weights.T))))#计算组合的波动率,这里的r_mean,r_cov都是沿用上讲的数据,请自行回看并制作 from matplotlib import pyplot as plt plt.figure(figsize=(10,8)) plt.scatter(vp,rp) plt.title(u'投资组合收益率与波动率关系',fontsize=12) plt.xlabel(u'波动率') plt.ylabel(u'组合收益率',rotation=90) plt.grid('True') plt.show()
结果为: fun: 0.25304071202791995 jac: array([0.10406828, 0.17881957, 0.18455074, 0.19230236, 0.43532638]) message: ‘Optimization terminated successfully’ nfev: 42 nit: 7 njev: 7 status: 0 success: True x: array([1.18308268e-17, 3.22141466e-01, 2.00546211e-01, 2.03116061e-01, 2.74196263e-01]) 最后面的x就是各支股票的配置比例了。其实猜也猜得到,平安银行跌成那个惨样,不配置就是对了。 接着我们来求最小波动率及其对应的收益率。 cons_min={'type':'eq','fun':lambda x:np.sum(x)-1} result1=sco.minimize(vpmin,m,method='SLSQP',bounds=bnds,constraints=cons_min) rp_min=np.sum(r_mean*result1['x']) vp_min=result1['fun'] rp_min,vp_min结果为: (0.021836092618377573, 0.21781831209936875) 可以看到,最小波动率为0.2178的时候,收益率只有0.0218,没有风险就没有收益啊,富贵险中求。 最后,我们画出该投资组合的有效前沿: t=np.linspace(rp_min,0.3,100) #收益率从最低到30%,生成100个收益率 v=[] for i in t: cons=({'type':'eq','fun':lambda x:np.sum(x)-1},{'type':'eq','fun':lambda x:pzbl(x)[0]-i}) result=sco.minimize(vpmin,m,method='SLSQP',bounds=bnds,constraints=cons) v.append(result['fun']) plt.figure(figsize=(10,8)) plt.scatter(vp,rp) plt.plot(v,t,'r-',label=u'有效前沿',lw=2) plt.plot(vp_min,rp_min,'y*',label=u'全局最小波动率',markersize=14) plt.xlabel(u'波动率',fontsize=12) plt.ylabel(u'收益率',fontsize=12,rotation=90) plt.title(u'投资组合的有效前沿',fontsize=14) plt.legend(fontsize=12) plt.grid('True') plt.show()
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |