10—1马克维茨的资产组合理论
- 格式:ppt
- 大小:306.50 KB
- 文档页数:30


最优投资组合--马科维茨投资组合理论<代码已经过期,其中爬⾍链接已经失效>⼀:马科维茨投资组合理论投资组合(Portfolio)是由投资⼈或⾦融机构所持有的股票、、产品等组成的集合。
投资组合的⽬的在于分散风险,按粗略的分类有三种不同的模式可供运⽤,即积极的、中庸的和保守的。
投资组合理论[1]:若⼲种组成的,其收益是这些证券收益的加权平均数,但是其不是这些证券风险的加权平均风险,投资组合能降低。
⼈们进⾏投资,本质上是在不确定性的收益和风险中进⾏选择。
投资组合理论⽤均值-⽅差来刻画这两个关键因素。
其中均值是指投资组合的期望收益率,它是单只证券的期望收益率的加权平均,权重为相应的投资⽐例。
⽅差是指投资组合的收益率的⽅差。
我们把收益率的标准差称为波动率,它刻画了投资组合的风险。
那么在证券投资决策中应该怎样选择收益和风险的组合呢?投资组合理论主要通过研究"理性投资者"优化投资组合。
所谓理性投资者:是指在给定期望风险⽔平下对期望收益进⾏最⼤化,或者在给定期望收益⽔平下对期望风险进⾏最⼩化。
⼆:求解最优投资组合过程本⽂最优投资组合思想是:在给定期望收益⽔平下对期望风险进⾏最⼩化的投资。
利⽤的是马克维茨的均值-⽅差模型:本⽂实现最优投资组合的主要步骤:1:得到夏普⽐率最⼤时的期望收益2:得到标准差最⼩时的期望收益3:根据1,2所得的期望收益,获取预估期望收益范围,在预估期望收益范围内取不同值,获取其最⼩⽅差,得到预估期望收益与最⼩⽅差的关系即获得最⼩⽅差边界。
4:最⼩⽅差边界位于最⼩⽅差资产组合上⽅为有效边界5;获取最⼩⽅差边界上最⼤夏普⽐率,绘出CML6:得到最⼩⽅差边界上最⼤夏普⽐率处各股票权重三:实证数据⽤例:1:获取10股股票历史收盘价记录(2014.07.01—2017.07.01)(附件:stocks.xlsx)stocks=['601166', #兴业银⾏'600004', #⽩云机场'300099', #精准信息'601328', #交通银⾏'601318', #中国平安'601398', #中设股份'000333', #美的集团'600036', #招商银⾏'600016', #民⽣银⾏'601818'] #光⼤银⾏1.1:股票历史收盘价趋势折线图如下:2:计算预期收益率:连续复利收益率即对数收益率(附件:stock_revs.xlsx)revs=np.log(data/data.shift(1))3:⽤蒙特卡洛模拟产⽣⼤量随机组合,得到随机权重投资组合散点图如下:4:最优投资组合步骤:4.1:得到夏普⽐率最⼤时的期望收益def max_sharpe(weights):return -getPortfolioInformation(weights)[2]opts=sco.minimize(max_sharpe,numb * [1. / numb,], method='SLSQP',bounds=bnds, constraints=cons)getPortfolioInformation(opts['x']).round(4) #opts['x'] :得到夏普⽐率最⼤时的权重,收益率,标准差,夏普⽐率#此时权重:[ 3.21290938e-01 5.00704152e-02 8.67642540e-02 0.00000000e+00 5.41874393e-01 0.00000000e+00 0.00000000e+00 0.00000000e+000.00000000e+00 5.15579333e-16]# [收益率= 0.478 标准差=0.251 夏普⽐率=1.904]4.2: minimize:优化,最⼩化风险:⽅差最⼩化def min_variance(weights):return getPortfolioInformation(weights)[1] ** 2optv=sco.minimize(min_variance, numb * [1. / numb,],method='SLSQP', bounds=bnds,constraints=cons)#此时权重:[ 1.18917047e-01 1.00755105e-01 1.04406546e-01 4.08438380e-02 4.53999968e-02 0.00000000e+00 0.00000000e+00 9.16150836e-18 5.89677468e-01 1.52059355e-17]# [收益率= 0.309 标准差= 0.22 夏普⽐率=1.405]4.3:获取有效边界4.3.1:获取最⼩⽅差边界曲线图,最⼩⽅差资产组合,随机组合散点图:指定收益率范围 [0.1545, 0.5736 ],求最⼩⽅差:def min_sd(weights):return getPortfolioInformation(weights)[1]tvols = []infor_min_sd=[]#获取在指定期望收益下的最⼩标准差:for tret in trets:cons = ({'type': 'eq', 'fun': lambda x: getPortfolioInformation(x)[0] - tret},{'type': 'eq', 'fun': lambda x: np.sum(x)-1})res = sco.minimize(min_sd, numb * [1. / numb,], method='SLSQP',bounds=bnds, constraints=cons)infor_min_sd.append(res) # tret 唯⼀的tvols.append(res['fun']) #获取函数返回值,即最⼩标准差tvols = np.array(tvols)ind_min_sd = np.argmin(tvols) #最⼩⽅差组合处进⾏划分,分两段evols = tvols[:ind_min_sd]erets = trets[:ind_min_sd]tck = sci.splrep(erets,evols ) #B-Spline样条曲线函数 #前⼀个必须是唯⼀y2 = np.linspace(np.min(erets), np.max(erets), 100)x2 = sci.splev(y2, tck)evols = tvols[ind_min_sd:]erets = trets[ind_min_sd:]tck = sci.splrep(evols, erets)x3 = np.linspace(np.min(evols), np.max(evols), 100)y3 = sci.splev(x3, tck)plt.figure(figsize=(10, 8))plt.scatter(pvols, prets, c=prets/pvols,s=5, marker='.')plt.plot(x2, y2,'g',label=u"最⼩⽅差边界")plt.plot(x3, y3,'g',label=u"最⼩⽅差边界")plt.axhline(y=rev_min_variance,color='b',label=u"最⼩⽅差资产组合") #最⼩⽅差资产组合plt.plot(getPortfolioInformation(opts['x'])[1], getPortfolioInformation(opts['x'])[0],'r*', markersize=5.0)#最⼤夏普⽐率plt.plot(getPortfolioInformation(optv['x'])[1], getPortfolioInformation(optv['x'])[0],'y*', markersize=5.0)#最⼩⽅差plt.grid(True)plt.xlabel('Expect Volatility')plt.ylabel('Expect Return')plt.show()结果显⽰如下4.3.2:获取有效边界曲线图:plt.figure(figsize=(10, 8))plt.scatter(pvols, prets, c=prets/pvols,s=5, marker='.')plt.plot(x3, y3,'g',label=u"有效边界")plt.plot(getPortfolioInformation(opts['x'])[1], getPortfolioInformation(opts['x'])[0],'r*', markersize=8.0)#最⼤夏普⽐率plt.plot(getPortfolioInformation(optv['x'])[1], getPortfolioInformation(optv['x'])[0],'y*', markersize=8.0)#最⼩⽅差plt.grid(True)plt.xlabel('Expect Volatility')plt.ylabel('Expect Return')plt.show()5:获取最⼩⽅差边界上最⼤夏普⽐率,绘出CML5.1: B-Spline样条曲线的参数tck = sci.splrep(evols, erets)5.2: B-Spline样条曲线函数def f(x):return sci.splev(x, tck, der=0)5.3: B-Spline样条曲线函数⼀阶导数def df(x):return sci.splev(x, tck, der=1)5.4:构造⾮线性函数,使函数fun(x)⽆限逼近0向量, risk_free_return:⽆风险收益,默认为0.00def fun(x, risk_free_return=0.00):e1 = risk_free_return - x[0]e2 = risk_free_return + x[1] * x[2] - f(x[2])e3 = x[1] - df(x[2])return e1, e2, e35.5 利⽤最⼩⼆乘法⽆限逼近0,⽆风险收益率:0,斜率:0.5,初始⾃变量:zoneX = sco.fsolve(fun, [0.00, 0.50, zone])plt.figure(figsize=(12, 6))#圆点为随机资产组合plt.scatter(pvols, prets,c=prets/ pvols,s=5, marker='.')#随机组合散点集plt.plot(x3, y3,'g',label=u"有效边界")plt.plot(getPortfolioInformation(opts['x'])[1], getPortfolioInformation(opts['x'])[0],'g*', markersize=5.0)#最⼤夏普⽐率plt.plot(getPortfolioInformation(optv['x'])[1], getPortfolioInformation(optv['x'])[0],'y*', markersize=5.0)#最⼩⽅差#设定资本市场线CML的x范围从0到1.5最⼤夏普利率时标准差值x = np.linspace(0.0, 1.5*zone)#带⼊公式a+b*x求得y,作图plt.plot(x, X[0] + X[1] * x, lw=1.5)#标出资本市场线与有效边界的切点,绿星处plt.plot(X[2], f(X[2]), 'r*', markersize=5.0)plt.grid(True)plt.axhline(0, color='k', ls='--', lw=2.0)plt.axvline(0, color='k', ls='--', lw=2.0)plt.xlabel('expected volatility')plt.ylabel('expected return')plt.colorbar(label='Sharpe ratio')plt.show()#最⼤夏普⽐率点: (0.251241778282 ,0.478266895458) #切点: (0.251147161667, 0.4781282509275755)结果图如下:6: 得到最⼩⽅差边界上最⼤夏普⽐率处各股票权重:根据收益率差绝对值最⼩选取权重进⾏投资:rev_result=f(X[2])flag=0temp=abs(trets[0]-rev_result)length=len(trets)for i in range(1,length):if abs(trets[i]-rev_result)<temp:temp=trets[i]-rev_resultflag=iweight_result=infor_min_sd[flag]['x']all=0 #最终为 1.0for i in range(10):all=all+weight_result[i]print('{:.5f}'.format(weight_result[i]))# weight_result=[ 0.00000 0.04802 #⽩云机场0.00000 0.85880 #交通银⾏ 0.00000 0.00000 0.00000 0.00000 0.09318 #民⽣银⾏ 0.00000 ]故最终投资股票是:0.04802 #⽩云机场0.85880 #交通银⾏0.09318 #民⽣银⾏。
投资组合理论简介投资组合理论有狭义和广义之分。
狭义的投资组合理论指的是马柯维茨投资组合理论;而广义的投资组合理论除了经典的投资组合理论以及该理论的各种替代投资组合理论外,还包括由资本资产定价模型和证券市场有效理论构成的资本市场理论。
同时,由于传统的EMH 不能解释市场异常现象,在投资组合理论又受到行为金融理论的挑战。
投资组合理论的提出[1]美国经济学家马考维茨(Markowitz)1952年首次提出投资组合理论(Portfolio Theory),并进行了系统、深入和卓有成效的研究,他因此获得了诺贝尔经济学奖。
该理论包含两个重要内容:均值-方差分析方法和投资组合有效边界模型。
在发达的证券市场中,马科维茨投资组合理论早已在实践中被证明是行之有效的,并且被广泛应用于组合选择和资产配置。
但是,我国的证券理论界和实务界对于该理论是否适合于我国股票市场一直存有较大争议。
从狭义的角度来说,投资组合是规定了投资比例的一揽子有价证券,当然,单只证券也可以当作特殊的投资组合。
人们进行投资,本质上是在不确定性的收益和风险中进行选择。
投资组合理论用均值—方差来刻画这两个关键因素。
所谓均值,是指投资组合的期望收益率,它是单只证券的期望收益率的加权平均,权重为相应的投资比例。
当然,股票的收益包括分红派息和资本增值两部分。
所谓方差,是指投资组合的收益率的方差。
我们把收益率的标准差称为波动率,它刻画了投资组合的风险。
人们在证券投资决策中应该怎样选择收益和风险的组合呢?这正是投资组合理论研究的中心问题。
投资组合理论研究―理性投资者‖如何选择优化投资组合。
所谓理性投资者,是指这样的投资者:他们在给定期望风险水平下对期望收益进行最大化,或者在给定期望收益水平下对期望风险进行最小化。
因此把上述优化投资组合在以波动率为横坐标,收益率为纵坐标的二维平面中描绘出来,形成一条曲线。
这条曲线上有一个点,其波动率最低,称之为最小方差点(英文缩写是MVP)。