股票交易策略回测中数据该如何复权?


股票存在两种价格——复权价和不复权价。股票的交易依照不复权价进行,但是不复权价受到分红配股的影响,价格的连续性被打乱。相反,复权价剔除了分红配股的影响,保证了价格的连续性,但是交易不按照复权价进行。那么在策略回测中,交易信号由哪种价格产生,买卖行为又是依据哪种价格?如果使用复权价,用前复权还是后复权?


复权就是对股价和成交量进行权息修复,按照股票的实际涨跌绘制股价走势图,并把成交量调整为相同的股本口径。股票除权、除息之后,股价随之产生了变化,但实际成本并没有变化。1、前复权是以当前价为基准的复权。其计算公式为:复权后价格=(复权前价格-现金红利)÷(1+流通股份变动比例);2、后复权是以除权前的价格为基准来测算除权后股票的市场成本价。其计算公式为:复权后价格=复权前价格×(1+流通股份变动比例)+现金红利;3、不复权就是是当天的价格。4、关于复权:

  • 需要复权的事件主要有分红转增、配股、拆股。拆股虽然极为罕见,但确实发生过。
  • 股权登记日未必一定是除权除息日的上一交易日,公告过的方案最后可能未实施或修改。
  • 停牌期间也可能出现需要除权除息的情况,股权分置改革时可能多方案同日执行,需要小心处理。
  • 计算复权收益率最好的解决办法是:在除权除息日上一交易日基于收盘价计算结算价,以此为除数计算当日复权收益率。停牌期间要用昨结算价替代收盘价,因此需要迭代计算。复权的好处在于可以保持股价走势的连续性,便于以相同成本进行比较。前复权是以当前价为基准复权,其意义是让你一目了然的看到成本分布情况,后复权可让你清楚该股上市以来累计涨幅。

(一)、基于前复权价格(日常使用)

由于之前的股票价格基于当前时间点进行前复权后参与回测,历史每一天的股票数据包含了之后到当前的股票未来信息,所以回测本身存在未来函数在内,跟实际预测有误差。前复权的时间长度一般不能超过5年,因为复权的原因,价格基数越来越小,累计计算误差越来越大。

(二)、基于后复权价格(很少使用)

当前价格被变动,容易跟模拟盘和实盘对接不上,需要跟实盘有个中间件进行数据转换。

事实上前复权价格引入了未来函数,如果对于一个基于价格因素的策略来说,前复权的方式是存在问题的。对于回测来讲,标准的方法应该尽量贴合实际交易情况,按照不复权价格来进行交易,这样才能最大程度避免未来函数使用,然后在回测的后台处理机制上实现除权分红对于股本数量,账户持股数量,股票价格,现金账户分红所得在除权除息日期的自动处理。