最优投资组合权重(最优投资组合计算)

2023-07-08 23:16:39
股票学习网 > 怎么卖股票 > 最优投资组合权重(最优投资组合计算)

《测绘学报》

构建与学术的桥梁 拉近与权威的距离

公募债券与私募债券的区别

''' scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None) fun:最优化的目标函数 x0:初始猜测值 method:优化方法,常用的方法有'BFGS','SLSQP'等 bounds:变量的边界值,元组形式 constraints:约束条件,字典形式({'type':'eq','fun':约束条件一},{'type':'ineq','fun':约束条件二}),'eq'表示等于0,'ineq'表示大于等于0 返回值 fun:目标函数值 sucess:布尔值,true成功 x:最优解 ''' # 求解最优权重 import scipy.optimize as sco #定义一个最优化函数 def f(w): w = np.array(w) #设置投资组合每只股票的权重 Rp_opt = np.sum(w*R_mean) #计算最优投资组合的预期收益率 Vp_opt = np.sqrt(np.dot(w,np.dot(R_cov,w.T))) #计算最优投资组合的收益波动率 return np.array([Rp_opt,Vp_opt]) def Vmin_f(w): return f(w)[1] #返回f(w)函数结果的波动率 #输入最优解条件,预期收益设定10% cons = ({'type':'eq','fun':lambda x:np.sum(x)-1},{'type':'eq','fun':lambda x:f(x)[0]-0.1}) #输入边界条件 bnds = tuple((0,1) for x in range(len(R_mean))) #生成初始权重(平均分配) frist_weight = len(R_mean)*[1/len(R_mean)] #求最值 result = sco.minimize(Vmin_f,frist_weight,method='SLSQP',bounds=bnds,constraints=cons) # 获取最优化结果的权重 result['x'].round(4) for i in np.arange(len(R_cov)): print('投资组合预期收益率10%时' + R_cov.columns[i] +'的权重:',result['x'][i].round(4)) #投资组合预期收益率10%时A的权重: 0.3109 #投资组合预期收益率10%时B的权重: 0.0859 #投资组合预期收益率10%时C的权重: 0.0 #投资组合预期收益率10%时D的权重: 0.5507 #投资组合预期收益率10%时E的权重: 0.0525

作者:piikee | 分类:怎么卖股票 | 浏览:35 | 评论:0