Skip to content

第37章:稳健性与样本外检验 ​

2026 年上半年,一批跑了多年、做过完整研究的量化指数增强产品交出了一份拧巴的成绩单。私募排排网统计的 1236 只有业绩展示的指数增强产品,上半年平均收益 16.25%,与 2025 年同期(17.32%)基本持平——指数在涨,产品没落下。但增强的部分几乎不见了:平均超额收益只有 3.11%,而 2025 年同期是 14.17%;实现正超额的产品 755 只,占比 61.08%。同期私募中证 500 指增产品里,超额收益排在前 10% 与后 10% 的管理人之间差了约 20 个百分点,中位数接近零(浙商证券估算口径)。

这些产品在开发时都跑过样本内检验,也几乎都留过样本外。所以稳健性检验不是一张"这策略以后不会失效"的保证书。它能做的只有两件事:说清这套逻辑在哪些条件下还成立,以及它在哪一类环境里会以你控制不住的方式失败。

本章要回答三个问题:一段没看过的数据该怎么切、留多长,结果长什么样算正常;除了换时间,还有哪些条件必须换一遍,各自能查出什么;检验做到什么程度,才可以把它放进模拟盘。

本章讲的是流程,不引入新指标。第30章第八节给的三条纪律——事先切分、测试段只用一次、不同划分方式各有用途——本章直接沿用并展开;第29章"换市场环境和持有期重做一遍"是在因子层面做的,本章把它抬到整条策略上。把超额正式拆成行业、风格和个股三块留给第38章;实盘运行中怎么区分正常回撤和策略失效留给第42章。

一、样本外检验:怎么切、留多长、结果长什么样 ​

你有 2015 年初到 2026 年 9 月的日线数据,已经在这份数据上工作了很久:换过股票池、调过参数、试过几种合成方式。从现在起,这十一年里"哪一段被你反复看过、哪一段没看过"决定了你能取得多少证据。 样本外检验要做的就是把这份数据分成"可以反复看"和"只在定稿时看一次"两部分,这一节按三个动作走完它——先划边界(怎么切),再算这条边界能撑起多少证据(留多长),最后看跑出来的数字该怎么读(结果长什么样)。

怎么切:三种切法回答的是不同问题 ​

划界线有三种做法。它们都从同一份数据出发,只是把边界划在不同位置——实际操作时你只选一种。

前向切分:按时间切一刀,前面用来研究,后面用来测试,只测一次。它最省钱,性质上相当于"定稿检验"——测完就该定下来。代价是只有一个观测,而且只覆盖那一段历史——按这十一年数据算,最多也就能留出不到两年,那就是全部证据。

滚动窗口:用前 5 年训练,在紧接着的 1 年上测试,然后把窗口整体向后滑一年,重新来过。它产生的观测更多,也更接近真实的研发节奏——你本来就会定期拿最新数据更新模型。代价是每一段都很短,而且每次重训都容易变成"又允许自己调一次"。

留一段完全锁住的:把数据分成研究段、验证段和锁定段。验证段用来选方案(换股票池、换合成方式都在这段上比),锁定段在全部研究结束之前一次都不打开。它是最干净的一种,代价同样是只能用一次。

示意:前向切分、滚动窗口与锁定一段三种样本外切法在同一条时间轴上的对照

读图:图上三种切法画在同一条时间轴上。前向切分把 2015—2025 当作研究期,2025 年之后留作样本外,只得到一段不到两年的测试期;滚动窗口每 5 年训练、向后 1 年测试,重复六次,得到六段各一年的测试期;锁定一段把 2015—2023 当研究段、2023—2024 单独划为验证段,2024 年之后锁住不看。三种切法的共同纪律只有一条:切法和用法必须在看到结果之前定好。 如果先跑了 2024 年发现不好,再把样本外改成 2025 年之后,那 2024 年就已经变成样本内数据了(第30章第八节)。

留多长:样本长度和试过的版本数要一起看 ​

留多长由两个量决定:这套策略本身有多强,以及你在这份数据上试过多少个版本。 少一个都算不出门槛。

先说策略本身。第29章给过 t=ICIR×N:t 值等于 ICIR 乘以期数的平方根。同一个式子换成组合层面就是 t=IR×T——只是把"每期"换成"每年",N 变成年数 T,同时把 IR 也按年化口径算(年化超额收益除以年化跟踪误差,也就是第4章讲过的信息比率)。T 是样本长度(年)。t 大于约 2 才算"不太可能是纯运气"——按 5% 显著性水平算,这个门槛精确地说是 1.96,本章统一按 2 记。

举个通常的量级:一个年化超额 4%、跟踪误差 5% 的策略,IR 是 4%÷5%=0.8。它需要多长的记录才能让 t 值到达 2?

t=0.8×T
样本外长度 T对应的 t
3 个月(0.25 年)0.40
半年0.57
1 年0.80
2 年1.13
4 年1.60
6.25 年2.00

读法很直接:半年样本外对应的 t 只有 0.57,"两年样本外"也只有 1.13,都远在门槛之下。 要达到 t=2,同样的 IR 需要 6 年多。如果 IR 只有 0.5(年化超额 4%、跟踪误差 8%),这 4 年样本对应的 t 是 1.0,要 16 年才够。

这张表解释了业界一件常被误解的事:"我留了两年样本外,超额是正的"——这句话几乎不构成证据。 两年记录对应的 t 只有 1.13,连 5% 的门槛(1.96)都够不到,排除不掉"真实超额本来就是零、这 1.13 只是运气"这个可能。

边界。 这里的 IR 是当作已知数代进去的,实际上它也是从同一段数据里估出来的,本身带着误差;真实需要的样本只会更长。另外 t 值只回答"是不是噪声",不回答"扣掉成本还剩多少"(第29章的两关)。

第二个量是你试过多少个版本。第30章第六节那张表是从"样本有多长"推"夏普门槛要多高"。同一个量的另一种读法是:给定你想支持的结论,样本至少要有多长。 这个长度叫最小回测长度(Bailey、Borwein、López de Prado 与 Zhu 的算法,年化夏普目标取 1.0):

试过的版本数支持"年化夏普 1.0"至少需要多长样本
5约 1.4 年
10约 2.5 年
100约 6.4 年
1000约 10.6 年

为什么试得越多、要求越长? 因为从 N 个没有真实优势的策略里挑出的最高夏普,会随 N 上升——第30章第六节那张分布图讲的就是这件事。这条要求随试过版本数的对数增长,所以从 10 组加到 1000 组,样本长度要求大约翻两番。

两张表放在一起看就完整了:样本长度和试过的版本数是同一个判断的两个输入,缺一个都算不出门槛。 一份报告只写"五年年化 25%、夏普 1.5",却不写试过多少次,你没法判断这个数字;反过来,你自己做研究时"就改了两个参数"和"扫了一百组",需要的样本长度差四倍。

结果长什么样:一个数字必须放进同类分布才能读 ​

边界划好了,长度也算过了,接下来是真正跑一遍。跑完你手里会多出一个数字,比如"2026 年上半年样本外超额 +2.5%"——量级和开头那 1236 只产品的平均超额(3.11%)差不多,很像是真的做出了一点东西。这个数字怎么读?

这里最容易犯的错,是把它单独写成结论:"半年样本外超额为正,策略通过了检验。" 问题不在数字,在于它缺一个参照——同类分布。

回到开头那组数字:同一个半年里,所有做中证 500 增强的管理人拿着相近的候选股票池,面对的是同一段行情。把他们的超额收益排成一条分布:中位数接近零,排最前 10% 和最后 10% 的管理人之间差了约 20 个百分点(浙商证券估算口径)。你的 +2.5% 落在这条分布里,只在中位数上面一点点。

所以这个数字本身说明不了什么:同一批管理人之间超额的差距有 20 个百分点,而你的策略相对中位数只多出 2.5 个百分点。 这么宽的距离,不是因为他们之间的选股能力真差了 20 个百分点,而是因为半年这个长度上噪声本来就盖过信号——按上一小节的 t=IR×T,IR 0.8 的半年记录对应 t 只有 0.57,离门槛还很远。在这个长度上,你分不清这 20 个百分点里哪些来自选股、哪些来自风格暴露;能确定的是各家在小盘、反转、红利这些风格上偏得不一样,而同一段行情里不同的暴露本来就会带来十几个百分点的差距(第36章讲的就是这件事:先扣掉暴露,再看剩下多少算选择)。

