第二节 技术错误

第二节  技术错误


使用未来函数

例如,2015年年报的数据,从理论上说,可以在2016年1月1日后使用,但实际情况并非如此,因为很少有公司在2016年的第一天公布年报。假如公司在2016年2月1日公布年报,那么回测时用到2015年年报数据,就只能在2016年2月1日后使用,如果在2016年2月1日前使用,就是使用未来函数。

除了年报、季报数据,还有如分红送股、重大利好等,在回测时,都必须在这些消息在公开媒体上公布后才能作为计算的依据,再则就是使用了未来函数。使用未来函数的坏处是:回测取得了非常高的收益率,但实际情况根本做不到,这样就给我们很大的误导,使实战的结果远远偏离回测。

还有一个错误也是初学者经常犯的,就是用当天的数据作为当天操作的依据,如计算出当天的均线,线上当天做多。其实当天的收益率是和昨天的收盘价去比较的,你昨天根本没买进,如何取得当天的收益率?

要100%避免未来函数是一件几乎不可能的事情,但我们应是要尽可能地减少使用未来函数。避免使用未来函数的主要日的是:使实盘尽可能接近模拟盘的结果,而不是去做什么学术讨论。

不注意边界条件

中国A股有些边界条件是比较特殊的,一不注意就使回测进入误区,如在回测中买进了涨停、停牌的股票和基金,卖出了跌停的股票和基金等。不注意这些边界条件,会使回测收益率巨高无比,实盘结果却差异甚大,最后导致对量化丧失信心。

过度优化

过度优化好比做了一件非常贴身的西服,穿在这个人身上还不错,但只要换一个人马上就穿不了。

往往过度优化后实盘和模型的差异非常大,最后导致否模型。笔者建议的办法是:一方面不要使用过多的参数来优化松化模型;另一方面,可以采取这样的办法,如现在有2010-2016年的数据,你可以先去掉2016年的数据,"假装"回到了2015年,然后优化模型,再把2016年的数据放到模型中,看是否有效,如果效果非常差,十有八九就是过度优化了。

另外,关于优化因子,一般建议不要超过5个,如果超过10个因子,过度拟合的可能性就非常大。当然,这只是经验之谈。