聚宽在完成一个策略回测后,会给出一些指标,可以在官方给出的说明文档中查看:
API新 – JoinQuant
https://joinquant.com/help/api/help?name=api#风险指标
策略收益:回测期间策略实现的收益率
基准收益:默认是沪深300指数,一般来说,基准收益代表市场整体情况,如果策略收益长期低于基准收益,很可能该策略是失败的,通过set_benchmark() _这个API可以自定义基准收益。
年化收益率:年化收益率是一个衡量策略盈利能力的重要指标,越大越好,策略收益是策略整个回测区间的总收益率,而聚宽给出的年化收益率,可以根据数学方法计算出年化收益率,如此一来让不同的策略在比较时有一个参考
最大回撤率:最大回撤率是一个衡量策略风险的重要指标,越小越好。如果用回测来检验一个策略,那么就意味着我们相信历史对未来有指导意义,通过发现历史中跌的最多的一段可以大致知道,如果要去实盘该策略,那么该策略最大亏损率大概是多少。
交易次数:交易次数也是一个可以初步衡量策略回测结果是否可靠的指标,过少往往意味着回测结果不可靠,试想这样一种情况,别人给你推荐一个策略,回测区间是过去10年,年化收益率非常高,但该策略在过去10年中只交易了2次,那么可能该策略就不太可靠,因为两次赚钱可能仅仅是因为运气,并不能保证过去的赚钱机会在未来一定会发生。样本过少的统计结果可能不太可靠,所以足够多的交易次数才能让回测结果有说服力,目前聚宽的回测结果不能直接查看交易次数,但是可以通过回测结果页面中,将盈利次数与亏损次数相加得到交易次数。
Alpha与Beta:在资本资产定价模型(CAPM中),投资组合的收益被分为和市场系统风险相关与和市场系统风险无关的两部分,而Beta与Alpha这两个希腊字母则是该模型中的两个重要系数,分别代表相关部分与物管部分。
其实策略持有的股票可以看成是一个投资组合,基准收益作为市场系统收益,Beta则是代表相关部分的策略收益相对市场波动的倍率,如Beta为2则代表市场涨1%,相关部分的策略波动幅度大概2%(统计意义上并非实时精确),Beta为负数代表与市场反向变动;Alpha则代表独立于市场波动不受影响的无关部分的策略收益,越大越好,所以如果策略年化收益为负担Alpha为正而且很大,说明策略有超过市场的盈利能力,但策略整体盈利被与市场相关部分拉下来了。
夏普比例(Sharpe Ration):代表所承担单位风险所带来的的收益,越大越好。
未来函数:策略利用了历史当时无法得到的信息,造成回测结果极大失真。
未来函数排查方法一般是人工查看,重点看一切跟时间有关的地方,尤其注意各个API关于时间的默认处理方法。
有时未来函数隐藏的很隐蔽,而更好但稍花时间的方法是用策略建立模拟交易,一般让模拟交易运行几天,多数未来函数的问题都能被发现,或者事后将模拟过程中的数据的同期回测数据相比较,因为(实时)模拟交易是不可能引入未来数据的,所以往往引入未来函数的策略无法成功。
需要注意的是,有时同一个代码的策略在模拟交易中是没有引入未来函数的,而是在历史回测中引入未来函数,次数会发现历史回测结果很好,模拟交易也能正常运行,但回测结果是失真的,而模拟交易运行时间长了往往也与回测相去甚远。
当你发现策略回测收益极高,回撤又极低,各个时间段表现都很好,过于完美可能就是因为未来函数的存在。
策略的运行效率也是需要关注的问题,有时策略比较复杂,计算量会很大,极端时可能会造成交易延迟,延误交易股票的时机,分钟级策略尤其需要关注耗时问题,相关函数就是enable_profile() API文档-性能分析(https://www.joinquant.com/help/api/help?name=api_old#性能分析♠):
https://www.joinquant.com/help/api/help?name=api_old#性能分析♠
用法是将enable()prifile() 这行代码复制粘贴放到策略代码的第一行,然后你成功回测后可以在回测详情页面查看性能分析的结果,从而可以查看哪行代码耗时较长,最后有目的性的去改进
过拟合(overfitting):策略一般都有各种参数,如持股数量、交易频率等,选择不同的参数在同一个历史区间能收益率可能会不尽相同,许多人可能会选择表现最好的参数作为策略的最终参数,但若将带有同样参数的策略换一个时间段做回测,可能效果又不太理想了,这是可能策略的参数就过拟合了。
过拟合的核心思想是,过度细致地解读样本数据,从而没有认识到本质的规律,使策略或系统失去了普适性,对原样本数据表现极其优异,但对非元样本数据外情况的有效性大大降低,就好像老师拿一份试卷(样本数据)考学生(策略),学生成绩不理想,老师要教学生(调整参数),此时老师不是教学生学科原理,而是教学生背考卷答案(过度拟合),这样的结果就是,学生再做同一份试卷时表现优秀,但因为没有掌握原理,所以换套题目就又不会做了。
许多策略具有时效性,可能你的策略十分完善模拟效果也很理想,但实盘结果却并不好看,可能是该策略遇到了不利期,也可能是该策略失效了,策略在运行的过程中出现了历史上罕见的情形就需要警惕了,比如大幅回撤创历史新高,策略收益不再增加甚至减少等。
策略失效的原因可能是让这个策略盈利的逻辑不再成立,操作的资金量过大导致了更大的冲击成本,市场上使用相似策略的资金过多,也可能是市场上出现了寄生策略,也就是预判你的策略会买入于是对方针对性的提前买入,你买入后股价拉升对方提前卖出,这种针对另一个策略的策略,可能会让被针对的策略失效或盈利减少。
收益与风险的取舍:
往往策略的收益能力与抗风险能力是相互制约不能兼顾的,两者之间如何取舍的建议是,达到基本的收益能力后,极力追求低风险,理由是盈利水平往往可以通过增加资金量来提高,策略A年化收益率300%,最大回撤率可能亏损一半本金,B策略年化收益率30%,最大回撤率5%,只要给B策略提供相当于A策略10倍的资金量,两者就能实现同样的盈利,但很难让A策略能有像B策略一样的低回撤抗风险能力。