有内容的写法必须带上位置。 不写"我的样本外超额 +2.5%",而写"我的样本外超额 +2.5%;同期同类产品超额中位数接近零,我略高于中位数,离前 10% 还有一大截"。前半句你自己就能写,后半句得去拿同类数据——公开的私募业绩榜、同类公募产品的净值,或者自己把这套策略的常见变体各跑一遍(第36章用过同样的横向对照)。

那检验还要不要做? 要,但得说清它买到了什么。前面那批管理人手里有数据、有人力、系统比大多数人齐全,很多人做的检验比本章要讲的还细,超额照样在半年里从两位数掉到接近零。检验买不到"以后不会失效",它买到的是把"在什么条件下会失效"从意外变成预期:如果研究报告里事先就写着"这套逻辑依赖小盘股的流动性溢价,在小盘股被系统性抛弃的阶段会大幅落后",那么接下来的回撤就属于预料之内,你能照着原计划决定是扛还是减仓;如果事先什么都没约定,同一段回撤就变成了"策略是不是坏了"——而人在这种时候做出的判断,通常是最差的那一个。

二、换条件再跑:六类检验,各查一种失败 ​

样本外只换了时间这一个条件。一只通过样本外的策略,仍然可能只是"在那段时间里、对那批股票、在那个成本假设下"有效。稳健性检验就是把研究里那些默认设定一个个拿去换掉,看结论跟不跟着塌。 下面六类,每一类针对一种具体的失败方式。

换市场阶段:查"是不是只在一类行情里有效" ​

同一个市场,不同年份可以给出完全相反的答案。看三段真实的分化:

期间大盘小盘两者的差距
2017 全年上证50 +25.08%中证1000 −17.35%约 42 个百分点
2024 年 1 月沪深300 −6.29%万得微盘股指数 −21.28%约 15 个百分点(同一个月)
2026 年 7 月沪深300 −7.86%中证1000 −19.69%约 12 个百分点(同一个月)

(表内为 Wind 前复权的区间涨跌幅,月份口径为该月首末收盘价。)

做法:把同一策略在这三段里的超额收益和回撤分别算出来,列成一行。要看的不是亏了多少,而是亏损是不是落在策略逻辑能解释的方向上。 如果你的策略在 2017 年和 2024 年 1 月都大幅落后,那它大概率是一套小盘风格表达,而不是全天候的选股能力——这跟第36章"先扣掉暴露再看剩下多少是选择"是同一件事,只是换成了极端年份来测。反之,如果它在同类股票被抛弃时仍然持平甚至领先,这个结果才值得记下来。

边界:分段的每一段都更短,独立看某一段的结论噪声很大(第29章)。分段的作用是找"哪一类环境会翻脸",不是给每一段下判决。

换股票池:查"结论是不是靠某一批股票撑起来的" ​

同一套因子,在沪深300 成分股里、中证1000 成分股里、剔掉微盘之后,表现可以完全不同。第30章讲过 Hou、Xue 和 Zhang(2020)把 452 个已发表异象用统一口径重跑(剔除最小市值股票、改用市值加权)后,大部分结果消失;第36章给了按市值五档看超额分布的检查。

做法:至少跑三个池子——全 A、一个宽基指数成分股、以及"全 A 但剔除微盘"。三个池子里结论方向一致,才算过了这一关。补一句容易被漏掉的:换池子会同时换掉成本。 小盘股的买卖价差和冲击成本都高于大盘股,所以换了池子之后,成本假设也必须跟着换,否则你比的是两个成本口径不同的策略(第34章)。

ETF 策略在这里要换个问法:它的"股票池"就是候选 ETF 清单本身,而清单会随时间变化。用今天上市的 ETF 名单回测 2016 年,等于假设当年就存在这些产品——第32章讲的 ETF 版本的幸存者偏差。这一条对 ETF 轮动策略几乎无法修复,只能把样本起点放在候选池基本成形的年份之后。

换调仓频率:查"信号是真的,还是只在某个节拍上好看" ​

第29章讲了怎么用因子衰减曲线定持有期。稳健性检验要做的是把频率当成一个参数扫一遍:月频、双周、季频各跑一次。

