前复权由于以下2个缺点,使得其不适合用来回测:
(1)历史数值是时变的:每次发生派息等除权事件时,历史数值都会根据当前的股价而调整。换句话说,每次发生除权事件后,历史数值都是不一样的;**
(2)股价可能为负:对于持续分红的公司,其前复权价格可能为负。后复权的本质是描述某个资产净值的增长情况,反映了真实的收益率,更适合用来回测。但后复权与真实价格相差较大,不能用来实盘交易。
2. 计算复权需要注意的问题
本节来说说计算复权时需要注意的问题。
我看到很多小伙伴都喜欢直接使用第三方提供的复权数据。这里我想强调一个我使用数据的理念(不单单是复权数据):
首先,我只使用第三方提供的像开高低收、成交量等一手数据其次,对于需要二次加工的数据,如市盈率、ROE等指标,我会自己算一遍
因为回测对数据的要求是非常严格的,而第三方(即使是大机构)的数据质量参差不齐,可能会因为计算公式的细微差别造成较大的误差,可能引入未来函数,更可能产生某些问题直达实盘才会发现。
我强烈建议复权数据要自己算。自己计算各种指标的最大的一个好处就是将一切问题可控。因为我们能够掌握计算的细节,即使出现重大问题,也可将其控制在已知的范围内。
接下来说说计算复权价格需要的数据。
除了常规的开高低收数据外,我们还需要前收盘价这个数据。前收盘价是前一交易日的收盘价格,是交易所帮我们算好的除权后的价格,用当日收盘价除前收盘价就可以得到真实收益率。
关于前收盘价的算法,可以看下图美的集团的公告:
3. 代码实现
最后,我们来看一下后复权的计算代码(前复权请各位小伙伴自行完成)。