量化回测中如何对历史行情做复权

什么是复权

在量化回测中,为了消除股票除权出息或者期货主力合约切换造成得价格跳变,从而对回测结果造成影响,通常会对历史行情价格采用复权操作。

对于股票,复权是对股价和成交量进行权息修复,按照股票的实际涨跌绘制股价走势图,并把成交量调整为相同的股本口径。股票除权、除息之后,股价随之产生了变化,但实际成本并没有变化。期货合约则是持仓量不变,仅对连续的主力合约价格做调整。

如:原来20元的股票,十送十之后为10元,但实际还是相当于20元。从k线图上看这个价位看似很低,但很可能就是一个历史高位。复权的形式有向前复权和向后复权两种。

如果不复权

当股票股价因为分红拆股等原因变化时,不填补股价走势图上的巨大空隙,仍然保持股票历史和当天的交易价格即为不复权。

如:原来30元的股票,一股拆三股后,股票价格变为10元,在k线图中,股票价格在当天会有一个断崖式的下跌。

不复权K线图能真实反应股价历史的变动信息,缺点是会留有大缺口,导致各类技术指标都无法应用,使用复权后,可以将股票的波动连续。

前复权与后复权

前复权:是保持现有价位不变,将以前的价格缩减,将除权前的K线向下平移,使图形吻合,保持股价走势的连续性。

前复权就是在K线图上以除权后的价格为基准来测算除权前股票的市场成本价。就是把除权前的价格按现在的价格换算过来。复权后现在价格不变以前的价格减少

前复权公式:复权后价格=(复权前价格-现金红利)÷(1+流通股份变动比例)

前复权的优点:前复权是以目前价为基准复权,其意义是让你一目了然的看到成本分布情况,如相对最高、最低价,成本密集区域,以及目前股价所处的位置是高还是低。均线系统也更顺畅,利于分析。

后复权:是在K线图上以除权前的价格为基准来测算除权后股票的市场成本价。就是把除权后的价格按以前的价格换算过来。简单的说,就是保持先前的价格不变,而将以后的价格增加。

复权后以前的价格不变,现在的价格增加,所以为了利于分析一般推荐前复权。

后复权:复权后价格=复权前价格×(1+流通股份变动比例)-配(新)股价格×流通股份变动比例+现金红利

后复权的优点:后复权可让你清楚该股上市以来累计涨幅,如当时买入,参与全部配送、分红,一直持有到目前的价位。

以贵州茅台(600519)为例2015-07-17(每十股 送1.00股 红利43.74元)为例

不复权:股票价格出现断崖式下跌

以贵州茅台(600519)为例2015-07-17(每十股 送1.00股 红利43.74元)为例

量化回测中如何对历史行情做复权_第1张图片

量化回测中如何对历史行情做复权_第2张图片

2015-07-16日收盘价格为251.59元,2015-07-17日收盘价格为228.29元,不复权时股票价格出现下跌

前复权:以当前份额为基础对除权前的股价换进换算。

量化回测中如何对历史行情做复权_第3张图片

量化回测中如何对历史行情做复权_第4张图片

2015-07-16日收盘价格为61.33元,2015-07-17日收盘价格为64.87元,进行前复权发现实际上涨

后复权:以初始份额为基础对除权后的股价进行换算。

量化回测中如何对历史行情做复权_第5张图片

量化回测中如何对历史行情做复权_第6张图片

2015-07-16日收盘价格为1392.41元,2015-07-17日收盘价格为1412.38元,进行后复权发现实际价格上涨

表1 不同复权方式价格对比

2015-07-16价格

2015-07-17价格

价格变化趋势

不复权

251.59元

228.29

下跌

前复权

61.33

64.87

上涨

后复权

1392.41

1412.38

上涨

加减复权和涨跌幅(比例)复权

在普通的看盘软件上,看到的都是前减复权——把当前的股价固定,前面股价是减去现金分红和流通股变动比例之后的数值。

如果一只股票分红次数比较多,做减法之后,减着减着股价就变成负数了,例如贵州茅台,经过前减复权后,2005年的股价是-30多元——价格是负的,对着图形看看整体走势还可以,难以用来回测。

涨跌幅复权法不再是做加减法,而是做乘除法,这样股价永远是正的。也能反映出分红送转的占比情况,保证复权后K线的连续性。 涨跌幅复权法全称为涨跌幅加权平均价格法,是指根据一段时间内股票的涨跌幅度和成交量,计算出一个加权平均价格,用来衡量股票的涨跌情况。

具体来说,假设股票在某个时间点上涨了一定比例的价格,那么在调整后的股价中,这个价格涨幅所占比例应该与公司行动前的股价相同

下面是涨跌幅复权算法的一个示例:

假设一只服股票在某一天的收盘价为 100。在第二天,该公司宣布拆股,比例为 1:2。在这种情况下,我们需要将前一天的股价乘以1/2,以反映股票数量增加的影响。现在,假设第三天的收盘价为 120。如果我们只考虑股票的价格变化,那么涨幅为 20%。但是,在进行涨跌幅复权后,我们会发现,第二天的调整后的股价为 50(即前一天的收盘价100 乘以1/2) ,因此,实际上第三天的涨幅是 140% (即 120/50-1)。

需要注意的是,涨跌幅复权算法是一种相对复杂的算法,实际应用中需要考虑许多因素,如股票分红和拆股的比例、税收和交易费用等。涨跌幅复权法前复权、后复权不会出现负数。而且这种方法前复权和后复权都能够正确计算涨跌幅,也能够正确计算资金的理论收益率。因此,用比例法复权,回测时采用前复权和后复权都可以,理论上回测结果结果的收益率应该一样。

比例法后复权价的计算公式:

量化回测中如何对历史行情做复权_第7张图片

Tick数据的量化回测方法

K线图上的开盘价、最高价、最低价、收盘价、成交量等等,为了更好的区分,我们把这些数据统称为Bar数据。回测中常常以Bar数据为单位进行计算。

Bar数据就是基于Tick数据,并按照时间周期分割而成,1分钟的Bar数据是由1分钟内的Tick数据组成,5分钟的Bar数据是由5分钟内的Tick数据组成,以此类推......形成了各种分钟图、小时图、日线图等等。一分钟的K线只有一个Bar数据,但是可能包含120个Tick数据。因此,回测的历史数据可以分为:Bar数据和Tick数据,并且在同一个周期内Tick的数据量要比Bar数据量大很多。

需要注意的是,市面上不同数据源的复权方法可能各不相同,对于股票,同花顺,东财是采用加减法复权,万得、米筐则采用比例法复权。从回测的角度,建议不要采用加减法复权,因为其前复权可能产生负值,而应该采用比例法复权。对于期货合约,也要注意数据源的这类差异。

你可能感兴趣的:(金融科技,区块链,金融)