通过的样子:频率放慢,超额缓慢变小,方向不变——因为信号在衰减,这个形状是应该出现的。不通过的样子:只有一个频率好,往前后各挪一格就掉下去。第30章把这叫"针尖",不过那一节查的是单个参数,这一节查的是整个策略的重跑节奏。

换成本假设:查"离盈亏平衡点还有多远" ​

上一类检验换的是调仓节奏,而节奏一变,成本跟着变。成本假设是六类里最容易被顺手糊过去的一个数——回测里写一句"单次成本 0.15%",看着只是技术参数,其实它和换手率是一对:同一个 0.15%,放进月调一次的方案里无关紧要,放进周调一次的方案里足以决定这套策略是赚是亏。所以这一类检验要回答的不是"0.15% 设得对不对",而是"以我的换手率,最多能承受多高的成本"。

先算清楚"能承受多少"是什么意思。 一年被成本抽走的钱是两件事的乘积:一年动了多少钱,以及每一元成交时被抽走多少。前者是年双边换手 T,第34章给它定的口径是 T=(B+S)/A¯——全年买入金额与卖出金额之和,除以同期平均账户净资产。后者是单次成本 c,指每一元成交金额的综合成本,含佣金、税费、买卖价差和执行损耗;0.15% 是第34章为建立量级取的假设值。两者相乘就是这一年的成本:

年成本=T×c

而策略在扣成本之前赚的那部分,是年化毛超额 r(毛,即还没扣交易成本)。于是扣完成本剩下的净超额是

r−T×c

三个量里,r 和 T 都由策略本身决定,只有 c 是外部给的假设。把净超额设成零,反解 c,就得到这套策略能接受的成本上限:

c∗=r÷T

这个 c∗ 就是能承受的最高单次成本:真实的单次成本低于它,扣完还剩正的超额;正好等于它,超额被成本吃干净,是白干;高于它,成本超过毛超额,策略由正转负。它和 c 单位完全相同(都是"每一元成交金额的百分比"),所以能直接和 0.15% 比大小——比出来的差距,就是这套策略的安全余地。

(这里的"能承受"只针对成本。第41章讲的资金容量问的是另一件事:你的钱能不能在不推动价格的前提下买得进、卖得出。)

假设策略的年化毛超额是 4%,下面两个方案除了调仓节奏,其他完全相同:

方案(每次双边换手 40%)年双边换手 T按 0.15% 算的年成本 T×c能承受的最高单次成本 c∗=r÷T0.15% 占掉 c∗ 的比例
月调 12 次480%0.72%0.83%18%
周调 52 次2080%3.12%0.19%79%

第四列是这么来的:4%÷480%=0.83%,4%÷2080%=0.19%。第三列就是第34章那两个年成本(480%×0.15%=0.72%、2080%×0.15%=3.12%),列在这里是为了和第四列对照——同样一个 0.15%,在一套方案里只占掉不到两成,在另一套里几乎占满。

读表前先分清第三列和第四列不是一回事。 第三列是"一年总共被抽走多少",是全年累计,所以能到 3% 这个量级;第四列是"每一次成交最多能承受多少",是单次,所以只有零点几个百分点。周频方案的 3.12% 比 0.19% 大,不是算错了,而是分母不同:一个讲全年、一个讲单次。换句话说,真正危险的是周频方案——它的上限 0.19% 只比 0.15% 高出一点点。

示意:同一个 0.15% 成本假设,在两套换手率不同的方案里各占掉多少盈亏平衡空间

两个方案的差别不在成本假设,而在换手率:

  • 月频方案的上限 0.83%,是 0.15% 的约 5.5 倍。0.15% 只占掉约 18%,余下的 0.68 个百分点全是余地。就算真实价差比预想大一倍,单次成本按 0.30% 算,年成本也只从 0.72% 涨到 480%×0.30%=1.44%,4% 的毛超额还剩 2.56%。
  • 周频方案的上限 0.19%,只有 0.15% 的约 1.3 倍——成本只要再涨不到三成,超额就归零;而 0.15% 已经占掉约 79%,余下的 0.04 个百分点几乎可以忽略。把假设提到 0.30%(加上一点冲击成本就很容易),年成本变成 2080%×0.30%=6.24%,超过 4% 的毛超额,净超额是 −2.24%:策略由正转负,而它的信号一点没变。

