来源:雪球App,作者: 蜂鸟数据Trochil,(https://xueqiu.com/6282064369/154666047)
回测(backtest)可能是我们快速评估新交易策略的最佳方法。但是,如果使用不当这可能是我们最大的弱点-引导我们走上一条毁灭的错误道路。
对于初学者,回测是您借助历史数据模拟交易策略的过程。实际上,您可以看到如果您回到过去并在一定时期内使用自己的策略会发生什么。它主要由数据科学家和对冲基金使用,并通过测试和拒绝交易策略构想来简化评估数据策略功能的过程。
想像一下您已经获得了访问电话支付应用程序数据的权限。您可能会假设此信息将使您可以更准确地预测零售公司的股价,因为您可以准确地看到其收入。回溯测试可以让您通过查看过去使用该策略的方式来正式评估自己的能力。
顾名思义,回溯测试并非没有缺点。大多数情况下,模拟交易和实时交易存在偏差。
在设计回测时,我们尝试考虑多种因素:数学,统计学,心理学等等。这比看起来困难得多。实际上,即使对于有经验的数据科学家来说,当我们面临模拟中的偏见时,事情仍然可能会犯非常严重的错误。
在本文的其余部分中,我们解决了最常见的四种回测偏见。我们将研究导致它们的原因以及如何避免它们的策略。
优化偏差(Optimization Bias)
此偏差也称为数据监听偏差,该名称恰当地描述了其原因。如果我们认为我们所生活的世界是概率性的,那么就可以推断,迄今为止发生的一系列事件仅仅是多种可能结果的一种可能性。当我们查看历史数据时,我们看到的是可能发生的许多不同事情的单一版本。我将再重复一遍,因为要理解这一点很重要。历史数据包含来自大量可能性的事件的单个崩溃路径的信息。
这意味着,当我们在特定数据集上训练模型时,我们必须非常谨慎,不要创建一个精确描述所见数据的模型。如果我们添加足够的变量和特征,我们最终将找到一个有意义的模型-但它可能无法推广。相反,重要的是创建一个描述系统的模型,其中数据是事件的可能版本。
实际上,当我们向算法中添加太多参数并使其与我们的数据过于接近时,就会发生数据监听偏差。最终结果是,我们不仅开始捕获底层系统,而且开始修复随机结果集。当我们的模型查看历史数据时,它将表现良好(因为它与产生该特定结果的事件完美地映射)。但是,当面对新数据时,它的性能将崩溃,因为它无法应对随机事件的不同排列。
可以通过三个步骤来避免优化偏差:
l 避免这种偏差的最佳方法是使仿真系统尽可能简单。
l 保留较少的参数,并在不同的市场和时间段内模拟您的算法。
l 完成回测后,建议您通过不熟悉的新数据运行算法,以确保系统的真实性和有效性。
前视偏差(Look-ahead Bias)
这种偏见给缺乏时间序列预测经验的数据科学家带来了困扰。它是在训练模型以访问将来的数据时引起的。这很可能以多种方式发生,从明显地馈送数据集中的未来值到复杂的技术错误或规范化过程。
当时很难预见超前的偏见,因为我们人类的大脑倾向于忽略这样一个事实,即一条数据依赖于未来的信息,尤其是当我们自己可以访问这些数据时。在一个简单的示例中,假设您想为特征X创建归一化的值。在许多情况下,执行此操作的过程将是将每个值除以平均值。使用时间序列数据,这会产生前视偏差。通过将t(0)和t(n)之间的所有值相加然后除以n来创建平均值。这意味着在除t(n)之外的任何时间点,我们都使用了当时没有的信息!这是因为平均值包含有关序列中所有值的信息。相反,我们可能必须使用某种尾随或滚动均值。
当您对同一数据集进行回测时,您更有可能不由自主地在系统中引入先行偏差。这种偏见直接影响实盘交易的结果,因此请务必避免。这样做的两种方法可能是:
l 实时交易和回测都使用相同的算法或代码来完成,因为当代码尝试超前时,程序崩溃。
存活者偏差(Survivorship Bias)
这是编码人员或数据科学家忽略的另一个偏见。最初是在第二次世界大战中描述的,当时美国科学家希望改善飞机上的防弹位置。为了了解最需要改进的地方,他们记录了返回飞机的射击地点,并得到了类似的结果。你能弄清楚他们做了什么吗?
这里重要的是什么?
洞察力在于,通过以这种方式测量弹孔,他们实际上是在记录飞机被射击并幸存的地方。实际上,关键信息是他们数据集中没有的信息!
通过设想仅做空策略(我们试图在价值不高的公司上赚钱),可以最清楚地看出这一点。如果您使用的是今天存在的库存数据库。我们将仅考虑此时的可用存货或存货。您所缺少的是不再上市的股票(例如,由于价值下跌太多)。这是美国科学家在战争中看到的同样的生存偏见,因为最重要的数据点被排除在我们的数据集中!
考虑一种标准普尔500指数股票并希望击败该指数回报的策略。您很聪明,想要捕获不同的市场体制,所以您可以获取1998年以来的数据。当您要在该模型上进行交易时,只包括当前在市场上可交易的股票。至此,我们已经将存活者偏差引入我们构建的任何模型中。
麦肯锡(McKinsey)最近的一份报告显示,一家公司在标普500指数上的平均存活时间约为18年,因此我们可能会从数据中丢失大约250家公司。其中每一个都是错失的收入机会,但也是错失识别风险的机会。雷曼兄弟(Lehman Brothers)和Pets.com这两个例子可能都是令人难以置信的盈利或难以置信的代价-我们的模型没有这种经验。
存活者偏差可能会在实时交易中造成严重后果,但是,可以通过以下方法将其最小化:
l 采用包含退市股票的数据库
l 通过向回测中添加更多最新数据来避免这种情况
忽略市场影响
最后一个考虑因素更适用于大型机构投资者,而不是那些拥有少量资金的人,但意识到这一点很重要。简而言之,用于回测的数据历史记录不包括您的交易。当您进行交易时,市场将移动并适应您在此进行的更改,并且根据交易的具体情况,这可能会迅速侵蚀您的利润。
当您进行回测交易时,模拟不能真正预测您进行实物交易时实际上可能获得的价格。由于交易和定价是并行的,因此忽略市场影响会导致偏差,从而影响您的回测结果。解决此偏差的方法很简单:
l 始终假设交易时价格会不利于您。这种假设虽然保守,却消除了偏见,为您提供了更准确的结果。
最重要的是,您可以通过更改思考方式来避免回测中的谬误。如果您进行回测的目的是评估策略的准确性或效率,则可能会过于自信,并且在实际交易中充其量只能得出令人失望的结果。相反,您应该开始将回测视为消除策略的过滤过程。严格执行此操作,您将拥有更准确,可忽略不计的策略。祝好运!