投资指南

存活者偏差回测及缓解其影响

投资9 min read

在回测中,存活者偏差发生在您仅使用存活到回测期末的证券进行策略测试,而忽略了被摘牌或移除的证券。该省略可能使历史回报看起来更好、风险看起来更小,而不是在更完整的模拟中所呈现的样子。

9 min read

用Finelo练习投资

通过指导课程、模拟器练习和结构化挑战培养实用的投资技能。

探索Finelo

回测中的存活者偏差发生在您使用仅存活到回测期末的证券来测试某策略时,同时省略了那些被摘牌或移除的证券。此类省略会使历史回报看起来更好、风险看起来更小,而不像在更完整模拟中那样呈现。QuantConnect 在其 Research Guide 中将此问题描述为对存活的证券进行测试,同时排除了被摘牌的名称。

探索Finelo的28天挑战

通过引导挑战路径,将学习变成一种日常习惯。

查看挑战

教育提示:本文仅供教育用途,不构成财务、投资、法律或税务建议。Finelo 不对任何证券、策略、平台或交易提出推荐。投资和交易存在风险,包括可能损失本金。请通过官方渠道或合格的专业人士核实最新规则、费用、产品条款及适合性。

为什么存活者偏差在回测中很重要

有用的回测应尝试重建每个历史决策日可投资的选择和信息。存活者偏差通过事后更改投资宇宙来破坏这种现实性。

例如,如果一项测试使用今天的指数成分来模拟 20 年前的策略,它可能会排除那些曾经入选但后来失败、合并或被摘牌的公司。这样策略就避免了真实投资者可能面临的损失或被迫退出。

这很重要,因为回测常常用于判断某策略是否看起来具有弹性、风险如何或是否值得进一步研究。如果数据集悄悄地移除了过去的失败者,结果可能会高估策略在历史上的强劲表现。

存活者偏差如何进入回测

存活者偏差通常通过数据选择而非明显的建模选择出现。研究者可能认为他们在测试历史策略,而数据集实际上是基于当前存活证券的名单构建的。

常见的进入点包括:

  • 基于当前的指数列表进行回测,而未重建历史成员名单。
  • 使用仅返回活跃代码或不暴露摘牌事件的供应商数据。
  • 在已过滤的名单上运行筛选,而不是历史快照。
  • 从“今天的赢家”构建投资宇宙并将该宇宙向回应用于过去。
  • 忽略公司行动、停牌、破产、收购或其他摘牌结果。

一个快速审计方法是将首次测试日期使用的代码集合与该日期的历史快照进行比较。如果当时存在但后来被摘牌的证券缺失,则该测试很可能存在存活者偏差。

可信的历史投资宇宙应包含什么

更强健的回测应在每个决策或再平衡日期模拟当时的宇宙。它不应假定今天可用的证券是过去唯一可用的证券。

可信的流程通常包括:

  • 在每个历史决策日存在的投资宇宙。
  • 历史成分名单和成员规则。
  • 被摘牌的代码及其最终结果。
  • 当时已知的公司行动记录。
  • 交易成本、滑点和现实的执行约束。
  • 可重复的数据查询和有版本管理的数据集。

QuantConnect 的 Research Guide 将存活者偏差定义为仅对存活到期末的证券进行测试,同时省略被摘牌的名称。在实践中,这种省略会移除部分失败的阶段,从而可能使模拟对真实交易的代表性降低。

偏差如何扭曲绩效指标

存活者偏差可以同时影响多个回测指标。最明显的影响是回报被夸大,但风险衡量也可能变得不现实。

典型的扭曲包括:

  • 报告回报更高:过去的失败者可能在测试中缺失,因此它们的损失未进入计算。
  • 最大回撤更低:被迫退出、破产或在摘牌前的急剧下跌可能缺失。
  • 表观尾部风险更低:当失败的证券被移除时,极端损失的可见性降低。
  • 周转率和成本被低估:摘牌和被迫替换可能产生真实的交易活动,而仅活跃数据集不会捕捉这些活动。
  • 稳健性被高估:由于排除了历史上最弱的名称,策略看起来在时间跨度上更稳定。

每种扭曲背后的逻辑相同:移除负面结果会减少观测到的下行风险,使策略看起来比实际使用时更清晰。

用Finelo练习投资

通过指导课程、模拟器练习和结构化挑战培养实用的投资技能。

探索Finelo

实用审查框架

一个简单的审查流程可以帮助识别存活者偏差是否可能具有实质性影响。

1. 识别风险

从基本检查开始:

  • 将起始日期的代码列表与该日期的历史快照进行比较。
  • 询问数据供应商该数据源是否排除了被摘牌的代码。
  • 确认该数据源是否提供无存活者偏差的历史记录。
  • 审查指数成员资格是按历史重建还是基于当前成分。
  • 在不同时间切片上运行模型,寻找无法解释的绩效变化。

如果投资宇宙仅包含活跃代码,则在衡量差异之前应谨慎对待回测结果。

2. 量化差异

最清晰的测试是并排比较:

  • 在通常的数据集上运行策略。
  • 在无存活者偏差的宇宙上运行相同策略。
  • 保持成本、执行假设和信号规则相同。
  • 比较累计回报、最大回撤、年化波动率、周转率和实现成本。

