股票回测中的动态复权机制

股票回测中的动态复权机制

2018, Mar 14    

什么是复权

复权就是对股价和成交量进行权息修复,股票的实际价值没有变,只是数量与价格变化了而已。 如:原来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来获取数据。 jdquant

影响:

可能会对回测的结果产生影响,回测收益下降。降低 模拟盘里猛如虎,一到实盘怂如鼠 的情况。