金融分析与风险管理——投资组合收益率、波动率计算

本文介绍了投资组合的预期收益率和波动率计算,包括简单、复利和连续收益率的计算方法,以及年化收益率的求解。在计算波动率时,强调了协方差和相关系数的重要性。文中提供了一个包含5个资产的投资组合案例,通过Python程序计算得出年化收益率为-3.94%,年化波动率为21.28%。

金融分析与风险管理——投资组合收益率、波动率计算

1 投资组合的预期收益率

假设由N只股票构成一个投资组合,各只股票的预期收益率分别为 E ( R i ) E(R_i) E(Ri),则投资组合的预期收益率计算如下:

E ( R p ) = ∑ w i E ( R i ) = [ w 1 , w 2 , . . . , w N ] [ E ( R 1 ) , E ( R 2 ) , . . . , E ( R N ) ] T 且 满 足 : ∑ w i = 1 E(R_p) = \sum w_iE(R_i) = [w_1,w_2,...,w_N][E(R_1),E(R_2),...,E(R_N)]^T \\[10pt] 且满足:\sum w_i =1 E(Rp)=wiE(Ri)=[w1,w2,...,wN][E(R1),E(R2),...,E(RN)]Twi=1

简单收益率计算

r t = P t + D t P t − 1 − 1 r_t = \frac{P_t+D_t}{P_{t-1}} - 1 rt=Pt1Pt+Dt1

复利收益率计算

由简单收益率计算复利收益率的公式如下:

R c = ( 1 + r 1 ) ( 1 + r 2 ) . . . . ( 1 + r t ) 1 t T − 1 R_c = {(1+r_1)(1+r_2)....(1+r_t)}^{\frac{1}{t}T}-1 Rc=(1+r1)(1+r2)....(1+rt)t1T1

其中,t是持有期,T是需计算的复利期。

连续收益率计算

R t = l n ( P t + D t P t − 1 ) R_t = ln(\frac{P_t + D_t}{P_{t-1}}) Rt=ln(Pt1Pt+Dt)

通常情况下,年化收益率可通过日收益或者月收益率计算得到,其计算公式如下:

R y e a r = r d a y ∗ 252 R y e a r = r m o n t h ∗ 12 o r R y e a r = R d a y ∗ 252 R y e a r = R m o n t h ∗ 12 R_{year}=r_{day}*252 \\[10pt] R_{year}=r_{month}*12 \\[10pt] or \\[10pt] R_{year}=R_{day}*252 \\[10pt] R_{year}=R_{month}*12 \\[10pt] Ryear=rday252Ryear=rmonth12orRyear=Rday252Ryear=Rmonth12

在股票的日收益计算中,我们通常使用连续收益率(对数收益率)进行计算,因为该收益率考虑了连续的时间价值。

2 投资组合的波动率

在计算投资组合的波动率之前,通常需要先计算每只股票收益率之间的协方差与相关系数,以两只股票为例进行说明:

σ p 2 = ( w 1 σ 1 ) 2 + ( w 2 σ 2 ) 2 + 2 w 1 w 2 C o v ( R 1 , R 2 ) = ( w 1 σ 1 ) 2 + ( w 2 σ 2 ) 2 + 2 w 1 w 2 ρ 12 σ 1 σ 2 两 边 开 根 号 : σ p = ( w 1 σ 1 ) 2 + ( w 2 σ 2 ) 2 + 2 w 1 w 2 C o v ( R 1 , R 2 ) = ( w 1 σ 1 ) 2 + ( w 2 σ 2 ) 2 + 2 w 1 w 2 ρ 12 σ 1 σ 2 其 中 : ρ 12 = C o v ( R 1 , R 2 ) σ 1 σ 2 \sigma^2_p = (w_1\sigma_1)^2 + (w_2\sigma_2)^2 +2w_1w_2Cov(R_1,R_2) \\[10pt] = (w_1\sigma_1)^2 + (w_2\sigma_2)^2 +2w_1w_2\rho_{12}\sigma_1\sigma_2 \\[10pt] 两边开根号:\\[10pt] \sigma_p = \sqrt{(w_1\sigma_1)^2 + (w_2\sigma_2)^2 +2w_1w_2Cov(R_1,R_2)} \\[10pt] = \sqrt{(w_1\sigma_1)^2 + (w_2\sigma_2)^2 +2w_1w_2\rho_{12}\sigma_1\sigma_2} \\[10pt] 其中:\rho_{12} = \frac{Cov(R_1,R_2)}{\sigma_1\sigma_2} σp2=(w1σ1)2+(w2σ2)2+2w1w2Cov(R1,R2)=(w1σ1)2+(w2σ2)2+2w1w2ρ12σ1σ2σp=(w1σ1)2+(w2σ2)2+2w1w2Cov(R1,R2) =(w1σ1)2+(w2σ2)2+2w1w2ρ12σ1σ2 ρ12=σ1σ2Cov(R1,R2)

