如何负责任地回测R平方?
R平方:回测前先定义概念
R平方(常写作R²)是一种统计量,用于描述模型或关系能解释多少观测结果的变化。在回测中,关键责任不是将R²本身视为交易信号,而是明确定义你用什么变量对什么变量进行回归,以及在你的使用场景中“被解释的结果”意味着什么。
一个负责任的工作流程应从写下以下内容开始:
- 因变量(你要测量的结果)
- 自变量(你使用的特征或指标值)
- 计算关系所用的方法(例如回归或类似相关性的方法)
- 时间对齐规则(哪个时间戳/价格对应哪个周期的结果)
如果你无法精确陈述这些内容,回测结果就无法被独立验证。
机制:确定数据、假设和成本
只有在数据准备规则明确的情况下,回测才有意义。常见的责任包括:
数据定义与采样
选择一致的时间网格(例如每个K线收盘价),并说明如何处理缺失数据。定义用于计算R²的回看窗口。如果你使用滚动窗口,请说明其长度,以及是否在每个K线更新,还是仅在特定时间更新。
时间对齐与泄漏控制
常见错误是引入前瞻性偏差:使用在决策时点尚未可知的信息。制定一个对齐规则,例如“使用截至时间t的数据计算的指标值,用于评估从t到t+1期间的结果”。然后在代码中强制执行,并通过抽查日期来验证。
成本与执行模型
即使你仅测试一个关系统计量,许多工作流程最终会将其转化为决策。如果这样做,就必须建模实际摩擦:
- 买卖价差假设
- 佣金或费用
- 由市场影响或订单成交导致的滑点
一个负责任的回测应将成本视为数据到结果流程的一部分,而非事后补充。否则,R²可能看起来很强,但任何实际的、考虑成本的结果可能更弱或不一致。
证据:使用偏差控制和样本外检验
为验证你的“R²效应”不是人为产物,请使用数据分离和严格评估。
偏差控制
至少应控制主要偏差来源:
- 前瞻性偏差(时间对齐)
- 选择偏差(在看到结果后选择特定周期)
- 过拟合偏差(调整参数以最大化样本内表现)
一种实用方法是,在最终评估步骤前,将所有参数选择(窗口长度、预处理规则、阈值)视为固定。
样本外测试
在用于定义关系的同一数据上计算R²,可能高估其可靠性。应使用:
- 训练(样本内)周期来设定任何选择
- 验证周期以确认你不是在拟合噪声
- 最终的样本外周期进行最保守的评估
如果关系在不同周期间发生显著变化,这本身就是一个重要发现。
一个关键限制及其重要性
一个主要问题是,历史解释关系不能保证未来稳定性。市场状态可能变化,当条件改变时,统计拟合可能退化,尤其是在成本、流动性或执行质量与假设不同时。
你应能解释的局限性与风险
一个负责任的回测应包含明确的局限性说明,涵盖:
- 非平稳性:关系可能随时间变化。
- 模型设定敏感性:输入或对齐的微小变化可能改变R²。
- 过拟合风险:高样本内拟合仍可能导致实际表现疲软。
- 成本敏感性:忽略价差和滑点可能使看似存在的关系变成幻觉。
还需记住:R²是对结果定义的拟合度量。如果你的结果变量选择不当,或与实际决策机会不一致,该统计量可能产生误导。
验证:下一步可独立检查的内容
为独立验证一个负责任的R²回测,你应能向他人展示:
- 因变量和自变量的精确定义
- 时间对齐规则和窗口方法
- 流程中使用的成本和执行假设
- 数据划分策略(训练/验证/样本外)及哪些参数被调整
- 至少一个你测试过的失败模式(例如通过已知日期偏移检查前瞻性偏差)