回归分析在量化投资中的应用十分广泛。比如在选股或者预测股票收益率时,人们常常使用宏观经济数据或公司基本面数据等对收益率回归,以期找出能够解释收益率的自变量(又称为因子)。由于金融数据之间的关系大多为线性,因此线性回归往往就足够用了;而因为线性回归又足够简单,这就使得回归分析更加普及。
回归分析的目的是为了找到自变量和因变量之间的相关性。然而,当我们对时间序列进行回归分析时,必须要警惕一类陷阱,它就是伪回归(spurious regression),它指的是自变量和因变量之间本来没有任何因果关系,但由于某种原因,回归分析却显示出它们之间存在统计意义上的相关性,让人错误地认为两者之间有关联,这种相关性称作伪关系(spurious relationship)。
伪回归在生活中随处可见,来看下面两个例子。
例子一:冰淇淋销量和溺水儿童数
某个夏天,人们发现镇上的冰淇淋销量和溺水儿童数量同步上升。如果拿冰淇淋销量对溺水儿童数量进行线性回归,得到的结论是前者是后者的一个很好的解释变量。但从现实生活中的逻辑来看,这两者应该有所谓的“冰淇淋卖得好,溺水儿童数就多”的关系吗?这是否意味着“游泳池的儿童都在吃冰淇淋”?正确的答案是,这仅仅是一个伪回归(下一节会解释成因)。
例子二:居民消费和鸬鹚个数
下图来自真实的数据,两条曲线代表的时间序列分别为丹麦居民消费的对数(红线)以及该国饲养鸬鹚数量的对数(蓝线)。从图中来看,它们显然非常相关。如果用红线对蓝线回归,得到的回归系数显著不为 0,且回归的 R-squared 高达 0.688,说明蓝线对红线的解释能力非常强。但这显然也是毫无意义的(因为居民消费和鸬鹚个数之间没有任何有逻辑的关联),它同样来自伪回归(成因和例子一不同)。
本文就来介绍伪回归。了解如何识别它,才能避免在构建量化模型时错误的使用不同数据之间的伪关系。
2 伪回归的成因和数学特性伪回归的成因一般有两个。在上一节的第一个例子中,伪回归的成因是存在干扰因素(confounding factor,或称潜在变数 lurking variable)。在第二个例子中,伪回归的成因是两个变量之间的局部随机趋势(local stochastic trend)。
当两个变量同时受第三个因素影响时,这两个变量间可能存在误导性的相关性,这第三个因素称为干扰因素。在第一个例子中,干扰因素是夏天炎热的高温。高温造成了冰淇淋销量的上升;此外高温也使得更多的儿童去公共泳池从而造成溺水事故增多。高温是造成冰淇淋销量和溺水儿童数上升的共同因素;这两者本身之间并没有相关性。
在第二个例子中,伪回归的成因是随机趋势。对于量化投资中可能出现的伪回归,这种成因更普遍。从上一节的图中可以看到,居民消费和鸬鹚数量均随时间呈现上升趋势。这种趋势的巧合造成了它们之间在统计意义上的伪关系;然而它二者之间并没有因果关系 —— 我们无法说“由于居民消费的增加导致了鸬鹚数量的上升”,反之亦然。
关于随机趋势这个成因,来看另一个例子。考虑两个独立的布朗运动,它们的时间序列如下图所示(蓝线 vs 绿线)。红色方框画出的区域显示它们在局部表现出了同样的上涨或者下降趋势。如果我们用蓝线当自变量来回归绿线,得到的回归系数为 0.34(p-value 小于 0.001)。这显然是一个伪关系;这两个布朗运动相互独立,它们之间没有任何关系。
注意了,重要的话加粗说一遍:
这两个布朗运动的随机趋势并非来自同一个随机运动,而是来自两个独立的随机运动。因此,这两个时间序列展现出来的局部同向运动并不是来自某个公共的因素,而仅仅是因为巧合;它们之间的关系是伪关系。
如何避免伪回归呢?在上面的例子中,无论是居民消费、鸬鹚个数还是随机生成的布朗运动,这些时间序列都是非平稳的(non-stationary)。当我们对非平稳时间序列进行回归分析时,非常容易发现伪回归(例外是这些时间序列满足协整关系,下文会说明)。
当伪回归出现时,回归分析得到的残差序列(residual)不满足平稳性,我们可以以此作为判别伪回归的依据:如果回归分析的残差是非平稳的,说明发生了伪回归。在上文的例子中,居民消费和鸬鹚数量回归结果的残差序列和两个布朗运动回归的残差序列分别如下图所示。这两个残差序列均不满足平稳性。
伪回归告诉我们:我们不能仅仅因为两个时间序列共同运动就说它们之间一定存在相关性。
3 平稳性的检验本节就来介绍如何检验时间序列的平稳性。掌握了这个技术,我们就可以检验一个回归分析得到的残差序列是否是平稳的,从而推断是否发生了伪回归。
简单的说,如果一个时间序列 {y_t} 在每一时刻 t 的取值的概率分布都一样、该分布与 t 无关,那么该时间序列就是平稳的。关于时间序列平稳性的详细解释,请参考《写给你的金融时间序列分析:基础篇》中的第四节:时间序列的平稳性。
为了说明如何判断平稳性需要讲到以下三个概念:unit root(单位根)、order of integration(单整阶数)、以及 ADF 检验。
3.1 单位根
单位根(unit root)是非平稳时间序列的特性之一。对于一个时间序列 {y_t, t = 0, 1, …},假设它可以写成 p 阶自回归函数如下: