量化百科

基于预测模型的交易系统(二)

由ypyu创建,最终由ypyu 被浏览 17 用户

预测模型背后的基本思想是指标可能包含可以用来预测前瞻性变量(称为目标变量)的信息。预测模型的任务是寻找和利用任何此类信息。

日期 趋势性 波动率 日回报率

20130214 0.251 1.572 0.144

20130215 0.101 1.778 0.055

20130216 -0.167 2.004 -0.013

假设我们使用几年的数据建立模型,并让它学习如何用前一期的两个指标,趋势性和波动率,来对日回报率进行预测。在机器学习中,这个过程对应的术语称为模型的训练。然后,我们可以利用近期价格计算出当期趋势性等于0.225,波动率等于1.244。基于这些数据,训练的模型能预测出目标变量日回报率为0.152。(这些都是虚构的数字。)基于对市场很有可能出现大幅上涨的预测,我们可以选择建立多头仓位。

将预测结果转化为交易决策

直觉告诉我们,我们应该将更多的注意力放在极端预测值之上,而非围绕模型预测范围内的常规值。如果模型预测市场明天将上涨0.001%,我们不会像模型预测上涨5.8%那样建立多头仓位。这种直觉是正确的,因为我们的研究表明,一般来说,预测波动幅度与预测的成功率有高度的相关性。预测值较大相比预测值较小,更有可能预示出未来有利可图的市场波动。做出交易决策的标准方法是比较预测值与固定阀值。如果预测值大于或等于某一上限阀值(通常为正),则建立多头头寸。如果预测值小于或等于某一下限阀值(通常为负),则建立空头头寸。头寸的持仓周期隐含在对目标的定义中。很明显,阀值是在交易次数和胜率之间的权衡。如果设定的阀值接近0,预测值将频繁超过阀值,从而频繁触发交易,这类交易亏损率相对比较高。相反,如果设定的阀值很大,预测值将很少能超过阀值,这样交易次数少,胜率也就相对比较高。我们已经注意到,预测值大小和交易胜算有很大相关性。因此,通过选择一个合适的阀值,我们可以控制我们的交易系统。

交易系统合成与提升(Trading System Synthesis and Boosting,TSSB)自动选择最优的多头和空头阀值,从而最大化多头系统和空头系统的盈利因子。盈利因子,作为常见的交易系统性能指标,代表盈利交易的总盈利与亏损交易的总亏损之比。为了避免交易次数过少造成的过度拟合,用户可以定义最小交易次数,可以是一个绝对值或是相对历史数据长度的一定百分比。此外,TSSB可以在多空两边分别使用两组阀值,这样就可以生成两组信号,一组交易胜算处于正常水平,另一组属于偏保守的高胜算交易。最后,在许多应用中,TSSB会给出对应不同的阀值所展现出的交易系统绩效。

用户基于描述未来价格走势的最近观察历史和目标变量指定指标变量。TSSB提供原始历史市场数据(价和量),以及生成广泛的指标数据库和目标变量。给定一组指标,一个或多个模型被训练来预测目标变量。换句话说,模型学习使用指标中包含的预测信息,以预测目标所体现的未来。

检验交易系统

TSSB为预测模型交易或过滤系统提供了很多检测功能。在这里,我们讨论两个通用的测试方法:交叉验证和外推检验。这些在预测中都是主要的检验标准。绝大多数测试方法的基本原则,是将完整的历史数据分成几个独立的子集。其中一个子集被称为训练集或开发集,用于训练预测模型。另一个子集,称为测试集或验证集,用于对训练模型进行评估。

这里的关键是,用于训练模型的数据不能用于模型评估。在相当一般的情况下,这种互斥分离保证了测试集下的性能是对未来性能表现的无偏估计。换句话说,虽然观察到的性能几乎肯定不会等于未来的性能,但是它并不存在乐观或悲观的系统偏差。获得一个对未来绩效的无偏估计是交易系统开发和测试的两个目标之一。另一个目标是对于绩效中运气成分进行统计显著性检验。

在早期的模型构建和检验中,由于计算机性能的限制,对于数据分解为训练集和测试集只是一次。这是一种非常低效率的数据使用方式。TSSB提供交叉验证和推进分析的功能。这些技术将数据多次分成训练集和测试集,并组合这些性能统计数据提供交易系统真实水平的一个无偏估计。这样有效利用了宝贵和有限的历史数据。

推进分析

推进分析是一种简单、直观且受到广泛应用的检验方法。基本原理是,我们用一段相对较长的数据对模型进行训练。然后,用紧接着训练数据的一段相对较短的数据对模型进行测试。然后我们以测试集数据的长度向前推进训练数据集和测试数据集,并不断重复之前的步骤。直到数据全部被使用,推进分析结束。我们把所有测试模块的交易打包计算性能指标。这里是一个简单的推进分析的例子:

(1)使用1990年至2010年的数据训练模型,然后用2011年的数据测试模型;

(2)使用1991年至2011年的数据训练模型,然后用2012年的数据测试模型;

(3)使用1992年至2012年的数据训练模型,然后用2013年的数据测试模型;

把2011、2012和2013年所有测试集中的交易组合起来。这些交易算出来的性能可以作为模型性能的无偏估计。

推进分析的主要优势在于,它模拟的是现实的交易场景。大多数自动交易系统开发人员会定期再训练模型或对模型进行改进。因此,推进分析得出的结果模拟了实际交易过程中实际能拿到的结果。这是支持这种测试方法的一个令人信服的论点。

