Pyfolio一行代码实现专业量化回测图

白癜风能光疗吗 http://baidianfeng.39.net/a_zzzl/130930/4266172.html
引言

量化回测是量化投资中不可或缺的步骤,是构建、评价和优化策略的重要手段。策略回测归根结底是对历史资金曲线的回测,不管是中低频(日、周、月等)还是高频(时、分、秒)交易策略,只要我们根据既定的交易策略获得该交易频率下的历史收益率,便可以对策略进行量化评价,常见的评价指标包括年化收益、累计收益、最大回撤、夏普比率等等。那么有没现成的量化模块库既可以实现计算量化评价指标,还可以输出专业级的量化图表呢?答案是pyfolio。

pyfolio是全球最大量化网站Quantopian开发的量化“三剑客”之一,另外两个分别是alphalens(用于多因子分析)和zipline(类似backtrader的回测框架)。pyfolio非常适合用于金融投资组合性能和风险分析,包括与Zipline和alphalens结合,输出专业的量化指标和图表分析结果。关于alphalens的应用参照推文《如何对选股因子进行量化回测?》。pyfolio和alphalens直接使用pip即可安装,而zipline由于各种原因一直未安装成功。

pyfolio的核心是一种所谓的tears表,由各种独立的量化回测结果组成,提供交易算法性能的综合图表。下面通过一个简单的例子为大家展示pyfolio的用法。

pyfolio回测实例

下面使用tushare获取个股和指数交易数据,以简单的买入持有作为交易策略进行简单回测,实际上其他交易策略和投资组合均可以以类似方式进行回测,关键是得到策略的资金曲线(即某交易策略或组合的最终收益率时间序列)。

importpandasaspdimporttushareastsimportpyfolioaspf

获取数据

defget_return(code):df=ts.get_k_data(code,start=-01-01)df.index=pd.to_datetime(df.date)returndf.close.pct_change().fillna(0).tz_localize(UTC)

ret=get_return()benchmark_ret=get_return(sh)#假设前面是模拟盘,年开始实盘买入并一直持有date=-01-03

pyfolio一行代码进行回测

pyfolio的create_full_tear_sheet函数可以实现一行代码输出所有量化回测结果和图表,具体参数包括:

其中,returns就是我们要输入的收益率时间序列数据(pd.Series),其他默认参数均为可选项,如benchmark_rets(pd.DataFrame)是策略或组合的基准收益率,用于对比分析,live_start_date是指定个时间开始进行实盘交易分析。如果要单独输出某个量化结果图表,可以通过输入pf.create_xxx_tear_sheet(returns),如输出收益相关量化结果图表,则xxx为returns,具体可参考pyfolio源代码中的tears.py,该文件提供了各种图表的输出函数和详细的参数说明。

pf.create_full_tear_sheet(returns=ret,benchmark_rets=benchmark_ret,live_start_date=date)

量化回测基本统计指标

结果显示,量化回测开始日期为年1月4日,结束日期为年5月28日。由于设定了实盘起始日期为年1月3日,pyfolio将数据分为样本内(in-sample,.1.4-.1.3)和样本外(outofsample,.1.4-.5.28)进行回测。Annualreturn是年化收益率,从样本外回测看,如果你在年1月3日后买入贵州茅台一直持有,年化收益率达到57%,累计收益率(Cumulativereturns)为%,年化波动率31.6%,夏普比率(Sharperatio)为1.59,最大回撤为-33.5%,关于这些指标的定义和计算可参照推文:《Python量化策略风险指标》。

最大回撤率与持续期间

事件分析(eventstudy)

pyfolio还提供了事件分析的量化结果,如欧债危机、年5月的闪电暴跌(FlashCrash)事件期间该策略的收益率情况。

下面输出的的累计收益率(含基准对比)、波动率、滚动夏普比率、最大回撤、月度收益率等的量化结果的可视化图。

极端事件期间的收益率分析

与backtrader相结合

此外,pyfolio还可以为backtrader的回测结果提供图表分析。关于backtrader的应用可参考

转载请注明:http://www.sonphie.com/jibzd/14556.html

网站简介| 发布优势| 服务条款| 隐私保护| 广告合作| 网站地图| 版权申明

当前时间: