过度数据挖掘之“一月晴雨表”

发布时间:2017-05-04  |   来源: 川总写量化

作者:石川

摘要:华尔街流行的“一月晴雨表”策略缺乏令人信服的业务依据,仅仅来自样本内的过度数据挖掘,在样本外效果非常差。


1 一月晴雨表


华尔街流行着一句老话“As January goes, so goes the year”。它的意思是一月份股票的涨跌往往和全年股票的涨跌一致:如果一月份上涨,那么全年大概率会上涨;如果一月份下跌,那么全年大概率也会下跌。华尔街有很多这个谚语的忠实信徒,并以此形成了一个流传甚广的择时信号:January Barometer(一月晴雨表,又称一月指标 January Indicator)。


追根溯源,这个现象于 1972 年被 Yale Hirsch 发现。后来,其子 Jeffrey Hirsch 统计了从 1950 年到 2006 年间该现象在标普 500 指数上的正确率,发现其正确率达到惊人的 91.2%(下图)。小 Hirsch 声称,在 57 年里,该信号仅有 5 次重大错误(他称之为 major errors),这个 91.2% 的正确率就是这么来的,即 52 / 57。


f1.png


然而,仔细想来,这么高的正确率颇有争议。首先,这位仁兄选择性的“失明”,剔除了另外 9 次该信号的非重大失误。如果我们加上这 9 次,则该信号在 57 年间一共失效 14 次(5 次重大失误 + 9 次非重大失误),正确率骤然降为 75.4%。第二,他爹 Yale Hirsch 于 1972 年发现这个现象,这说明理论上任何人都不能在 1972 年之前运用这个策略。因此,小 Hirsch 从 1950 开始回测也值得推敲。如果我们仅考察 1973 到 2006 年这 34 年间,该信号一共错误 9 次,正确率 73.5%。


上面这两个错误就是过度数据挖掘的典型例子。在数据挖掘中,有一种非常普遍的错误做法:


Slicing and dicing the data until they produce the desired conclusion.


人们很容易找到一月指标的反例。就拿刚刚过去的 2016 年来说,标普 500 在 2016 年一月下跌 5% 以上,而其全年来看上涨 9.54%。如果按照一月指标,那么我们将会错过从二月份开始高达 14% 以上的反弹!The Wall Street Journal 也曾刊文《Sorry, the ‘January Barometer’ is a Market Myth》批判了一月指标。其核心观点是严格的统计分析并不支持一月走势预测全年走势这种说法:


The idea that the direction stocks take in January will be their direction for the full year isn't supported by strict statistical analysis.


下面就来看看一月晴雨表指标到底存不存在。


2 样本内的激动人心


利用一月指标、并以标普 500 指数为投资标的,构建一个简单的择时策略,称为一月晴雨表策略:


每年一月买入标普 500,如果一月上涨,则在该年内全年持有;如果一月下跌,则在一月最后一个交易日清仓,在该年的二到十二月空仓(为了简化我们假设空仓,实际中可以购买债券等低风险资产)。不考虑任何交易成本。


为检验一月指标,首先考察该策略能否跑赢指数本身。其次,考察两组收益率之间的相关系数以及相关系数的显著性水平。这两组收益率分别为:


第一组:一月收益率 和 年收益率

第二组:一月收益率 和 当年二月到十二月份的累积收益率


下面的小贴士介绍了如何检验两个时间序列(在本文是上面每组中的两个收益率序列)的样本相关系数的显著性水平。


检验相关系数的显著性水平

对于两个长度为 n 的时间序列,假设这两个序列的样本相关系数是 r,则 r 对于总体(population)的真实但未知的相关系数的标准误差(standard error)为:


SE = sqrt(1 - r^2) / sqrt(n - 2)