两个简单的比较度量是:

  • 累计回报的百分比变化 = (R_full − R_active) / |R_active| × 100
  • 最大回撤的绝对变化 = DD_full − DD_active

解读时应关注不仅是平均回报,还应关注尾部损失、被迫退出和成本变化。如果回报的微小变化伴随回撤或实现成本的大幅变化,也可能具有重要性。

3. 决定如何处理原始结果

如果无存活者偏差的运行显示出实质上更差的回撤或实现成本的大幅变化,则原始测试很可能过于乐观。在这种情况下,记录该问题并将仅活跃数据的结果视为不那么可靠的历史估计是有用的。

接下来的研究步骤通常是重建历史成员名单、模拟摘牌收益并在依赖策略历史可信度之前重新运行测试。

实例演示:有与无无存活者偏差数据的对比

考虑一个使用按月再平衡并基于股票排名列表的假想权益策略。研究者首先使用活跃代码数据集运行该策略。结果显示累计回报强劲、回撤适中且周转率可控。

为测试这些结果是否依赖于存活者偏差,研究者可以运行一个“有与无”的对比:

  1. 使用常用的数据集和设置运行基线回测。
  2. 保存结果、交易清单和代码历史。
  3. 获取相同时期的无存活者偏差的历史成分或原始代码历史。
  4. 对完整的历史宇宙重新运行完全相同的策略规则。
  5. 保持交易成本、滑点、头寸规模和执行假设不变。
  6. 比较累计回报、最大回撤、周转率、实现成本和交易行为变化。
  7. 记录数据集版本、供应商回复和使用的过滤代码。

如果第二次测试产生较低的回报和更深的回撤,则差异有助于量化原始表现中有多少是依赖于仅活跃数据集的。如果结果相似,这并不证明策略现实可行,但可以减少对该特定偏差的担忧。

减少存活者偏差的清单

在审查回测时使用此清单:

  • 获取无存活者偏差的历史成分或原始代码历史。
  • 在投资宇宙中包含被摘牌的代码。
  • 对摘牌结果(如破产、被收购或停牌)建模。
  • 在每个测试日期重建历史过滤器,仅使用同期可用数据。
  • 使用相关时期可获得的记录应用公司行动。
  • 在适用处对摘牌给予收益入账。
  • 并排比较仅活跃与无存活者偏差的结果。
  • 在不同数据集和时间段上运行敏感性分析。
  • 对数据集、查询和代码进行版本管理,以便可以审计工作。
操作 为何有助 如何实施
使用无存活者偏差的数据集 确保历史中出现被摘牌的失败者 向供应商请求历史成分快照或原始代码历史
包含摘牌事件 捕捉被迫退出和真实结果 为最后交易处理添加规则并在摘牌时模拟收益
重建历史过滤器 防止事后选择 在每个历史日期使用仅可用数据运行筛选
记录并版本化数据 便于审计与复现 存储数据集快照、过滤代码和查询参数

这其中存在权衡。重建历史宇宙与模拟摘牌会增加数据成本、存储需求和工程工作量。即便使用无存活者偏差的数据,回测仍然依赖于关于执行、市场冲击、公司行动时点和交易成本的假设。

存活者偏差也只是可能的问题之一。如果未分别解决,前视偏差、选择偏差和数据挖掘仍可使模拟不现实。

常见问题

什么是存活者偏差?

存活者偏差是一种抽样错误,发生在分析仅包含存活到结束的实体而排除未存活的实体。在回测中,省略被摘牌的证券会使绩效看起来比在更完整的历史宇宙中更好,QuantConnect 在其 Research Guide 中有相关描述。

存活者偏差如何影响回测?

它倾向于夸大回报并低估回撤,因为数据集中缺少一些失败、被移除或被摘牌的公司。最清晰的检查是将仅活跃的数据集与无存活者偏差的历史宇宙进行比较。

我如何判断我的回测是否受影响?

将起始日期的代码列表与该日期的历史快照进行比较。如果当时存在但后来被摘牌的代码缺失,则该测试很可能存在偏差。同时向数据供应商确认数据源是否排除了被摘牌的代码也有帮助。

有哪些立即可做的改进准确性的步骤?

在可用时使用无存活者偏差的历史数据,重建历史过滤器和成员资格,模拟摘牌事件和公司行动,并并排重新运行相同规则。对数据集进行版本管理并保存过滤代码也使结果更易审查。

结论

存活者偏差是导致回测过度乐观的常见来源。它发生在历史宇宙排除了未存活到测试期末的证券时,这可能会夸大回报并降低表观风险。

实用的应对方法是将原始测试与无存活者偏差的运行进行比较,然后审查累计回报、最大回撤、周转率和实现成本的变化。如果修正后的运行对结果有实质性改变,则应将原始回测视为较为乐观的估计。

欲了解更广泛的金融教育资源,请访问 Finelo。

投资存活者偏差回测初学者

用Finelo练习投资

通过指导课程、模拟器练习和结构化挑战培养实用的投资技能。

探索Finelo

关于作者

Finelo Team

Finelo 团队打造实用的投资与交易教育,通过结构化挑战、模拟器练习和短小课程,帮助初学者更快学习。

继续阅读 — 相关文章

Make your next read a first step.

Take what sparked your curiosity and explore it through a guided, 28-day learning challenge.

Find your learning path