量化策略回测表现好,但实盘却很差?可能是底层数据就错啦!
经常有人跟我说xm外汇,发现了一个很厉害的策略,年化收益很高;或者在某个策略研究报告、财经论文里看到了一个很有意义的结论等等。
但我对这些总体上是持怀疑态度的,其中一个重要原因就是他们得出结论的原始数据可能有问题。
因为我知道汇编干净、可用的历史数据有多么困难,并且有多少陷阱。
很多人也发现自己的策略历史回测表现不错,但是在量化投资过程中实际表现却不理想,这也很可能是底层数据存在问题。
俗话说:进则出。原始数据是垃圾,那么策略怎么可能不垃圾呢?
本文将讨论整理历史股票数据时经常遇到的陷阱,以帮助您避免这些问题。
01 退市股票不纳入
中国最有名的商业金融数据库是Wind。
在Wind客户端的股市序列中,可以导出A股全部每日的行情数据:
截至目前,A股共有3699只股票
很多没有经验的学生下载了这些数据,并兴奋地开始研究量化策略,甚至撰写学术论文。
但其实这样做是有问题的。
因为这些股票不包括已经退市的。比如说图中后面还有一只。为什么不包括呢?因为已经退市了。
当你的策略回测是基于这种不完整的股票数据的时候,就会出现误差,因为今天我们知道这些股票已经退市了,但是当时我们在选股的时候,并不知道未来哪些股票会退市。
而且往往退市股票的表现都会很差,所以剔除退市股票,相当于提前打开“天眼”,剔除一些垃圾股,间接利用了“未来功能”,会让你的策略表现“更好”。
这种偏见有一个专业术语,叫做“幸存者偏见”。
A股市场退市股票有百余只,占比不算高,但美股、港股退市现象十分普遍,如果不计入退市股票数据,策略结果会严重失真。
所以不管我们从哪里获取股票数据,我们都要检查其中是否包含退市股票。
二战期间,人们发现幸存的飞机中,机翼被击中次数较多,而机身被击中次数较少,因此认为应该加固机翼。但事实上恰恰相反,因为机身被击中的飞机没有飞回来,所以应该加固机身。这也是典型的“幸存者偏差”
02 股票原名称
A股上市公司经常会更名外汇实盘交易论文,一个常见的更名原因是业绩不达标,被迫在名字前加ST,即所谓的ST股。
下图是这只股票上市以来的更名历史,很长一段时间都叫ST江志,后来又相继更名为中江地产、九鼎投资。
以下是从Wind客户端的行情序列下载的2003年5月12日至5月30日的股票数据,可以看出,这段时间的股票名称应该是“*ST江志”,但Wind在下载数据时只是简单地将其替换为最新的名称“九鼎投资”。
Wind江西纸业数据截图
那么这样的数据是有问题的。
如果股票名称中带有“ST”字样,则每日涨跌停板幅度将从10%降至5%,但在Wind的行情数据中,该股票名称一直为九鼎投资,并未标注其在哪一天被ST。
如果用这个数据来算涨跌停板的话,只会按照10%来算,有时候即使5%触发了ST涨跌停板,也会被当做没有涨跌停板来处理。
这样就会导致我们的一些交易策略被扭曲,比如你选中某只股票,你以为当时可以买入,但实际上当时这只股票处于ST涨停状态,你根本就买不到。
之前看到过一些策略的选股记录,选的股票全部是连续涨停的ST股,这样的策略结果看上去很“美好”,但其实是不可能实现的。
因此当我们获取一条股票数据的时候,一定要检查它的历史名称是否正确,否则策略回测结果的真实性就会大大降低。
03 不关注财务报告发布时机
上市公司每年必须发布四次财务报告,交易所规定了发布的时间段:
第一季度报告:4月1日—4月30日。
第二季度报告(年中报告):7月1日—8月30日。
第三季度报告:10月1日-10月31日
第四季度报告(年度报告):1月1日—4月30日。
比如2018年第二季度财报,最早的是博腾股份,于7月31日发布,最晚的是格力电器,于8月31日发布。
例如2019年10月份,正是三季报发布的时候,可以发现外汇实盘交易论文,尚未发布报告的公司,根本无法获取相关财务数据。
Wind数据界面截图