第 2 章 · 04 验证工具与回测陷阱


文档摘要

第 2 章 · 04 验证工具与回测陷阱 本节摘要:回测跑出一个漂亮的净值曲线,远远不够——你还得问「这份表现有多脆弱」。本节讲清 Vibe-Trading 在 Validate 阶段可挂载的验证工具:基准对比(benchmark)、蒙特卡洛(Monte Carlo)、Bootstrap 置信区间、Walk-Forward、run card,它们各自检验什么、局限在哪。然后是回测的两大陷阱—— (偷看未来)与违反 PIT(点在时间),一旦违反,回测结果会彻底失真,实盘必然失效。读完本节,你能判断一个回测结果到底可不可信,并识别最常见的作弊式错误。 内容来源:英文文档 的 Validation 部分汉化,补充原项目中文入门教程第 5 章与术语表的陷阱说明。

第 2 章 · 04 验证工具与回测陷阱

本节摘要:回测跑出一个漂亮的净值曲线,远远不够——你还得问「这份表现有多脆弱」。本节讲清 Vibe-Trading 在 Validate 阶段可挂载的验证工具:基准对比(benchmark)、蒙特卡洛(Monte Carlo)、Bootstrap 置信区间、Walk-Forward、run card,它们各自检验什么、局限在哪。然后是回测的两大陷阱——lookahead(偷看未来)与违反 PIT(点在时间),一旦违反,回测结果会彻底失真,实盘必然失效。读完本节,你能判断一个回测结果到底可不可信,并识别最常见的作弊式错误。

内容来源:英文文档 core-concepts/backtesting 的 Validation 部分汉化,补充原项目中文入门教程第 5 章与术语表的陷阱说明。

学习目标

阅读完本节,你应当能够:

  1. 列举 Vibe-Trading 可挂载的验证工具(基准对比、蒙特卡洛、Bootstrap、Walk-Forward、run card),并说明各自检验什么。
  2. 理解验证工具是**「证据助手」而非「保证」**,能解释为什么蒙特卡洛稳健也不代表未来一定稳。
  3. 识别回测第一大忌 lookahead(偷看未来),并说出 Vibe-Trading 在哪几处设防。
  4. 识别违反 PIT(点在时间)的错误,理解为什么财务数据特别容易踩这个坑。
  5. 判断一份回测报告可不可信,知道该看哪些证据、警惕哪些红旗。
  6. 理解 run card 为什么是「可复查」的关键产物。

一、为什么光看净值曲线不够

新手看回测,最爱看的就是那条「一路向右上」的净值曲线。但这条曲线本身说明不了太多——因为它可能是:

  • 过拟合:参数按历史优化,天然适配,样本外失效。
  • 偷看未来:用了当时根本不知道的信息。
  • 只赚一年的钱:其余年份都在亏,被均值拉平。
  • 成本没扣全:看起来赚,加上真实费用就亏。

所以一个可信的回测,不能只给一条曲线,而要在结果上挂载多角度的验证证据。这正是第 2 章 01 五步工作流里 Validate 阶段做的事。

💡 验证的目的:不是证明「这个策略一定能赚钱」,而是回答「这份历史表现有多脆弱」「换一种扰动还能不能成立」「是不是只在特定条件下好看」。验证降低不确定性,但不能消除。

二、验证工具一:基准对比(benchmark comparison)

  • 检验什么:策略有没有跑赢参照物。
  • 局限:跑赢 benchmark 不代表未来继续跑赢;benchmark 选错了对比无意义。

策略不是只看「赚不赚钱」,而是看「有没有跑赢一个简单的参照物」。如果你费尽心机做策略,一年收益 8%,但同期 SPY 涨了 15%,那这个策略其实没给你带来超额收益——你直接买 SPY 就好。

常见的 benchmark:

  • A 股:沪深 300、中证 500、中证 1000。
  • 美股/全球:SPY、QQQ、MSCI World。
  • 加密:BTC、BTC-USDT。

💡 选 benchmark 的原则:选一个「你不用努力就能拿到的被动收益」作为参照。如果你的复杂策略跑不赢简单的指数 ETF,它的价值就要打问号。

三、验证工具二:蒙特卡洛(Monte Carlo)

  • 检验什么:结果对随机扰动的鲁棒性。
  • 局限:扰动模型本身是假设的,真实市场的极端情况可能超出扰动范围。

