前言
相信最近一些小伙伴可能发现一些问题,就是同一个策略回测的结果好像跟之前不太一样了。
回测效果貌似没有之前好了。是记错了吗,是代码被改了吗?都不是,是我们回测的复权机制改了。
什么是复权
复权就是对股价和成交量进行权息修复,股票的实际价值没有变,只是数量与价格变化了而已。如:原来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来获取数据。
影响:
可能会对回测的结果产生影响,回测收益下降。降低 模拟盘里猛如虎,一到实盘怂如鼠 的情况。
另外:
特别感谢QQ群里小金鱼反馈的各种bug,送你一朵小红花。
网友评论