由N只股票构成的投资组合,其收益率方差计算表达式如下:

σ p 2 = ∑ ∑ w i w j C o v ( R i , R j ) = ∑ ∑ w i w j ρ i j σ i σ j = W ∑ W T ∑ = [ σ 1 2 σ 12 ⋯ σ 1 n σ 21 σ 2 2 ⋯ σ 2 n ⋮ ⋮ ⋱ ⋮ σ N 1 σ N 2 ⋯ σ N 2 ] \sigma^2_p = \sum \sum w_iw_jCov(R_i,R_j) = \sum \sum w_iw_j\rho_{ij}\sigma_i\sigma_j=W\sum W^T \\[10pt] \sum = \begin{bmatrix} {\sigma^2_1}&{\sigma_{12}}&{\cdots}&{\sigma_{1n}}\\ {\sigma_{21}}&{\sigma^2_2}&{\cdots}&{\sigma_{2n}}\\ {\vdots}&{\vdots}&{\ddots}&{\vdots}\\ {\sigma_{N1}}&{\sigma_{N2}}&{\cdots}&{\sigma^2_N}\\ \end{bmatrix} σp2=wiwjCov(Ri,Rj)=wiwjρijσiσj=WWT=σ12σ21σN1σ12σ22σN2σ1nσ2nσN2

波动率(标准方差)近似遵循平方根法则,可以通过日收益波动率进行计算,公式如下:

σ m o n t h = 22 σ d a y σ y e a r = 252 σ d a y \sigma_{month} = \sqrt{22}\sigma_{day} \\[10pt] \sigma_{year} = \sqrt{252}\sigma_{day} \\[10pt] σmonth=22 σdayσyear=252 σday

本文通过一个案例来说明如何计算投资组合的年化收益率、年化波动率,该投资组合有 5 个不同的资产构成,投资组的权重配比如下表:

资产名称上海机场宝钢股份海通证券工商银行中国石油
权重0.150.20.50.050.1

案例中投资组合完整的数据可以通过百度网盘获取,提取码:tday。

案例中的日收益率使用对数收益率进行计算,Python程序如下:

data = pd.read_excel(r'C:\Users\Administrator\Desktop\构建投资组合的五只股票数据.xlsx',header = 0,index_col = 0)

#归一化处理并画收盘价的走势图
(data/data.iloc[0]).plot(figsize=(8,6))
plt.legend()
plt.grid('True')

# 对数收益率走势图
R = np.log(data/data.shift(1)) #计算日对数收益率
R = R.dropna() #删除缺失值
R.describe() #日收益率情况查看

#直方图
R.hist(bins=40)
plt.grid('True')

在这里插入图片描述
在这里插入图片描述

#年化收益率:日收益转化
R_mean = R.mean()*252

#计算年化协方差
R_cov = R.cov()*252
#计算相关系数
R_corr = R.corr()
#计算年化标准差
R_std = R.std()*np.sqrt(252)

#投资组合的预期年化收益
weights = np.array([0.15,0.2,0.5,0.05,0.1])
# R_port = np.sum(weights*R_mean) #向量乘法计算
R_port = np.dot(weights,R_mean) #数组计算
# weights.shape
# R_mean.shape
vol_port = np.sqrt(np.dot(weights,np.dot(R_cov,weights.T)))
print('投资组合的年化预期收益率:',round(R_port,4))
print('投资组合的年化收益波动率:',round(vol_port,4))
# 投资组合的年化预期收益率: -0.0394
# 投资组合的年化收益波动率: 0.2128

使用设定的权重计算的投资组合的年化收益率为-3.94%,年化收益波动率为21.28%。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值