推进分析的另一优点是,它正确地反映了模型对于市场非平稳特征的反应。所有市场都会随着时间的推移而发展并改变它们的行为,有时在许多不同的状态下进行转变。不严格地说,这种市场动态的变化,也就是指标与目标变量之间的关系,称为非平稳。最好的预测模型对于这种变化有显著的鲁棒性,而推进分析能帮助我们判断模型的鲁棒性。

TSSB可以使用各种长度的测试数据集,使得评估模型应对非平稳的鲁棒性变得非常容易。假设当测试数据集很短的时候,模型取得了非常优异的外推结果。换句话说,模型并没有被要求对未来很远的数据进行预测。现在假设随着测试数据增多,外推绩效随之变差。这表明,模型并不能应对市场的快速变化。这类模型是具有风险的,并且需要不断的进行再训练以跟上当前市场状况。另一方面,如果随着测试数据增多,外推性能并没有太大波动,则表明模型在应对非平稳时是健壮的。这对于使用基于预测模型的方法开发交易系统是一个有价值的属性。见图1,它描述了沿着时间轴训练集和测试集的位置。

图的顶端部分描述的是推进的测试数据集较短的情形。底端部分描述的是推进的测试数据集较长的情形。

相比其他测试方法,比如交叉验证,推进分析只有一个缺点,那就是对于可用数据的使用效率较低。只有第一个训练数据集后面的数据才被用于测试。

交叉验证

并不是像推进分析一样在历史数据集末端对测试数据进行分割,交叉验证是对整个历史数据集进行均匀分配。例如,我们可以测试如下:

(1)使用2011年至2013年的数据训练模型,然后用2010年的数据测试模型;

(2)使用2010年至2013年,除开2011年的数据训练模型,然后用2011年的数据测试模型;

(3)使用2010年至2013年,除开2012年的数据训练模型,然后用2012年的数据测试模型;

(4)使用2010年至2013年,除开2013年的数据训练模型,然后用2013年的数据测试模型;

如下图2所示,在交叉验证中,每一步通常被称为一折(fold)。

相对于推进分析,交叉验证的明显优势就是数据集的每一部分都可能成为测试集的一部分。然而,这里有几个缺点是需要注意的。最严重的潜在问题是,交叉验证对于非平稳性很敏感。在推进分析中,只有相对较近的数据被当作测试对象。但是在交叉验证中,最开始的数据集也会被用于性能测试。如果早期的市场行为与近期状态显著不同,也就是指标与目标的关系已经发生变化,那么使用早期的数据进行测试可能不是一件明智的事情。

另一个缺点是偏哲学层面的,但它是值得注意的。不同于推进分析,交叉验证并不是模拟交易系统的实际场景。在交叉验证中,除了最后一折,我们使用的是未来的数据对测试模型进行测试。另外,在交叉验证中,重叠问题也比推进分析中显得更麻烦。

考虑重叠问题

在讨论交叉验证和推进分析时,我们都是假设各个数据集之间是相互独立的。不幸的是,事实往往并非如此。时间上相近的数据集,倾向于具有类似的指标值或目标。这通常以以下一个或两个方式呈现:

(1)TSSB中许多可用的目标并非只是向前推进一期。例如,假设我们的目标是未来10期的市场趋势。这是为了做出交易决策而预测的数量。如果某一天这个值很高,表明在随后的10天里市场趋势强烈向上,那么十有八九这个值明天也会比较高,前一天也可能很高。向前或向后一天,对于10天的目标变量窗口都有9天的重叠。这种时间序列数据的相关性被称为序列相关性。

(2)在大多数交易系统,指标通常会回溯相当长一段时间。例如,一个指标可能是前50天的市场趋势,或是衡量过去100天的波动率。因此,指标随时间变化非常慢。

这些事实有几个重要的意义。因为指标变化缓慢,模型的预测也慢慢地改变。因此,市场状态也变化缓慢。如果预测值高于阀值,它将持续多期高于阀值;相反,如果预测值低于阀值,它将持续多期低于阀值。这立即使得大多数常见的统计显著性检验变得无效,如t检验、靴环检验、蒙特卡洛排列检验等。TSSB确实包含几个统计显著性检验以减少序列相关性的影响。

指标和目标缺乏独立性还有另一个含义,这一点比仅仅使得显著性检验失效更加严重。测试结果的合理性本身也会由于偏差而被破坏。幸运地是,在TSSB中,这个问题能够通过重叠(OVERLAP)选项轻易解决。现在,我们将简单地探索问题的本质。

问题发生在训练数据集和测试数据集的分界附近。最简单的是推进分析的情形,只有一个(移动的)边界。假设目标包括未来十天的市场运动。考虑训练数据集的最后一节,它的目标包括测试模块开始的第一个10天。这种情况像所有的训练集一样,在预测模型的发展过程中发挥作用。现在考虑测试集中的第一个10天,正如已经指出的那样,其指标值与前期指标值将非常类似。因此,模型的预测值也将于前值相似。因为目标向前推进了10天,我们仅仅向前推进1天,留下9天重叠部分,这个测试集的目标将与前一数据集目标相似。由于前面的数据集与测试数据集特别类似,因此我们认为它们的绩效将类似于训练集的绩效。这个结果存在乐观偏差。我们的测试结果将比实际测试结果要优。(来源:CHINAQIR)

基于预测模型的交易系统(一)

标签

交易系统波动率