一个量化系统有一个很重要的模块,就是如何衡量一个策略的绩效,主要是风险收益的量化度量。
这里介绍quantopian,这其实是国内quant平台的鼻祖了,它的回测引擎是zipline,也是开源的,其中有一个开源的度量模块是empyrical。
https://github.com/quantopian/empyrical
安装同样很简单:
针对交易收益率的时间序列来计算,收益率之于benchmark而言就是close的pct_change(),也就是日变化率;如果是组合的话,那就是capital组合的总市值的日变化率为单日简单收益率。
fromempyricalimportstats
classPerformance(object):
def__init__(self):
pass
defcalc(self,df):
df['cum_returns'] =stats.cum_returns(df['returns'])
self.peroid_return = df['cum_returns'][-1]
self.trading_days =len(df)#交易天数
#波动率
self.volatility = stats.annual_volatility(df['returns'])
#夏普比率
self.sharpe = stats.sharpe_ratio(df['returns'])
#最大回撤
self.max_drawdown = stats.max_drawdown(df['returns'].values)
print(df)
print('收益率',self.peroid_return)
print('交易天数',self.trading_days)
print('波动率',self.volatility)
print('夏普比',self.sharpe)
print('最大回撤',self.max_drawdown)
波动率就是收益率序列的方差,衡量波动性也就是风险。
夏普比是单风险的超额收益。
关于作者:魏佳斌,互联网产品/技术总监,北京大学光华管理学院(MBA),特许金融分析师(CFA),资深产品经理/码农。偏爱python,深度关注互联网趋势,人工智能,AI金融量化。致力于使用最前沿的认知技术去理解这个复杂的世界。
领取专属 10元无门槛券
私享最新 技术干货