蒙特卡洛的思路是:对回测里的某些不确定成分(成交价、成交顺序、参数微扰)做大量随机扰动,看结果是否稳定。如果换几十种随机场景策略都赚钱,说明它对噪声不敏感;如果稍有扰动就亏,说明它很脆弱、可能过拟合。

原始回测: 净值 1.5 扰动 1: 净值 1.4 扰动 2: 净值 1.6 扰动 3: 净值 0.9 ← 警惕!某些扰动下大幅亏损 ... 扰动 N: 净值 1.5

⚠️ 蒙特卡洛的边界:它能检验「对随机噪声稳不稳」,但检验不了「市场结构变化」。如果市场风格整个切换(比如从动量市变成反转市),蒙特卡洛再稳健也无济于事。

四、验证工具三:Bootstrap 置信区间

  • 检验什么:收益估计的置信区间(不是一个点值,而是一个范围)。
  • 局限:基于历史样本的重采样,如果历史样本本身有偏,置信区间也会有偏。

Bootstrap 是一种重采样方法:从历史收益序列里有放回地反复抽样,得到大量「替代历史」,从而给出收益估计的分布。它的价值是让你不只看到「年化 12%」这个点估计,而是看到「年化大概率落在 8%~16%」这样的区间——区间越窄,估计越可信;区间宽到包含 0,说明这个收益可能只是运气。

💡 Bootstrap vs 蒙特卡洛:蒙特卡洛是「给模型加随机扰动」,Bootstrap 是「对历史样本重采样」。两者都用来评估稳健性,但思路不同。

五、验证工具四:Walk-Forward

  • 检验什么:策略是否过拟合——在「样本外」是否仍然有效。
  • 局限:Walk-Forward 通过不代表未来一定行,只是降低了过拟合嫌疑。

Walk-Forward(前推验证)是检验过拟合最有力的工具。它的做法是把历史切成多段,每段「用前一段拟合参数,在下一段(样本外)测试」,然后滚动前进:

时段 1: [训练] → [测试] 时段 2: [训练 训练] → [测试] 时段 3: [训练 训练 训练] → [测试] ... 汇总所有「测试」段的表现,看样本外是否稳定。

如果一个策略在所有 Walk-Forward 的样本外段都赚钱,说明它不是单纯「背下了历史」;如果样本内很好看、样本外一塌糊涂,那就是过拟合。

⚠️ 过拟合是回测的头号敌人:参数越多、调优越细,过拟合风险越高。一个朴素的、参数少的策略,即使历史表现稍逊,往往比一个高度优化的复杂策略更可信。

六、验证工具五:run card

  • 作用:记录这次运行的全部参数、数据、时间、引擎,是「可复查」的关键。
  • 局限:run card 只是「如实记录」,它不判断策略好坏,但让你能复查。

run card 是一次研究运行的「身份证」。它记录:

  • 用了哪些标的、哪段时间。
  • 哪个数据源、哪个引擎、什么 bar 周期。
  • 哪些参数、哪个版本的 signal_engine.py
  • 运行时间、运行人、运行环境。

有了 run card,三个月后你想复盘「当时那个回测到底怎么跑的」,就有据可查;想用同样的设定重跑验证复现,也能精确复原。

💡 run card 与 artifact:run card 是 artifact 体系的一部分。第 2 章 01 讲过,artifact 痕迹是「研究工作台」区别于「问答机器人」的根本,run card 是其中最关键的一类痕迹。

七、回测第一大忌:lookahead(偷看未来)

讲完验证工具,来讲陷阱。第一个、也是最致命的陷阱叫 lookahead(偷看未来)——用了「当时还不知道的信息」假装提前知道。

典型场景:

  • 用今日收盘价决定今日是否买入:但你今天开盘下单时,根本不知道今天收盘价是多少。
  • 用财报数据时点错位:某公司 Q3 财报在 10 月才发布,你在 7 月的回测里就用了 Q3 数据。
  • 用未来才清洗好的数据:历史数据被事后修正过(比如退市股票被剔除),你用了「干净」的当前视角去回测过去。

一旦偷看未来,回测会给出虚假的优异表现,而这套规则在真实交易里必然失效——因为真实交易里你根本拿不到那些「未来信息」。

⚠️ lookahead 是回测第一大忌。Vibe-Trading 在多处设防:

  • 因子算子禁止负向 shift:不允许用未来的数据算当前信号。
  • 回测用下一根 bar 执行:今天生成的信号,在下一根 bar 的开盘价成交,降低偷看风险。
  • 财务字段强调 PIT:只用当时已公开的财报数据。