所以成本检验要输出的不是"我用了 0.15%",而是"我的盈亏平衡点在哪里、离它有多远"。 上限只剩成本假设一倍上下的策略,净收益几乎完全取决于执行质量(第41章)。

边界。 第一,c∗ 是把 r 当已知数代进去算出来的,r 若高估——例如来自不可成交的价格(第35章)——c∗ 也跟着虚高,所以它必须和样本外、极端行情的结果放在一起读。第二,这里固定 r、只让 c 变化;真实情况里调仓节奏一变,r 本身也跟着变:调得勤,信号更新得更快,但每次赚的幅度更小(第34章的信号衰减),两个方向未必相互抵消。第三,0.15% 是小资金的量级,冲击成本随资金规模上升,规模一大 c 就高于 0.15%,余地随之缩小。ETF 要单独算:它不缴股票交易印花税,但买卖价差和折溢价是主要成本项,而且这两项在市场剧烈波动时会明显放大。

换参数:查"结果是一个点,还是一片区" ​

第30章讲了单个参数邻域的形状——稳定的是平原,挑出来的是针尖。这一节把它升级成参数空间的通过率:同时扫两个参数各四个取值,共 16 组,事前把门槛写成"年化超额不低于 4%",跑完报告有多少组过线。

举例(示意):16 组里有 11 组落在 4%—6% 之间,3 组落在 2%—4%,2 组为负,通过率 69%。这就是"平原"在二维上的样子。 另一种结果是 16 组里只有 2 组过线,而且这两组在网格上紧挨着,其余全部掉到 1% 以下——这不是策略,这是那两个参数值的巧合。

报告要写通过率,不要写最优值。 "最优组年化 6.8%"这句话不含任何关于稳健性的信息;"16 组里 11 组过 4%"才是可比较、可复核的表述。

换因子定义:查"这个信号是不是换一种写法就没了" ​

同一个投资逻辑通常有好几种写法:价值可以用 EP(盈利收益率)、BP(账面市值比)、现金流收益率;质量可以用 ROE、ROA、ROIC;动量可以用 12-1 个月、6-1 个月;现金流口径可以用经营现金流或自由现金流(第21、22、23、24章)。

做法:把每个因子的定义换成同族的另一种,重跑。判断标准是方向一致,而不是数值接近——换定义后"便宜的一批仍然表现更好"就是通过;换成 BP 之后关系消失甚至反向,说明这个结论对定义的选择很敏感,需要回到经济逻辑上去想哪一种口径才对应你要表达的东西(第28章讲过预处理会改变因子的含义)。

一个真实的参照:华泰金工测历史分位数因子时,回看期数取 6、8、12 三个值,Rank IC 均值分别是 5.63%、5.37%、4.69%,多空夏普分别是 2.01、1.82、1.52(第30章引过完整表格)。三个口径同向、幅度接近、没有跳变——这就是换定义应该有的样子。

这六类检验,什么时候会变成新的挑选 ​

这里有一个不能跳过的分辨。第30章讲过:在同一份数据上做 M 次检验、只报最好的那一次,t 门槛要从 1.96 抬到 2.81(M=10)、3.02(M=20)、3.48(M=100)。

本章让你换市场阶段、换股票池、换频率、换成本、换参数、换定义——这些重跑算不算"多重检验",取决于你拿结果做什么。

  • 清单事先写死,要求全部通过:这不是挑选,而是一道更严的关口——你等于把"有效"的标准收紧成"在这些条件下都有效"。门槛不必抬高,但要有准备:它会让通过变难。
  • 跑完之后挑好看的那几项写进报告:这就是第30章的多重检验。每一类里取三到五组,六类加起来二十次以上,门槛要按试过的组数重算。

所以纪律是:在做之前把要查的条件和通过标准写下来,跑完照单如实报告,包括没过的那几项。这和第30章"把试过的版本数当成必须报告的数字"是同一条要求。

三、极端行情压力测试:查的不是亏多少,是机制还转不转 ​

前面两节换的是研究设定,这一节换的是市场状态。A 股近几年里有几个可以当作固定测试点的日子:

