(二十七)投资组合的绩效评估

  衡量某一投资组合策略的绩效就是要考察其实际投资组合所承担的风险与所获得的收益是否匹配,主要指标有Sharpe Ratio、Treynor Ratio、Sortino Ratio、Jensen’s Alpha、Information Ratio、T2、M2等。

Sharp Ratio、M2——衡量总风险

  Sharpe Ratio:SRP=(E(Rp)-Rf)/σp,E(Rp)表示投资组合的预期收益率,通常用往年收益率替代,σp表示投资组合收益的波动率。SR表示承担一单位风险带来的超额回报,即CML的斜率,越大越好。

  注意SR适合衡量没有分散的总体风险,且只能评估历史表现,不反映未来;SR的大小本身没有意义,需要与其他组合比较才有价值;SR的计算结果与时间跨度、收益计算频次等有很大关系。

  M2:SR更像一种单价的概念,不够直观。M2=(SRp-SRM)×σM,即该投资组合和市场组合的单价之差×市场风险转化成收益指标,表示该投资组合比投资benchmark的收益高出多少。

  下面以“银华鑫盛”和“财通福瑞”两只公募基金作为评估对象,沪深300作为市场基准组合,假定一年期Rf为1.5%,用SR和M2两个指标来评估它们在2019年的表现:

import numpy as np
import pandas as pd
import tushare as ts
import datetime
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
pro=ts.pro_api('你的token')
yhxs=pro.fund_nav(ts_code='501022.SH');ctfr=pro.fund_nav(ts_code='501028.SH')
#tushare中不支持选择基金时间范围,转为csv再操作
#yhxs.to_csv('yhxs.csv');ctfr.to_csv('ctfr.csv')
yhxs=pd.read_csv('yhxs.csv');ctfr=pd.read_csv('ctfr.csv')
for f in [yhxs,ctfr]:
	f['end_date']=f['end_date'].astype(str)#原数据的日期是array,先转为str
	f['end_date']=pd.to_datetime(f.end_date)
	f.set_index('end_date',inplace=True)
fund=pd.concat([yhxs,ctfr],axis=1)
fund.columns=['银华鑫盛','财通福瑞']
fund.plot()

在这里插入图片描述
  计算这两支基金以及沪深300在2019年的年收益率和收益率的年波动率:

rfund=np.log(fund/fund.shift(-1)).dropna()#表中日期是降序排的,所以是-1
rmean=rfund.mean()*252
rvol=rfund.std()*(np.sqrt(252))
hs300=pro.index_daily(ts_code='000300.SH',start_date='20190101',end_date='20191231')['close']
#注意日期可能与基金的不匹配,可通过merge来匹配
rp=np.log(hs300/hs300.shift(-1)).dropna()
rm=rp.mean()*252
vm=rp.std()*(np.sqrt(252))
def SR(rp,rf,vp):
	return (rp-rf)/vp
def M_2(rp,rf,vp,rm,vm):
	return (SR(rp,rf,vp)-SR(rm,rf,vm))*vm
rf=0.015
SR2019=SR(rmean,rf,rvol)
print('2019年的夏普比率:\n',SR2019)
2019年的夏普比率:
银华鑫盛    2.413184
财通福瑞    2.085080
dtype: float64
dtype: float64
M_2019=M_2(rmean,rf,rvol,rm,vm)
print('2019年的M方:\n',M_2019)
2019年的M方:
银华鑫盛    0.159080
财通福瑞    0.094124
dtype: float64

  由上述结果可知从两个指标来看,银华鑫盛的表现都要好于财通福瑞。

Treynor Ratio、T2——衡量系统性风险

  Treynor Ratio:TR=(E(Rp)-Rf)/βp,表示承担一单位系统性风险带来的超额回报,即SML的斜率,越大越好。适合风险被完全分散的组合,具有前瞻性。

  T²=(TRp-TRb)×βb=TRp-(Rm-Rf),即该投资组合的TR减去市场风险溢价,表示在同样的系统性风险上该投资组合比市场组合高出多少收益。

  还是以上述两支基金为例,先求β值,再代入公式:

import statsmodels.api as sm
beta=[]
for i in range(2):
	model=sm.OLS(rfund.iloc[:,i],sm.add_constant(rp)).fit()
	beta.append(model.params[1])
beta
[0.6778732861979183, 0.7650625383238487]
def TR(rp,rf,beta):
	return (rp-rf)/beta
def T_2(rp,rf,beta,rm):
	return TR(rp,rf,beta)-TR(rm,rf,1)
TR2019=TR(rmean,rf,beta)
print('2019年的特雷诺比率:\n',TR2019)
2019年的特雷诺比率:
银华鑫盛    0.560434
财通福瑞    0.448868
dtype: float64
T_2019=T_2(rmean,rf,beta,rm)
print('2019年的T方:\n',T_2019)
2019年的T方:
银华鑫盛    0.241770
财通福瑞    0.130204
dtype: float64

  由此可见银华鑫盛在承担一单位系统性风险上获得的收益更多,表现更好。

Information Ratio——衡量非系统性风险

  IR=α/TEV=(Rp-Rb)/σ(Rpt-Rbt),TEV也称作跟踪误差、非系统性风险,是投资组合的收益率与基准组合收益率之间差异的标准差,可以衡量该投资者主动管理的风险,α也叫作abnormal return。IR越大说明基金经理主动管理的能力越强。还是以上述两支基金为例来计算IR:

#rmix数据框合并了两支基金和沪深300的对数收益率数据
rmix
Out[11]: 
                ctfr      yhxs     hs300
end_date                                
2019-12-31  0.005361  0.003543  0.003656
2019-12-30  0.012689  0.010705  0.014711
   ...       ...       ...       ...
TEV1=(rmix['yhxs']-rmix['hs300']).std()*np.sqrt(252)
TEV2=(rmix['ctfr']-rmix['hs300']).std()*np.sqrt(252)
def IR(rp,rb,TEV):
	return (rp-rb)/TEV
IR(rmean,rm,[TEV1,TEV2])
Out[12]: 
银华鑫盛    0.577622
财通福瑞    0.300495
dtype: float64

  可见财通福瑞的非系统性风险也没处理好,侧面反映了财通福瑞基金的基金经理能力可能不如银华鑫盛的基金经理。(狗头)

Sortino Ratio——损失评估

  SORP=(E(Rp)-Rf)/σLP,Sortino Ratio与夏普比率唯一的不同就是分母不是投资组合收益率的标准差,而是下半标准差,也就是说只考虑小于MAR=Rf的收益率数据(可简化为小于0),其他收益率不计入风险调整,该比率反映了投资组合承担每一单位下行风险所带来的超额收益。当亏损的样本数量多于盈利的样本数量时SOR比SR更合适(左偏厚尾分布时)。还是以上述两支基金为例来计算SOR:

lowervol=[]
for i in range(2):
	negr=rmix.iloc[:,i][rmix.iloc[:,i]-rf<0]
	lowervol.append(np.sqrt(252)*negr.std())
def SOR(rp,rf,vlp):
	return (rp-rf)/vlp
SOR(rmean,rf,[lowervol[1],lowervol[0]])#rmix中两只基金顺序是反的
Out[14]: 
银华鑫盛    3.442140
财通福瑞    3.330884
dtype: float64

  从结果发现银华鑫盛承担每一单位下行风险获得的超额收益更大。综合之前所有指标来看,均能说明银华鑫盛要比财通福瑞表现更好。

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
投资组合绩效分析与评价是投资研究的重要内容之一,通过分析投资组合绩效可以帮助投资者评估其投资策略的有效性和可行性。而Matlab作为一种功能强大的计算工具,可以帮助投资者更加准确地进行投资组合绩效分析与评价。 首先,通过Matlab可以对投资组合的收益率进行计算和分析投资组合的收益率是衡量投资者投资策略成功与否的重要指标之一。借助Matlab的数据分析功能,可以对投资组合中不同资产的收益率进行计算,并绘制出收益率曲线和累计收益率曲线,从而直观地观察到投资组合的收益情况。 其次,Matlab还可以进行投资组合的风险分析投资组合的风险是投资者所需关注的关键问题,通过Matlab的统计分析功能,可以计算投资组合的标准差、协方差矩阵等风险指标,从而衡量投资组合的风险水平。 除了绩效分析,Matlab还可以帮助投资者进行投资组合的优化。投资者可以通过Matlab的优化函数,选择最佳的资产配置比例,从而实现最大化收益或最小化风险的目标。此外,Matlab还可以进行投资组合的后验分析,将历史数据输入模型中进行回测,以验证投资组合绩效。 总之,投资组合绩效分析与评价是投资决策的重要环节之一,而Matlab作为一种功能强大的计算工具,可以提供丰富的数据分析和数学建模功能,帮助投资者更加准确地进行投资组合绩效分析与评价。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值