八、回测第二陷阱:违反 PIT(点在时间)

PIT(Point-in-time,点在时间) 的原则是:在任意时刻,只使用当时已经公开、已经可获得的数据。

PIT 和 lookahead 是一对相关但侧重点不同的概念:

  • lookahead 强调「时间方向」——不能用未来的数据。
  • PIT 强调「数据可用性」——只能用当时已公开的数据,即使这些数据描述的是更早的时期。

最容易违反 PIT 的是财务数据。比如某公司 2023 年 Q3 的财报,描述的是 7-9 月的经营情况,但这些数据要到 10 月底才公开。如果你在 8 月的回测里就用了「Q3 财报数据」,虽然数据描述的是 7-9 月(看起来是「过去」),但它在 8 月根本不可用——这就是违反 PIT。

Vibe-Trading 在三处强调 PIT 边界:

  1. 财务字段:基本面因子和富化工作流严格遵守财报发布时点。
  2. Shadow Account 入场上下文:复盘你的交易时,只用当时已公开的信息。
  3. 回测验证:Ground 阶段拉取数据时,只使用当时已公开的部分。

💡 怎么自查 PIT:对每个用到的数据,问自己「在回测的那个时刻,这个数据已经公开了吗?」如果答不上来或答「没有」,就是违反 PIT。

九、其他常见回测陷阱

除了 lookahead 和 PIT,还有几个新手容易踩的坑:

  • 存活者偏差(survivorship bias):回测用的「当前成分股」里,已经剔除了退市、被并购的股票。只用存活下来的股票回测,会高估收益。正确做法是用当时的成分股清单(point-in-time 成分)。
  • 数据窥探(data snooping):反复在同一段历史上试不同策略,最终总能找到「恰好适配」的那个,但这只是巧合。Walk-Forward 和样本外验证是对抗数据窥探的工具。
  • 忽略成本:不扣手续费、滑点、印花税,或扣得太低,会让回测虚高。
  • 过拟合参数:参数越多、调得越细,过拟合越严重。崇尚简单。

十、如何判断一份回测可不可信

把本节的工具和陷阱汇总,给你一个「体检清单」:

检查项 通过标准
benchmark 对比 跑赢简单的被动参照(如 SPY/沪深 300)
蒙特卡洛 对随机扰动稳健,不存在某扰动下大幅亏损
Bootstrap 置信区间 收益区间窄且不含 0(或远离 0)
Walk-Forward 样本外段稳定,不是只在样本内好看
lookahead 自查 信号只用到当时已知信息,执行在下一根 bar
PIT 自查 财务等数据只用当时已公开部分
成本扣除 扣全手续费、滑点、印花税
run card 完整记录参数/数据/时间/引擎,可复查复现

⚠️ 即使全部通过,也不构成投资建议。验证工具降低不确定性,但市场结构变化、黑天鹅事件、流动性枯竭都可能让历史验证失效。实盘前仍需经过你自己的判断和模拟盘测试。

本节要点回顾

  1. 验证的目的:回答「这份历史表现有多脆弱」,降低不确定性但不消除。
  2. 基准对比:策略要跑赢简单的被动参照(沪深 300/SPY),否则没超额价值。
  3. 蒙特卡洛:检验对随机扰动的鲁棒性,但检验不了市场结构变化。
  4. Bootstrap:给出收益置信区间(不是点值),区间窄且远离 0 才可信。
  5. Walk-Forward:用样本外段检验过拟合,是对抗数据窥探的最有力工具。
  6. run card:记录运行全要素,是「可复查可复现」的关键 artifact。
  7. 回测第一大忌 lookahead:偷看未来——Vibe-Trading 用算子禁止负向 shift、下一根 bar 执行、PIT 财务字段三道防线。
  8. PIT 原则:只用当时已公开数据,财务数据尤其要警惕「描述过去但当时未公开」的坑。
  9. 其他陷阱:存活者偏差、数据窥探、忽略成本、过拟合参数。

⚠️ 所有验证工具都是「证据助手」而非「保证」。本节及整个教程不构成投资建议,实盘前必须经过你自己的判断、券商确认、模拟盘验证和风险控制。

至此第 2 章结束。你已经掌握了研究工作流五步、策略与 Signal Engine、回测如何工作、验证工具与陷阱。下一章我们将进入数据源与券商连接——先把市场、数据源、券商账户三个最易混淆的概念彻底分开,再讲数据路由与券商连接器的安全分级。


发布者: 作者: HKUDS 转发
评论区 (0)
U