时间冲击当时的数字
2016-01-04熔断机制实施后的首个交易日沪深300 单日 −7.02%
2020-02-03春节假期后首个交易日沪深300 −7.88%,两市逾 3000 只个股跌停
2024-01小微盘股流动性收缩万得微盘股指数单月 −21.28%,中证2000 −20.97%
2025-04-07关税冲击沪深300 −7.05%;全市场 5248 只下跌、3037 只跌停,个股涨跌幅中位数 −10.01%
2026-07科技筹码出清、融资盘去杠杆万得全A −13.14%、科创50 −25.90%;融资余额单月减少 4079 亿元

这些日子的意义不是"跌得多",而是在这一天,你平时依赖的三件东西同时失效。所以压力测试要问的是三件事:

第一,还能不能交易。 2025 年 4 月 7 日,全市场 3037 只股票跌停,个股涨跌幅中位数 −10.01%。一个持有 50 只股票的分散组合,那天大概率一半以上躺在跌停板上。跌停价是当天的最后成交价,不是你能成交的价格(第3章、第30章"不可成交价格")。2024 年 1 月的微盘股是另一种形态:不是一天跌停,而是连续阴跌加流动性收缩,想卖的时候接盘的钱不在了。

第二,亏损集中在哪。 2024 年 1 月是微盘,2026 年 7 月是科技。第33章说过"买了很多只,为什么仍会一起跌"——这两次就是那个结论的真实版本:分散化对系统性冲击不提供保护,它保护的是个股风险,不保护风格暴露。 2026 年 7 月,申万电子行业月跌逾 30%,同期红利指数上涨约 12.8%,两个方向的差距超过 40 个百分点。

第三,规则在那一天还能不能执行。 极端日的目标持仓表里可能有 8 只想买、5 只想卖,而其中大部分既买不进也卖不掉。第35章写的"买不到时怎么处理",在极端日会从例外变成常态:一条只在正常日验证过的规则,等于没有验证过。

ETF 在极端日多两层检查:一是折溢价,市场价可能明显偏离净值,溢价买入等于自己先亏一笔(第18章);二是成交额,2026 年 7 月 A 股日均成交额约 2.85 万亿元,但那是全市场口径,单只 ETF 在恐慌日可能缩量到平时的一小部分,你的单笔委托会占掉它当日成交额的很大比例(第41章的容量问题)。

压力测试的用途不是证明"抗得住",而是找出策略会以哪一种你控制不了的方式失败。 一份合格的结论应该长这样:"在 2025 年 4 月 7 日这类全市场跌停的日子里,周频调仓只能完成约三成,组合当天跑输基准 2 个百分点;这部分亏损来自无法成交,不是选股错误。"

四、从检验结果到"能不能上模拟盘" ​

检验做完了,接下来的决定是:放进模拟盘、继续改、还是放弃。这里要把两件事分开——模拟盘能查出什么,记录长度能证明什么。

模拟盘检验的是流程,不是统计 ​

第35章列过六类错账:费用漏扣、部分成交、停牌估值、除权处理、现金与可用资金、以及事后成交假设。这些问题的共同点是跑一两个月就会暴露——订单是不是按预期生成、成交价与滑点落在什么区间、分红和送转有没有重复计算、数据更新有没有延迟、每天的账能不能对上,全都是流程问题,不需要长样本就能看出来。

但同一次模拟盘在统计上什么都证明不了。按第一节的式子,半年记录、IR 0.8 对应的 t 只有 0.57。所以模拟盘的定位是"验收流程",不是"验收收益";把两个月的模拟盘正收益当成策略有效的证据,是这套流程里最常见的自我欺骗。

记录长度决定统计结论 ​

Bailey 与 López de Prado 给出过一条更直接的线:一个观察到的年化夏普 0.95 的策略,需要大约 3 年的日频记录,才能在 95% 的置信水平下拒绝"它的真实夏普为零";如果夏普高于 1.15,这个长度可以缩短到约 2 年。前提仍然是只试过一次——试过的版本越多,需要的记录越长(第一节的最小回测长度表)。

这也解释了对冲基金行业"至少看三年业绩记录"这条经验规则是怎么来的:它不是行业惯例,而是统计要求的近似。

