【公告】变更!采用动态复权作为回测复权机制
相信最近一些小伙伴可能发现一些问题
就是同一个策略回测的结果……
好像跟之前不太一样了
回测效果貌似没有之前好了
是记错了吗?是代码被改了吗?
都不是!
是我们回测的复权机制改了!
什么是复权
复权就是对股价和成交量进行权息修复,股票的实际价值没有变,只是数量与价格变化了而已。
如:原来20元的股票,十送十之后为10元,但实际还是相当于20元。从K线图上看这个价位看似很低,但很可能就是一个历史高位。复权的作用是为了让股价连续,消除价格、指标的走势畸变。
常见的复权机制
1、前复权
向前复权,就是保持现有价位不变,将以前的价格缩减,将除权前的K线向下平移,使图形吻合,保持股价走势的连续性。
2、后复权
向后复权,就是保持先前的价格不变,而将以后的价格增加。上面的例子采用的就是向后复权。
回测里的复权机制
动态复权 :就是以策略回测当前日期为基准进行前复权。目的是为了更贴近真实的交易环境。
前复权虽然修正了指标的走势畸变和价格断层,但也损失了原始价格的原有的属性。比如有些选股策略是挑选价格低的股票,这时候一些高送转的股票就会被选中,其实这些股票本应不改入选的,只是前复权的机制让他们之前的价格变低了。
所以动态复权就是为了修复这些弊端,以回测那天作为基准,进行前复权。以原始价格作为交易价格。
举个例子
平安银行在2016-06-16做了一个分红配股,价格从10块多变为8块多,那么当回测日期为2016-06-15日的时候,分红配股这件事没发生, 那么2016-06-15该天价格还是10块多不变。当回测日期走到2016-06-16这一天时,分红配股发生,价格变为8块多,那么以2016-06-16为基准,则2016-06-15这天的价格为8块多。即何时何刻,都以回测当天作为基准,做的前复权。
京东量化的处理方式
所以在京东量化平台上,我们具体修改的函数有:
1、get_history 函数采用新的动态前复权计算价格;
2、因为有的同学还是喜欢用前复权的数据,所以kline 函数依旧采用前复权,后续是否改成动态前复权看是否有需求。
3、同时使用这两个函数的要注意数据的区别,推荐采用get_history来获取数据。
影响
可能会对回测的结果产生影响,回测收益下降。降低 模拟盘里猛如虎,一到实盘怂如鼠 的情况。
另外
特别感谢Q群(☞ 京东量化交流Q群:456448095)里小金鱼反馈的各种bug,送你一朵小红花。
欢迎到京东量化平台:http://quant.jd.com/ 进行学习、交流与解惑。平台有海量的学习教程、量化大咖的直播讲解、牛人的经验分享……带你从小白进击到高级玩家!