Local EPUB Text
检验
样本内测试,又称为训练
在量化交易中,模型近似于真实世界发生的现象。在模型中输入数据并预测未来。检验过程的第一个步骤是基于样本内数据寻找最优参数训练(train)模型。这听上去难以理解,我们将逐项解释。
假设我们想测试一个策略:便宜的股票表现优于昂贵的股票。用收益率(earning yield,earnings/price)度量廉价,收益率越高暗示着股票越便宜。但是收益率高到什么水平才能足以表明股票未来表现优秀。收益率低到什么水平暗示股票昂贵并且很可能未来表现不佳。这些水平就是参数。通常来说,模型的参数是定义模型的某些方面并影响其表现的变量。这些变量可以被设置为任何值,通过改变这些变量值,模型本身将被改变,将提供不同的结果。
想象你雇用一个顾问帮助你购买理想的“最优”房子。顾问列出了可能影响你的决定的相关变量,例如房子的大小、购买时的房屋状况、地理位置以及相关学区。如果你不告诉他这些变量的理想值,他将通过观察你对不同房子的反应进行推断。你对贫穷社区的大房子并不感到满意,对富人社区的小房子可能更感兴趣。使用这种方式,顾问可以推断你不喜欢第一种社区,更喜欢第二种社区。进一步,相对于房子大小而言,社区可能对于你来说是更加重要的因素。如果他能够重复这些“实验”,他将能够调整供你选择的目标,直到找到你最满意的房子。顾问的努力得到回报,他很好地完成了工作。
同样,量化模型的最优参数是能够达到最优表现的参数,无论测量模型优劣的标准是什么。训练模型包含寻找最优参数集,这通常是通过测试许多组数据集,并希望至少有一个数据集使得结果具有吸引力而实现的。是什么构成吸引力,我们将立即详细讨论这个问题。但是我们首先考虑样本内研究的一些其他方面。
在某种意义上,对于宽客而言,样本内研究是件有趣的事情。在真实世界,宽客的模型不断地受到新信息和不可预知的事件的挑战。但是样本内的历史数据对于整个模型是已知条件,没有必要对已知条件进行预测。样本内数据就像小学生测试的答案要点,这是模型运行最好的区间,因为模型不必做任何预测。模型不得不做的是结合适用于审核的整个数据样本,合理地解释样本内数据。这是研究过程中值得高度期望的一个部分。
样本内测试的过程包含一个重要的决策:究竟是什么构成拟合模型的样本?样本有两个特征:宽度和长度。想象一个研究员想构建一个基于美国大约5000只上市股票的策略,1990年至目前的数据可供他支配。就样本内测试的宽度而言,研究员对使用的股票数量以及如何选择这些股票做出决定。他是应该使用所有行业及市值水平的更广泛的跨行业股票呢,还是应该使用相对狭窄的跨行业股票,还是应该选择所有股票呢?对于时间长度而言,研究员必须考虑适用于拟合模型的数据窗口。最近的数据更合适还是更古老的数据更合适?相对较小时间窗口的随机数据集更合适,还是1990年以来的整个数据集更合适?宽客通常喜欢使用一个时间段的所有金融工具数据,但这绝不是通用的,因为这里需要权衡利弊。
通过使用更多的数据,宽客构建的模型适用于更广泛的情景和市场环境,这使得模型更稳健。在真实条件下,模型会成功,是因为模型已经可以“看见”和适用于大量样本内数据包含的情形与环境。另一方面,模型允许使用的数据越多,当被调整的时候,构建模型的风险就越大,此时的模型仅仅能对过去进行很好的解释。基于这个原因,许多宽客使用交叉数据进行样本内检验和模型拟合检验。
“良好的”模型的组成部分
宽客使用各种方法度量模型的“好坏”(goodness)。无论对于样本内数据还是样本外数据,都是真实存在的,我们将在下一个部分讨论后者。这里先说明宽客可能使用的一些统计量(以及其他输出量)。我采用预测标准普尔500指数的策略解释这些度量指标。预测的期限是一天,使用众所周知的股票风险溢价(equity risk premium)方法进行调整,通过计算每天标准普尔500指数和10年国债收益率的差进行衡量。如果标准普尔500指数收益率高于债券收益率,这被看作做多股票的信号。如果标准普尔500指数的收益率低于债券收益率,则被看作做空股票的信号。我在20世纪90年代中期建立这个策略,旨在用于战略性资产配置,但我从未进行交易。因为使用下面这些度量指标度量以后,就会明白不进行交易将是显而易见的事情。这个例子简单地表明策略在真实世界使用真实资金实施之前需要首先通过检验。这个例子的策略结果是基于1982年6月至2000年12月的日收盘价而得到的。
1.累积盈利图
累积盈利图是检验过程最有力的输出量,因为正如人们所说的,一图胜千言。从累积盈利图可以看出,策略能否盈利、平稳性如何以及存在着何种下行风险,适用于哪些情况。正如图9-1所显示的,这个策略在测试阶段时持续盈利,但回报流是呈波浪起伏的,而且很长一段时间内不够活跃(一些情况下持续几年),有时大幅亏损,有时获得巨额盈利。研究员能够立即看出这个策略存在着实际问题。从1989年后期到1995年早期,以旁观者身份几乎不进行交易,当然确定没有盈利是否现实呢?
2.平均收益率
平均收益率表明策略在过去实际运行情况如何(即盈利情况如何)。如果策略在测试阶段效果不佳,那么实际情况下策略就不可能奏效。正如后面所看到的,测试让研究者相信,交易中盈利是一件极其容易的事情。令人遗憾的是,这种错觉主要归因于大量的致命陷阱。在标准普尔500指数的例子中,仿真实验中的总累积盈利达到746%,在没有去除交易成本和佣金之前,年化收益率达到12.1%。
图9-1 标准普尔500指数策略的回测累积盈利图
3.收益率随时间的变异性
收益率随时间的变异性描述的是平均收益率的不确定性,该指标有助于研究员判断是否应该持有某交易策略。通常情况下,收益率变异性越小,策略越优。例如,某策略年平均收益率为20%,年标准差为2%(即在67%的时间里,年收益率在20%-2%至20%+2%的范围内,即在18%和22%之间)。这个结果相对于年平均收益率为20%,年标准差20%的策略(即在67%的时间里,年收益率在0和40%之间)要更好。这个思想使得研究员应该对不确定性较低的既定收益率的策略更有信心,更有信心明显是一件好事情。
在我的公司,我们关注一个统计量:块度(lumpiness),指的是显著高于平均收益的时间段内的收益占策略总收益的比例。这是另一种测量收益一致性的方法。尽管度量指标很重要,但一致性并不总是主要的目标。不过,知道投资者或者策略的从业者所期望的目标是一件好事情,即使只能识别到策略行为发生改变的时间。在标准普尔500指数的策略中,整个测试阶段的日化收益率的年化标准差是21.2%。
4.波峰波谷间的最大降幅
波峰波谷间的最大降幅测量的是盈利曲线中从任意一个累计波峰开始的最大回测。如果策略盈利10%,然后亏损15%,再然后盈利15%,那么这个阶段策略的整体收益率大约是7.5%。然而,波峰和波谷的降幅达到15%。另一种陈述方法为:投资者为了获得7.5%的盈利,必须承担15%的风险。策略的回测越低,策略越优。许多宽客不仅仅分析一个回测,而是分析多个回测以了解他们策略的极端和常规下行风险。分析下跌之后的恢复时间也很重要,有助于研究员理解模型极差表现之后的行为。回复时间较长通常是不受欢迎的,因为这暗示着,如果策略在某个时间发生大量损失,将在很长时间内保持负值。标准普尔500指数策略在回测时的波峰波谷间的最大降幅为-39.7%,这是由于1987年夏天做空标准普尔500指数所造成的。实际上,1987年10月崩盘之前,策略看上去表现不错。
然而,下跌信息必须谨慎处理。如果从1990年至1997年,8年(在对冲基金里面被认为是较长的跟踪记录时间)的可转换债券套利策略数据可以看出,降幅很有限。但是1998年,这些策略表现极差。存在的问题就是样本偏差(sample bias),这表明所使用的判定“最坏”降幅的样本并不是整个可能结果的良好代表。相反,虽然回测时间很“长”,覆盖了有利于策略的整个时间段,也将低估潜在的下行风险。对于这个问题,并没有太多的解决方案:计算下行风险的样本要么足够大,以至于能够覆盖很大范围内的市场体制以及有利的和不利的环境(尤其与策略测试相关的环境),要么不能覆盖。如果样本并不足够大,不能代表所有可能情况,那么宽客只能对环境变得恶劣时的最坏亏损做出一些判断。很明显,这个判断很大程度上依赖于研究员的判断。即使这样,这最多也只是一个粗略估计。
此外,最大历史下行也仅仅是一个有偏样本产生的可能结果。想想历史收益分布像一副纸牌。如果我们按照纸牌的原有顺序翻转纸牌,将得到历史时间序列。然而,如果重新洗牌,按照新的顺序翻转纸牌,将得到不同的时间序列。如果反复操作成千上万次,理论上讲从一个真实历史数据可以得到许多可能的结果。这种方法被称为重复采样(resampling),这样可以提升历史样本的效率。基于这些成千上万的历史重复采样数据,可以计算出每一种情况的最大下行,对策略的潜在下行风险估计更稳健。对于识别纸牌中可能某一天置我们于死地的情况,这是一个明智的做法。我们担心,他可能包含着太多的A(aces)和王(kings),而并没有太多的2和3。
5.预测力
统计量R2(R-squared)表示预测模型解释被预测量的变异程度,换句话说,就是被预测量被信号解释的变异程度。其值在0~1,有几个有效的方法进行计算。用户可以利用许多统计包(包括Microsoft Excel)很容易地计算出R2。值为1意味着模型解释了被预测量变异100%的信息。如果不是特别说明,当我们谈到“被预测量”时,当然是指向进行交易的股票、期货合约或者其他金融产品。在量化金融领域,毫不夸张地说,我们试图预测期货价格/收益率/一些金融产品的趋势,使其R2为1是不可能的,除非方法是错误的。事实上,在这个行业,R2为0.05就是极好的了(参照后面章节讨论的样本外数据)。我的一个前员工曾说道,“如果你没有犯错误并且R2高于0.15,换个方式重新处理,因为如果你使用这个策略,证监会将会认为是内幕交易而逮捕你”。注意到,R2等于0.15意味着预测模型描述了被预测目标未来变异的15%信息。正如另一个量化交易者所谈到的,“人们认为0.02的R2的模型就是很好的模型”。图9-2显示了1982~2000年的标准普尔500指数策略的R2低于0.01。
图9-2 标准普尔500指数策略指数的R2
宽客经常使用别的方法衡量预测力。这个方法是在检验中按照十分位数(或者研究喜欢的其他分位数)的方法对金融产品的潜在预测的收益率进行分组。通常情况下,具有可靠预测力的模型能够显示最坏的收益情形出现在最坏的预测收益情形中。实际上,改善的预期收益的每一个分组表现优于前一个。如果被预测的金融产品的收益不能随着预测而改进,则暗示着这个策略只是偶然地发生作用。
图9-3的柱状图显示的是按照五分位数对标准普尔500指数策略的研究结果。正如图形所看到的,至少在这个研究中,策略看上去是合理的。最左边的信号结果与标准普尔500指数平均-2.35%的收益相吻合。确实,这是所有标准普尔500指数平均收益中的最坏结果。从左边开始的第二个分位数组表示的是标准普尔500指数策略的第二个最坏结果,平均收益率为-0.19%。我们逐步转移到牛市信号,标准普尔500指数收益率继续改善,与预测行情上涨相一致,这也是人们所期望的。每一个分位组的收益率高于前一个分位组的事实表明阿尔法信号(早些修正的股票风险溢价信号)与预测目标(第2天的标准普尔500指数收益率)之间的单调关系。
图9-3 按照五分位数对标准普尔500指数策略的信号和收益率之间的关系研究
6.胜率或盈利时间占比
胜率这个百分比是一致性的另一种度量方法。这个指标告诉研究者系统盈利是来自小比例的偶然表现极其优秀的交易,还是来自很多交易,每笔交易可能都贡献微小的利润。类似地,可以使用盈利周期与总周期数的比值简单度量(这通常是用胜率或者盈利天数百分比进行度量)。对于两种度量方法,人们对具有更强一致性的策略具有更多的信心。在标准普尔500指数策略中,研究结果有点不寻常,因为策略并不是每天产生信号,而仅仅当模型察觉到机会足够具有吸引力时才产生信号。既然这样,模型会在65%的时间里产生0信号,19%的时间里产生盈利交易,16%的时间里产生亏损交易。在非零信号的交易时间里,大约54%的时间里获得盈利。对于一个策略而言,这也不是一个太糟糕的结果。
7.回报相对于风险的不同比率
许多统计量被用来度量调整风险收益(risk-adjusted return),通常都是设法度量获得一些收益的“成本”(以风险的角度)。典型的例子是以威廉·夏普命名的夏普比率(Sharpe ratio)。1990年,威廉·夏普与哈里·马科维茨一起获得诺贝尔经济学奖。夏普比率是通过计算某周期内高于无风险利率的平均收益率与收益率的波动率之间的比值可得。夏普比较越高,策略越好。宽客(以及投资管理领域的许多人)通常去掉比率(ratio)以简化这个名称。夏普值为2的策略是指每承担1个单位的风险,将会获得2个单位的高于无风险利率的收益率(如果能得到这个结果,这是一个相当好的夏普比率)。
和夏普比率相近的比率是信息比率(information ratio),不同之处在公式中去除了无风险利率。标准普尔500指数策略的信息比率仅为0.57,意味着投资者每承担1%的风险,可以获得0.57%的收益(此外,这个结果是在扣除交易成本和实施策略的其他费用的成本之前)。斯特林比率(Sterling ratio,平均收益率与低于平均收益率的波动率),Calmar比率(Calmar ratio,平均收益率与波峰波谷间最大回测的比值),Omega比率(Omega ratio,正收益率之和与负收益之和的比值)也是广泛应用于调整风险收益的度量指标。1982~2000年的标准普尔500指数策略显示斯特林比率为0.87,Calmar比率为0.31,Omega比率为1.26。在这些比率中,最让人失望的是较低的Calmar比率,这个结果意味着承担1%的回测风险,能够产生0.31%的收益。
8.与其他策略的关系
许多宽客会同时使用几个策略。这样,宽客有效地管理策略组合,这与其他类型的投资组合一样,分散风险。宽客需要频繁地测量新策略如何适应于其他已经使用的策略,确保新策略能够增加价值。毕竟,不能改进投资组合的好思想最终也没有用处。虽然计算新策略与现存的投资组合策略之间的相关系数是件寻常的事情,但许多宽客通过比较现存策略的结果和加进新思想后的结果,度量新策略的新增价值。结果的显著改进表明新策略和现存策略之间存在着协同关系。
9.时间延迟
在检验策略时,一个有趣的问题是,策略及时获得信息的敏感性如何,预测效果会在市场中持续多长时间。许多宽客寻求理解,如果他们必须在接受交易信号后才开始交易,这个交易有一些延迟,那么策略的收益将会如何。换句话说,如果2006年4月28日,策略开启一个卖出Microsoft(MSFT)的信号,宽客将能看见MSFT没有被允许卖出的一天、两天、三天等多天时间内策略的表现。通过这个方法,可以判断策略对接收信息及时性的敏感程度,也能获得策略拥挤程度的一些信息(因为越拥挤意味着到达新均衡的运动越激烈,即潜在盈利的衰减速度越快)。想象一个研究员开发了一个根据华尔街分析师的建议交易股票的策略。越多分析师对某个公司持推荐意见,越会导致策略对此公司持有多头头寸,否则推荐建议的减少会导致对此公司持有空头头寸。这个策略很流行并被许多宽客(和主观交易者)所追随。然而,策略的效应是非常短暂的,对接收到信息的及时性非常敏感。
这个现象的一个例子如图9-4所示,使用2006年4~10月MSFT的数据。正如你所看到的,2006年4月28日有5次下跌,导致MSFT股票低于标准普尔500指数11.4%。事实上,在4月28日开盘时,MSFT的开盘价已经下跌大约11.1%,因为开市前对MSFT的降级已经发生。正因如此,量化交易者必须小心谨慎,不能允许仿真系统假设能尽早捕捉到11.1%的改变而进行交易。相反,要保守一些,应该测试评级发生后的几天开始交易的两周表现。
如果宽客确实这样做了,就会发现,在4月27日闭市(宣布评级改变之前的晚上)之后的任何时间卖出MSFT,收益实际上都相当平庸。如果在4月28日、5月1日(下一个交易日)或5月2日收盘价卖出MSFT,将会获得盈利。但是如果在5月3~12日进行交易,则不能盈利。这解释了策略对即时信息依赖程度的压力测试的重要性,这也不总是可利用的。
图9-4 阿尔法时间延迟策略的解释
有趣的是,延迟信号的实施并不总是导致坏结果。例如,标准普尔500指数策略倾向于“尽早”交易,也就是说,即使市场随后按照预测的方向运行,建立多头和空头头寸也为时过早。正因如此,延迟一天进入市场能够显著地将策略的总体收益率从746%(年化收益率为12.1%)提高到870%(年化收益率为12.9%)。对于这个策略的使用者而言,这必定不是好兆头。通常情况下,交易者不会很舒适地从交易策略中获得这样的信号,这个信号不仅使你延迟一会儿没有实施交易而无亏损(这可能是最好的结果),而且实际上,使你在获得信号至少一天之后再进行交易而盈利。
10.特定参数的敏感性
前面提到,通过改变参数,可能得到不同的结果。但是基于参数的微小变化对结果所造成影响的理解,有助于了解策略的质量。这里使用前面基于P/E的一个策略作为例子。我们认为任何P/E比值高于50或者为负值(因为负盈利)都应该被认为是昂贵的。同时,假定低于12的P/E比率是便宜的。按照前面讨论的度量方法检验这个策略,发现基于这些参数的低P/E策略(≥50表示昂贵,≤12表示便宜)获得10%的年化收益率和15%的年化波动率。
现在想象仅小幅改变参数,P/E比率低于11的股票被认为是便宜股票,高于49的股票被认为是昂贵股票。如果按照这个策略,与前面策略相比,结果则发生很大变化。我们应该对两个结果持怀疑态度,任何一个在模型中都不予采用。这是因为模型被证明对于参数值的微小改变过于敏感,在现实世界中没有什么使用价值。P/E值为10和11,或者P/E值为50和49之间应该明显不同吗?许多研究员所研究的是参数值的变化对结果变化程度的影响。参数的近邻集应该得到极为相似的结果,如果不是这样,研究员应该对策略持有怀疑的态度,因为这些结果可能意味着过度拟合(overfitting)。
过度拟合
前面描述了宽客判断既定模型好坏的一部分度量标准。这些标准在模型被创造以及使用的过程中,被用来判断模型的质量。的确,许多对冲基金投资者都会使用大部分这些度量指标衡量不同交易者的业绩。
然而,在判定量化策略的优度时,仍有一个极其重要的指导原则,这就是过度拟合。模型的过度拟合本质上意味着研究员使用过多的数据。最经典的定义是研究员建立了一个能够很好解释过去的模型,但对未来解释性较差。这可能发生于几种情况。
第一,研究员必须对模型的复杂度加以注意。模型的复杂度来自几个方面。一个是预测因子的数量。在建立模型时,研究员可以采用数千个因子解释资产价格过去的波动。模型或多或少能够精确解释过去发生的事情。但是让我们来回想量化交易模型的目的,类似于寻找阿尔法的交易者的目的,是预测未来,而不是解释过去。虽然我们期望过去对未来提供一些指导,但我们也必须理解过去最多是未来的不完美指南。而这意味着能够完美地解释过去,在预测未来时并不一定起作用。
第二,研究员由于条件的限制,创建相当复杂的模型。例如,可以设想一个为了判定持有多头或空头头寸而寻找价格行为的特定模式的策略。一个简单的模型可能要求:当金融产品的价格高于过去10天价格一定数量时,持有多头头寸。一个更复杂的模型可能要求,如果金融产品的价格在过去1天是下跌状态,在过去10天是上涨状态,在过去20天是下跌状态,在过去100天是上涨状态时,才开始持有多头头寸。当然,作为人类,我们擅长于理性地理解事物,我们可能能够对一些确定可以奏效的策略给出合理的解释。但是这确定比较复杂,因为里面包含许多“如果”语句。正因如此,策略是极其脆弱的。
在预测方面对相对简单模型的渴望以“节约”(parsimony)著称。“节约”来自拉丁语单词“parsimonia”,意思是“节俭”(sparingness)和“俭省”(frugality)。对于宽客,节约意味着做出假设时保持谨慎。在量化交易中,这处在研究过程的绝对中心位置。节约型模型使用较少的假设条件,尽可能简洁地解释未来。正因如此,对有许多参数或因子的模型通常要持怀疑的态度,尤其要考虑过度拟合的风险。
节约起源于方济会(Franciscan)的化缘修士和逻辑学家威廉·奥卡姆(William Occam)的一个著名准则——奥卡姆剃刀准则(Occam’s razor)。奥卡姆剃刀准则大概是由原始的拉丁语翻译得到,原始的拉丁语意思是:“如无必要,勿增实体”(Entities must not be multiplied beyond necessity)。在科学领域,这被理解为,使用尽可能少的假设条件,尽可能简单的理论解释事物。1992年,卡尔·波普尔指出,越简单的理论越好,因为它们极容易被检验,这意味着它们包含更多的经验值。在我们周围,科学家同意节约、去除不必要的假设条件和复杂度,则是更好的科学。本章最开始所引用的爱因斯坦的名言是另一条重要的警示,过于简单化的解释也是没有用处的。
回看顾问帮助你购买房屋的例子:如果他考虑增加大量的因素,比如客卫瓷砖的颜色或屋顶材料的类型,假定事前没有什么理由促使你成为他的顾客,他的分析将是混乱的。复杂模型(依据因子个数)可能能对过去有很好的解释,但不可能很好地预测你是否会喜欢以前没有见过的类型的房子,因为模型实际上不可能包括你所喜欢房子的全部因素。另一方面,如果顾问只考虑两个因素——房子的大小和学区,这个模型也不能很好地预测你的偏好,因为他留下了太多重要的变量,例如卧室的个数、卫生间个数、财产情况等。正是这样,量化研究员工作的一个重要部分是在尽力过于完美地解释过去和尽力简单地解释过去之间进行权衡。倾向于任何一边都是失败,因为这样模型会过于复杂化或过于简单化。
过度拟合的一个相关类型仅出现在交易极其不频繁的策略中。这里我们关心交易频率不高的情况,这些交易的统计量并不显著,并且不考虑交易是否盈利。例如,想象一个模型,在标准普尔500指数至少下跌40%以后的任何时间购买,当触及新高时再卖出。运行此策略,将会看到较强的回测结果。这个策略本应有巨大的盈利和相对较小的回测。在过去的40年里也确切地看到3个交易信号,但每13年出现一次交易信号着实很难令人感到兴奋。让任何资本承担这种策略带来的风险本身就具风险。
潜在的过度拟合风险的另一个常见来源是参数的具体说明。提醒一下,在第3章,我们讨论了许多模型有参数的事实。例如,在构建趋势模型时,研究员认为过去一段时间里价格变化的一些特征可能暗示着未来趋势的持续。可以想象,与这个模型相关的几个参数。例如,价格变化所处的历史阶段(量化领域中被称为回测,lookback)。这个时间段的最小长度是多少,被认为是很重要的因素。最小时间段长度是多长呢?这些问题不是模型的中心问题,然而不同的答案对模型所产生的收益率有重要的影响。例如,对于同一趋势模型(exact same trend model),回测两天的趋势产生的收益与回测过去6个月的趋势产生的收益会完全不相关。
宽客可以利用一些方法固定参数。基于市场先前的运行规律,一种方法是主观地设定参数。回测的结果预示着这个策略的效果如何。这个方法优点在于根本不用进行拟合。策略或者会起作用,或者不会。这个方法也有很多缺点。因为它严重依赖于研究员的判断,最优参数值可能与模型中设定的参数集相去甚远。也就是说,利用贝叶斯预测方法(在第3章进行讨论)的研究员可能倾向于以这种方式设置参数。
参数拟合的另一个方法是利用各种各样的参数值对策略进行回测,选择使得结果最优的参数。这个决定可以是主观决策,或者通过影响参数选择的算法进行判断。现在我们转向讨论一个参数值选择的例子,如图9-5所示。
图9-5 选取最优参数值
在图9-5中,你猜测哪个点是最优参数值?点A看上去不是最优,因为基于A点的参数值,策略表现较差。C点看上去较优,因为它是平稳阶段的最高点。但是C点距离悬崖边很近,我们不能确定是否处于不明智选择的风险之中。D点看上去最优,但是这一点也相当不可靠,因为邻近区域表现普遍较差。留下B点成为最优点。我们没有选择稳定阶段的最高点,而选择相对安全的参数值。为什么安全程度很重要,这是一个值得讨论的问题。
我们来看图9-5中唯一的峰值点D,检验揭露了在拟合阶段可能包含一些伪造点,这些点使得D的参数值对应的投资表现最优。遗憾的是,这个偶然结果也只是昙花一现。换句话说,如果选择D点,我们就在打赌认为未来会与过去完全相似。你可能熟悉标准的免责声明:“过去的表现不能代表未来亦是如此。”然而我们判断交易者是否成功时,至少部分依靠业绩,这也说明我们认为过去实际上可能是未来的一些暗示。同样地,通常情况下,基于科学研究的假设条件,所有的量化交易(确切地,包含科学)隐含地假设过去发生的事情有助于我们理解未来。这就是为什么科学的方法开始于对世界的观察,这些观察能够形成一种理论。但是思考过去最合适的方式是作为未来的一般性指引(general guide),而不是完全复制过去。我们建立的模型本身就是对未来的一般性指引的概括性描述,当以这种方式进行表述,很清楚我们宁愿模型更谨慎一些,不要犯错。正因如此,谨慎的宽客宁愿将点B作为更具鲁棒性的点,而不是D点,因为B点对应的投资策略更优的机会更多,而不是单纯地将样本数据的一些偶然情况作为最优结果。
参数拟合的最后一个注意点是参数或者只能适用于过去,或者随着市场数据的不断更新,参数能在未来重复使用。这里所考虑的情况适用于参数拟合的每一个实例。然而,重复拟合参数本身会增加模型的复杂性。而且,取决于重新拟合实施的过程,也可以使用尽可能少的数据进行拟合,以免出现过度拟合的现象。
这直接导致我们思考一个重要的话题:过度拟合,在第3章已略有提及。事实上,资本市场会产生大量的数据。类似文艺复兴科技公司都以每天收集太字节(TeraByte)数据而著称。仅捕捉每个美国股票交易所每天所产生的信息就超过1太字节的存储量。然而,数据是极为嘈杂的。资本市场为什么是一个噪声过程是哲学家和经济学家研究的内容。但是不可否认的是,过去的数据对未来波动的影响很小。这就是大量的样本外检验r2近似于0.04的原因(样本外检验是下个小节的内容)。很少的信号埋藏在那些噪声数据中。因此,对能够近似解释噪声过程的模型应该持有极度怀疑的态度。
量化研究员必须对正测试的理论进行评估。采用大量度量指标和技术可以完成这个工作。但是最终,还是依靠大量的主观判断进行评估。毫无疑问,正是对本章所提出问题的良好判断力可以将成功的研究员区分出来。一般情况下,我们可能注意到好的研究员必须拥有充足的信心和技能,相信理论能得以发展和改进。至少同样重要的是,研究员也必须具备足够的怀疑态度和拥有谦逊的品质,能够平静地接受大部分思想完全失效的事实。
样本外检验
样本外检验(out-of-sample testing)是检验流程中的第二部分,是告知研究员去除样本内检验中那些虚拟表格(cheat sheet)的帮助后,策略在实际中是否起作用。到目前为止,模型的参数已经通过样本内检验数据集而固定,问题是基于已被选择的参数,模型是否能在全新的样本外数据集中真正起到作用。本章描述的许多统计量可以被用来做出判断。
许多宽客使用的另一个统计量是样本外检验的R2与样本内检验的R2的比值。这个比率是度量模型鲁棒性的另一种方法。如果样本外检验的R2与样本内检验的R2相当接近(即,如果比率大于等于0.5),则被认为是一个好的模型。如果比值显著小,研究者必须对模型的成功应用持怀疑态度。
对于样本外检验有许多种方法。最简单的方法是使用除去样本内检验数据的剩下部分进行检验。一些研究员使用滚动样本外数据的方法(rolling out-of-sample technique),在这种方法中,最古老的数据点将会被丢弃,最新的数据点被用来拟合(样本内)和检验(样本外)模型。这个过程重复进行,直至全部可行的数据样本被完全使用。滚动样本外数据的方法被认为不断随着时间的改变而有助于更新模型,模型不是依靠可能先前运行了很多年的单一数据集。然而,这个方法依赖于环境,缺点在于模型不断地吸收最近一段时间的信息,这可能减少其鲁棒性。这种权衡是极其微妙的,在任何个例中都可能被争辩,只是对模型效果进行一般性的判断是不切实际的。另一种方法是可以使用不断增长的数据窗口,随着时间不断改变,更多的数据被收集,样本外检验将持续进行。
虽然样本外检验明显有效,但能够正确地操作是一件相当有技巧的事情。想象研究员基于样本内数据完成模型拟合。然后,研究员基于样本外数据检验看上去鲁棒的模型。但是这个模型在新的数据集上表现较差。在这个模型上已经投入大量时间的研究员决定检查模型在样本外数据集上失败的理由,发现模型在样本外数据集发生亏损交易,是因为环境发生改变。找出这些原因后,研究员返回到模型并修正模型以解释新信息。他重新在样本中拟合模型,基于样本外数据重新检验。模型运行得很好。
然而,我们在庆祝之前,应该考虑研究院所做的工作。通过研究样本外数据的信息,并使用这些信息重新训练模型,研究员有效地使用样本外数据,并使它们成为样本内数据集的一部分。通常情况下,在样本内数据和样本外数据之间来回切换是个可怕的想法。这会带来更加微妙的问题。
我们常常对资本市场发生的事情有足够的了解,我们倾向于建立模型、选择可能在样本外数据集起作用的参数集。这会扭曲样本外检验的目的,因为在很多方面我们期待未来的表现。例如,我们可以回望20世纪90年代后期的互联网泡沫,了解到,实际上世界经济没有发生改变,长远来看,那些业绩亏损的企业不会广泛地被社会肯定。如果现在建立一个策略,可以知道互联网泡沫会发生并最终破灭。然而,1999年,对此却不是那么确定。
新的有趣的事情会混淆我们的理解。正因如此,检验当前最好的想法优于过去已经存在的情况是一种痴心妄想。这是前视偏差的一种微妙和可恶的形式,是研究中的一个重要问题。当研究员对用来检验模型有效性的样本外数据集越来越熟悉时,很可能他们正暗中假设他们对未来会有很多了解,实际上,历史上询问同样的问题时,他们并不了解。这种情况被一些宽客称为加工数据(burning data)。
为了降低因加工数据带来的前视偏差,一些量化公司合理地采取大量措施,将策略研发功能从策略选择功能中分离出来,扣除研究员的一大部分数据。按照这种方式,理论上,研究员甚至不清楚有何种数据和没有何种数据,这样会减少犯前视偏差错误的机会。为了减少苛刻的限制条件,研究员可能不被允许知道或看见所被使用的样本外数据,或者样本内和样本外测试的数据比例可能随机被修改,或者不通知给研究员。无论如何,正如你极易看到的,检验中的问题是复杂的,如果想要有成功的希望,就必须要求有很多构思和考虑。
另一种方法是首先判定样本外检验是有点神秘的,尤其对于有经验的、善于观察的研究员而言。样本外检验被放弃,这是出于对样本内数据结果的额外警惕和拟合参数的最小化的综合考虑。在这个方法中,宽客尽可能使用较少的参数,将参数值设置在合理的水平,简单地测试策略,寻找有良好表现的参数。
检验中的假设条件
检验流程中的另一组成部分是假设条件,这些有关交易策略的假设条件在历史上已被检验。这里我们讨论两个例子:交易成本和(股票市场中性策略或多头/空头策略)空头头寸的可得性。
交易成本已经被研究过,包含佣金和手续费、滑点、市场冲击。有趣的是,在研究过程中,交易策略过去被实施实际上需要的成本并没有经验证据。这是因为,交易策略实际上并没有真实发生,而是目前基于历史数据正被研究。因此,研究员必须做出一些假设,假设订单因为市场冲击而造成的成本大小。
这些假设条件在确定策略好坏方面是很重要的。我们重新使用一个极端例子,来理解为什么会是这样。想象我们假设交易是完全无成本的情形。这可能使得非常高频的交易策略更具吸引力,因为,实际上只要预测到价格上的任何改变,无论是多小的改变,交易似乎都值得进行。想象一个模型在55%的时间里交易是正确的,当交易正确时,每股会获得0.01美元的收益。模型在45%的时间里是错误的,当交易错误时,每股会损失0.01美元。这样,每100股交易,期望收益是0.10美元。但是当这个模型被实施时,证明实际交易成本是平均每股0.01美元。这表明策略实际上在55%的时间里是收支平衡的,在45%的时间里每股亏损0.02美元。实际结果是,每100股不是盈利0.10美元,而是亏损0.90美元,这明显是一个较差的结果。一般而言,过高估计交易成本会使得宽客持有头寸时间长于可能的最佳值。然而低估交易成本将使得宽客太频繁地更换投资组合,产生额外的交易成本。如果我们在这方面不得不犯错的话,过高估计比过低估计更有意义,但能够近似正确估计成本仍是更受欢迎的事情。
在检验股票市场中性策略或多头/空头策略时,宽客做出的第二种假设条件与空头头寸的可得性(availability of short positions)相关。想象一个市场中性策略的量化交易员,根据策略设计,持有与多头头寸数量大约相等的空头头寸。随着时间的推移,通过发现价格被高估的股票,空头头寸规模会显著增加,在市场下跌时获取盈利,从而减少策略的内在风险。然而事实是,空头名单,尤其是最易成功的空头名单,在卖空限制(hard-to-borrow)列表中。卖空限制列表是那些通常被经纪商限制做空的股票,因为经纪商不能机械地借出股票。如果没有真实的股票被解除,这笔交易将被认为是裸卖空(naked short sale),这在美国是不合法的行为。因此,这项交易将不会像回测时预期的一样被执行。如果模型不了解卖空限制政策(模型要警惕过去发生的这些问题并不是一件小事,因为这些历史数据很难获得),研究员很容易愚蠢地认为空头组合将能够带来价值,而现实中并不可能存在。这是因为当他真正进行投资组合时,才会发现不能进行最优的空头交易,被迫使用较差的空头交易代替。