上篇文章里用pyalgotrade框架计算了策略收益率、夏普值、最大回测等回测指标,但是貌似没有直接计算α值,β值,信息比率等回测指标的方法。看来要自己实现了。
参照《Python量化策略风险指标》( https://zhuanlan.zhihu.com/p/55425806)这篇文章里的定义实现吧。
先来计算beta值。beta值相当于业绩评价基准收益的总体波动性。常被用于衡量某一策略的系统性风险。如果beta值大于1,策略波动大于市场,否则,策略波动小于市场。
还有Alpha值,代表实际收益和按照beta系数计算的期望收益之间的差额,代表策略多大程度上跑赢了预期的收益率。可以理解为超额收益率。
计算这两个值要选一个基准,一般是沪深300指数,但是指数的值是3000多,跟个股的价格差别很大,如果直接用指数作为基准,需要进行数据调整。我就用300ETF(510300)来做基准了,聚宽上也进行同样的调整。
计算代码就照那篇文章上给的代码了。
先用300ETF的数据建立一个feeds并以此建立策略,计算收益率,用累积收益率计算alpha和beta值。
1 | # 计算一些回测指标 |
结果:
聚宽上的结果
差别还是很大的,尤其beta值。
夏普比率代表每多承担一份风险,可以获得几份回报,即单位风险所获得的超额回报,该比率越高,策略承担单位风险得到的超额回报越高,所以夏普比率越高越好。pyalgotrade里有类计算,就不自己实现了。
信息比率,与夏普比率类似,但是其参考基准不是无风险收益率,而是策略的市场基准收益率。
但是按照知乎文章里的代码计算出来的信息比率为16.08,差距太大了。我按照原始定义算出来的呢?为0.01。差距也很大,不过貌似更靠谱一些。
1 | # 计算信息比率 |
先这样吧。再把整个计算回测指标的过程封装起来吧。下次了。代码见https://github.com/zwdnet/MyQuant/blob/master/01/testdata.py
我发文章的四个地方,欢迎大家在朋友圈等地方分享,欢迎点“在看”。
我的个人博客地址:https://zwdnet.github.io
我的CSDN博客地址:https://blog.csdn.net/zwdnet
我的博客园博客地址: https://www.cnblogs.com/zwdnet/
我的微信个人订阅号:赵瑜敏的口腔医学学习园地