金融分析与风险管理——投资组合的有效前沿及资本市场线
1 投资组合的可行集
投资组合中的权重变量可以实现投资组合的预期收益率与收益波动率之间的映射关系。在投资组合的理论中,所有可能的投资组合被称为可行集,有效前沿就是可行集的一条包络线,它表示在不同的风险条件下能够给投资者带来的最高预期收益率,或者在不同预期收益率条件下能够给投资者带来的最低波动率。
下面以5只股票构成的投资组合为例绘制投资组合的可行集,其Python程序如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #中文显示问题
plt.rcParams['axes.unicode_minus'] = False #负数显示问题
# 投资组合的有效前沿
Rp_list = []
Vp_list = []
#设定投资组合各产品的均值
R_mean = np.array([0.20,0.08,-0.17,0.06,-0.04])
#设定投资组合的协方差
R_cov = pd.DataFrame({
'A':[0.09,0.02,0.02,0.01,0.02],\
'B':[0.02,0.12,0.04,0.02,0.03],\
'C':[0.02,0.04,0.07,0.02,0.03],\
'D':[0.01,0.02,0.02,0.04,0.02],\
'E':[0.02,0.03,0.03,0.02,0.04]})
for i in np.arange(1000):
#随机生成1000次投资组合的权重
x = np.random.random(5)
weights = x/sum(x)
Rp_list.append(np.sum(weights*R_mean))
Vp_list.append(np.sqrt(np.dot(weights,np.dot(R_cov,weights.T))))
plt.figure(figsize=(8,6))
plt.scatter(Vp_list,Rp_list)
plt.xlim(0.12,0.28)
plt.ylim(-0.1,0.2)
plt.xlabel('波动率')
plt.ylabel('预期收益率')
plt.grid('True')
由可行集可知,在波动率一定的情况下,理性的投资者一定会选择可行集最上方的点进行投资,以实现收益率的最大化;在预期收益率一定的情况下,理性的投资者一定会选择可行集最左侧的点进行投资,以实现收益波动率的最小化(风险最小化)。
2 投资组合的有效前沿
求解有效前沿就是求解如下最优化问题:
m i n σ p = m i n ∑ ∑ w i w j C o v ( R i , R j ) 约 束 条 件 : ∑ w i = 1 w i > 0 E ( R p ) = ∑ w i E ( R i ) = C ( 常 数 ) min\sigma_p = min\sqrt{\sum\sum w_iw_jCov(R_i,R_j)} \\[10pt] 约束条件:\\[10pt] \sum w_i =1 \\[10pt] w_i > 0 \\[10pt] E(R_p) = \sum w_iE(R_i) = C(常数) minσp=min