SE 越大说明由样本计算出来的相关系数越无法准确的反应总体的真实相关系数。SE 和样本大小 n 成反比,这说明样本点越多,得到的误差越小。在统计学中,通过假设检验来判断这两个序列的相关系数是否显著;原假设为“两个时间序列没有线性相关性(即它们的相关系数为 0)”。是否接受这个原假设可以利用 t 分布来检验。相关系数 r 和标准误差 SE 的比值,即 r/SE,是一个满足自由度为 n - 2 的 t 分布的随机变量。因此,只要考察 r/SE 的值,就能知道在给定的置信水平下是否能够拒绝原假设。


我们将样本内回测区间设为 1972 年 1 月 1 日到 2006 年 12 月 31 日。(1972 年是一月效应被提出的年份;而 2006 年是小 Hirsch 在他的计算中考察的结束时点。)在该区间内,策略和标普 500 同期的指标如下图所示。不可否认,策略确实跑赢了指数。图中的最后一个指标是收益率检验。该检验的原假设是策略收益率序列和基准指数收益率序列的均值相同,以此考察策略的高夏普率是否具备统计意义。然而,结果表明我们不能拒绝原假设(p-value高达 0.975)。因此,策略的高夏普率不具备统计意义。事实上,稍后会看到,策略的高夏普率仅仅来自个别年份指数大跌然而策略在一月底清仓而逃过大跌。


f2.png


回测期内,一月收益率和年收益率的相关系数相关指标为:


f3.png


从以上结果不难发现,策略确实在样本内确实跑赢指数,且一月份的收益率和年收益率的相关系数高达 0.54(正相关)并且在统计上显著。这一切似乎说明一月指标在样本内确实有效。


然而一个不能忽视的事实是,在样本内的回测期之中,指数在一月份上涨的比例高达 61.8%。下图展示了回测期内不同月份的平均收益率,一月份是 12 个月份中表现最好的,平均收益率高达 1.76%!这说明策略选择一月份持股的前提下,净值就有了基本的保障。


f4.png


注意,一月份收益率在回测期内冠绝群雄仅仅是数据挖掘出来的一个现象,但人们并没有提出任何业务依据来为解释该现象。因此,为了避免数据迁就(data snooping),我们对原有的策略进行微调,将一月份作为观察期,而非直接于一月份持股:


如果一月上涨,则在该年内二到十二月买入并持有标普 500;如果一月下跌,则在该年其他月份空仓(同样,为了简化我们假设空仓,实际中可以购买债券等低风险资产)。不考虑任何交易成本。


为了区分这两个策略,称原始策略为“一月晴雨表策略(一月持仓)”;称改进策略为“一月晴雨表策略(一月观望)”。改进策略的净值和基准指数相比,效果如下,策略跑输了指数,但两个收益率序列均值的差异仍然不显著(p-value 为 0.292)。


f5.png


此外,我们更加关注一月份收益率和同年后 11 个月(即二月到十二月)的累积收益率之间是否存在统计意义上显著的正相关。结果(下图)表明,这两个收益率序列的相关性并不显著、无法拒绝原假设。


f6.png


下图展示了两个策略和基准指数在回测期内每年的收益率。可以看到,两个策略之所以取得了更高的夏普率,仅仅是因为在个别年份躲过了整年的大跌,或是因为由于一月指标的错误而错过了指数的上涨。这两个效应叠加使得策略的收益率波动更低,这便是高夏普率的直接原因。然而策略收益率和基准收益率的均值并无统计意义上的显著差异。


f7.png


作为小结,本节的实证得到如下观点:


1. 原始一月晴雨表策略(即一月持仓)在回测期内跑赢指数;一月份收益率和全年收益率存在统计上显著的正相关。


2. 回测期内,基准指数大概率在一月份上涨,且一月份的平均涨幅雄冠全年;因此原始策略存在数据迁就。


3. 改进的一月晴雨表策略(即一月观望)在回测期内无法跑赢指数;一月份收益率和二月到十二月的累积收益率不存在统计上显著的正相关。