这里要澄清一个常见误解:提高交易频率并不会加快证据积累。 第一节的 t=IR×T 和第29章的 t=ICIR×N 是同一个式子——把 IR 换成同一频率的口径、把 T 换成该频率下的观测数,两边恒等,因为年化这一步已经把每年的观测数吸收了。日频策略一年有几百次成交,月频策略一年只有 12 次调仓,但只要两者的年化 IR 相同,同样年限给出的 t 就一样。频率改变的是成本、容量和执行难度(第二节),不是统计证据积累的速度。

到这里,本章已经出现三个带"长度"名字的数。它们不是三套互相竞争的标准,而是同一个判断的三个问法:t 门槛管"样本就这么长时,结果要多大才算数";最小回测长度管"想支持这么好看的结果,样本至少要多长";记录长度管"还要再跑多久,这个成绩才不像运气"。 报数时把三个都写清楚,才不会出现"我跑了半年、超额 3%,所以策略成立"这种把长度和门槛混在一起的结论。

把通过条件在开始之前写死 ​

最后一件事是把标准写下来,而且要在看到结果之前写。本章能给出的条件有四条:

  1. 方向一致,量级合理。 样本外各段的超额方向与样本内相同,量级不低于样本内的约一半(第30章给过参照:97 个已发表异象的样本外效果平均剩约七成)。如果样本外比样本内还好,先怀疑数据,不要先高兴。
  2. 成本过了盈亏平衡检查。 算清这套策略能承受的最高单次成本,报告写成"上限是多少、现在的 0.15% 占掉其中几成";再用 0.15% 与 0.30% 各跑一遍,两遍的净超额都为正。
  3. 极端日的机制没坏。 在选定的冲击日里,未成交部分如何处理、当天净值如何计算,都能给出明确答案。
  4. 暴露在事先设定的范围内。 市值、行业、风格偏离不超过研究阶段定下的上限——这是把第36章"先扣掉暴露"变成一条可以提前写死的约束。

不满足第 2、3 条,说明这套策略的净收益或可执行性还没解决,回去改;只满足第 1 条而记录长度不够的,如实记成"流程已通过、统计未达标",继续跑模拟盘积累观测,而不是直接上实盘。

边界 ​

  • 样本外不等于未来。 没看过的历史数据仍然是历史。制度会变:主板风险警示股票的涨跌幅限制在 2026 年 7 月 6 日从 ±5% 改为 ±10%(第32章),退市标准和分红规则也在变,这些变化会让老样本的部分结论失去可比性。
  • 通过全部检验的策略仍然会失效。 2026 年上半年那批产品就是例子。稳健性检验买到的是"知道自己在承担什么",不是"不会亏钱"。

本章小结 ​

  • 样本外要先切分、只用一次。三种切法各有用途:前向切分给一个观测,滚动窗口给多个短观测,锁定一段最干净但只有一次机会。
  • 一次样本外的统计量级很小:年化超额 4%、跟踪误差 5% 的策略,半年样本外对应 t=0.57,两年 1.13,要 6 年多才到 2;样本长度和试过的版本数必须一起看,缺一个都算不出门槛。跑出来的数字还要放进同类分布里读——同一个半年里,同类管理人的超额能差 20 个百分点、中位数接近零,所以"半年超额 +2.5%"本身不算结论。
  • 换条件再跑有六类——市场阶段、股票池、调仓频率、成本、参数、因子定义,每类查一种具体的失败方式。清单要事先写死:要求全部通过是一道更严的关口,跑完只挑好看的那几项写进报告,就变成了新的多重检验。
  • 成本检验的输出是盈亏平衡点(年化毛超额 ÷ 年双边换手),不是"我用了 0.15%":同样的 0.15%,月频方案只占掉上限的 18%,周频方案占掉 79%,成本再涨三成超额就归零。
  • 极端行情压力测试查的是机制还能不能转动——能不能成交、亏损集中在哪、规则输出是否可执行,而不是跌了多少。
  • 模拟盘验收的是流程,记录长度管的是统计。通过条件要在开始之前写清楚。

这一章把"一套策略稳不稳"变成了一张可以照着跑的清单。清单里的每一项都需要一个前提才能算清,那就是超额的来源:这套策略到底在赚行业、风格还是个股选择的钱。第38章把这件事做成正式的分解。