1087 字
5 分钟

第 3 章:回测——偏差清单与防坑手册

全书最重要的一章。Chan 的立场:回测好不代表未来赚钱,但回测有硬伤一定亏钱——先学会不骗自己,再谈预测市场。第 2 版把示例代码全部更新为 Python/R。

数据层的三个坑#

  1. 拆分与分红复权:不复权的价格序列会把除权跳空当成暴跌信号——均值回归策略在假跳空上”完美获利”。用复权数据,且弄清是前复权还是后复权;
  2. 幸存者偏差:只含现存股票的数据库会系统性高估做多策略——你在用”事后知道谁活下来”的名单选股。低价股、均值回归类策略被高估得最狠;
  3. 最高/最低价不可信:日内极值只在极小的成交量上成立,凡是”按当日最低价买入”类规则,实盘几乎必然拿不到回测的成交价。

方法层的两大偏差#

前视偏差(look-ahead bias)#

用了决策时刻还不存在的信息:用当日收盘价决定当日开盘下单、用全样本均值做标准化、用未来才发布的财报数据。特征是回测好得离谱且无法在实盘复现。防法很机械:任何时点的决策只用该时点及以前的数据;程序上让信号计算与持仓收益错开至少一天。

数据窥探偏差(data-snooping bias)#

反复调参直到回测变好,等于让策略把历史噪声背下来。这是最隐蔽的坑,因为每一次”优化”看起来都像认真工作。Chan 的防坑套餐:

  • 样本外测试:数据切成训练/测试两段,测试段只许用一次;
  • 走样测试(walk-forward):滚动地”用过去拟合、在下一段验证”,模拟真实研究节奏;
  • 敏感性分析:参数微调(5 日改成 4 日、6 日)后绩效崩塌的策略,本质是噪声;
  • 简约原则:Chan 的经验法则是参数个数最好不超过 5 个——每加一个参数,所需样本量成倍增长;
  • 足够的样本量:信号出现次数太少(比如十年只交易 30 次)的回测没有统计意义。

环境层:交易成本与政体转换#

  • 交易成本三件套:佣金、买卖价差(滑点)、市场冲击。高换手策略对成本极度敏感——回测加上真实成本后由盈转亏,是新手策略的头号死因;
  • 政体转换(regime shift):市场结构的不可逆变化会让历史失效。书中美股的两个例子是 2001 年报价十进制化(吃掉大量做市类利润)与 2008 年卖空禁令;A 股对应的有股权分置改革、涨跌停与 T+1 规则变化、注册制。跨越政体的回测要分段看

书中示例:GLD-GDX 配对交易#

Chan 用金价 ETF(GLD)与金矿股 ETF(GDX)的价差回归做贯穿示例:两者由同一基本面驱动,价差拉开后做多便宜方、做空昂贵方,等待回归。它浓缩了本章所有要点——需要复权数据、价差用滚动窗口而非全样本标准化(防前视)、参数只有两三个(防窥探)、必须计入双边成本。第 7 章会给它补上协整检验的理论地基。

对应本平台#

  • 量化学堂案例二”策略回测”专门演示了识别回测水分:成本敏感性、调仓周期敏感性都有现成操作路径;
  • 平台引擎在口径上已替你挡住前视偏差:持仓由前一日收盘决定、当日结算收益;
  • 敏感性分析零成本:在因子对比同屏跑 reversal_5 的相邻参数版本即可;
  • 平台使用后复权口径(adj_close = close × hfq_factor),正对本章第一个坑。

本章带走的三句话#

  1. 五类坑背下来:复权、幸存者、前视、数据窥探、成本与政体——回测审查就是过这张单子;
  2. 参数少、样本外、敏感性稳,三者齐备的回测才有资格谈实盘;
  3. 回测的目的不是证明策略能赚钱,而是给它足够多的机会暴露谎言。