4. 两个策略均取得比基准指数更高的夏普率,然而策略收益率序列和基准指数收益率序列的均值在统计上无显著差异。


3 样本外的心灰意冷


第 2 节的实证虽然说明一月晴雨表策略在样本内效果不错,但纵观学术界和业界对一月指标的研究,业务解释非常牵强。当一个所谓的数据模式(data pattern)仅仅来自过度数据挖掘,而缺乏合理的业务依据时,这样的模式往往是虚假的、难以令人信服的。因为它根本无法保证对样本外的数据同样有效。


一月指标在样本外恰恰中招。假如我们错信一月晴雨表策略真正有效,而满怀信心地在样本外(2007 年 1 月 1 至今)运用该策略时,那一定会怀疑人生。无论一月是持仓还是观望,两个策略均跑输指数本身。尤其是原始的一月持仓策略,可以看到最近三年(2014 至 2016),一月指标接连发出错误信号导致我们在一月下跌后离场,而指数本身在当年的后 11 个月发生了不同程度的反弹。值得注意的是,在样本外的年份中,一月上涨的比例仅为 40%, 和样本内的 61.8% 千差万别。这有力的说明了样本内的一月晴雨表策略存在数据迁就。


在样本外,无论是一月收益率和全年收益率,还是一月收益率和二月至十二月的累积收益率,这两组收益率之间均无统计意义上显著的正相关性。


f8.png


f9.png


如果一月晴雨表策略不是过度数据挖掘的产物,而存在合理的业务解释。那么我们有理由相信,它在样本外的表现应该和回测期内类似。然而,样本内外大相径庭的结果表明,一月晴雨表策略仅仅是样本内数据挖掘的一厢情愿。


这进一步证实了《为什么机器学习在投资领域不好使》一文的结论:任何被数据挖掘出来的数据模式都必须能够被从业务上合理地解释,否则它就是数据迁就的产物。


4 一月晴雨表在其他国家无明显效果


最后考察一月指标是否存在于其他一些主流市场中。这些市场包括:英国富时 100,日经 225,德国 DAX,法国 CAC,瑞士 SSMI,新加坡海峡时报、韩国综合、俄罗斯 RTS 以及我国的上证指数。我们得到的结论是,一月指标在这些国家中并无明显支撑:


1. 在所有考察的国家中,一月收益率和后 11 个月的收益率之间均无统计意义上显著的相关性。


2. 仅在个别国家(包括上证指数),一月收益率和全年收益率存在统计意义上显著正相关。然而由于我们使用的是能得到的全部数据进行回测,因此即便如此也不能保证这些正相关在样本外继续有效(毕竟对于一月指标缺乏业务上的支撑)。


3. 在绝大多数国家,一月晴雨表策略无法跑赢基准指数。


特别的,对于我们最关心的中国股市,对上证指数的实证结果如下。


f10.png


5 结语


实证表明,被华尔街津津乐道的一月指标仅仅是过度数据挖掘的结果,其在样本内外的表现截然不同。无数人前仆后继的试图从历史数据中挖掘出可以盈利的数据模式。不可否认,这样的模式一定存在,但是真正经得起检验的模式必须是那些能够从业务上被合理解释的。否则,样本内的过度数据挖掘必将导致数据迁就,而如此得到的数据模式在样本外必然只是空欢喜一场。


数据挖掘、人工智能、机器学习这些计算机和数学手段无一不擅长挖掘所谓的数据模式。而去伪存真才是一个合格的(量化投资)基金经理必须具备的能力。



免责声明:入市有风险,投资需谨慎。在任何情况下,本文的内容、信息及数据或所表述的意见并不构成对任何人的投资建议。在任何情况下,本文作者及所属机构不对任何人因使用本文的任何内容所引致的任何损失负任何责任。除特别说明外,文中图表均直接或间接来自于相应论文,仅为介绍之用,版权归原作者和期刊所有。