一个量化系统有一个很重要的模块,就是如何衡量一个策略的绩效,主要是风险收益的量化度量。 这里介绍quantopian,这其实是国内quant平台的鼻祖了,它的回测引擎是zipline,也是开源的,其中有一个开源的度量模块是empyrical。 https://github.com/quantopian/empyrical 安装同样很简单: pip install empyrical
针对交易收益率的时间序列来计算,收益率之于benchmark而言就是close的pct_change(),也就是日变化率;如果是组合的话,那就是capital组合的总市值的日变化率为单日简单收益率。 from empyrical import stats
class Performance(object): def __init__(self): pass def calc(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金融量化。致力于使用最前沿的认知技术去理解这个复杂的世界。
|