Familia FVR · 研究

需要多长的历史数据才能信任一个策略?

这个问题一再出现,却几乎没人回答。简短的回答是:你有多少年数据并没有那么重要,重要的是你把它切成多少段——这里有我们自己的一个案例,把数据一分为二改变了决定,之后又朝对我们不利的方向再次改变了它。

我们系统的两项改进让总结果分别提高了 12 % 和 17 %。把同样的数据切成两半后,两项在前一半里都没有带来改进。而最终进入系统的,正是其中之一。

测量的是什么

我们的系统交易股票。我们给它加了一个模块,观察市场的整体状态,把 每一天分为三种情况:正常、动荡和糟糕。想法是利用这个分类,在市场动荡时 少冒风险,在市场糟糕时不交易。

有两种使用它的方式,我们分别测量了这两种,以及完全不用它的情况:

结果用 R 来衡量,这是这里最自然的单位:一个 R 是你在这笔交易中愿意损失的金额。 赚 3 R 就是赚到你所冒风险的三倍。由于冒险更少的版本回撤 也更小,所有数字都调整到了同样的最大回撤,这样比较就不会 单纯奖励那个下注最少的版本。

测量结果

版本整个时期前一半后一半
不加模块(基准)251,66139,24113,17
完整版282,60106,19142,45
简化版293,40135,30134,60
只看第一列,两个版本都有改进,没什么好说的。所以我们把它放在第一列:它让我们显得最好,也是信息量最少的一列。

看另外两列,两个版本都没有在两半中同时胜出。完整版在前一半 明显输给什么都不用(106.19 对 139.24),它全部的优势都在后一半。 而进入系统的简化版,在前一半同样没有胜出:135.30 对 139.24。

这个 3.94 的差距很小——同一个系统跑二十五次,只改变处理同一天各个标记 的先后顺序,在这一段里就会在 16 到 19 之间摆动——所以诚实的说法不是 简化版更差:而是在前一半里,它和什么都不用区分不开。这 恰恰是这条规则要求检查的,也恰恰是它不能被当作改进来展示的原因。

进入系统的是简化版。完整版虽然总数最好,却被留在了 外面。看着这些数字,简化版进入系统时得到的支持比我们以为的要少:它的优势同样 集中在后一半。

更正 — 2026 年 8 月 17 日

两半的那两列是错的,结论也跟着错了。第一 列——整个时期的那一列——可以精确复现(251.66 · 282.60 · 293.40)。两半的不行:报告 既没说从哪里切,也没保存产生这些结果的那次运行。重新测量时——同一个 引擎,同样的数据,同样的回撤调整,按序列的中间日期(2018-04-26)切分,并且 写明——得到的就是上面的数字。

而且它们改变了解读。我们曾发布说简化版在两半中都胜出, 前一半高出 12 %。它没有胜出:是 135.30 对 139.24,在噪声之内。也就是说, 我们选的版本有同样的问题,也就是我们在另一个版本身上看到的那个——它的优势只集中在 一半里。报告的教训没有改变,反而加强了:切分数据改变了决定,而这一次 是朝对我们不利的方向改变。我们把它写出来,而不是悄悄修掉。

为什么会这样

总数是一个平均,而平均可以用很多种方式凑出来。一条规则如果在某一段特定 时间——几年里某种如今已不存在的市场——效果很好,就会把总数往上拉, 哪怕其余时间它都在添乱。发生这种情况时,你测出来的并不是规则有效:而是 曾经有一段时间它有效。

把数据一分为二,就能把这两件事分开。如果优势在两半里都出现,它来自某种 会重复的东西。如果只在一半里出现,它来自那段时期,而未来没有理由与之相似。

这个错误之所以如此常见,还有一个原因:没有人是故意犯的。人们试了好几个 版本,选出数字最高的那个,而这个选择已经把那段幸运时期装了进去, 却没有任何人做过这个决定。

那么,这对你有什么用?

它给出一条十分钟就能用上、不需要懂统计的规则:把历史数据从中间 切开,两部分都看。如果你的策略只在其中一半有效,你拥有的不是一个经过验证的策略: 你拥有的是一个策略和一个时代。

它也比“多少年”更好地回答了最初的问题。有二十年的数据却一次性 全部看,提供的信息还不如有八年数据、分成两段各四年来看。起验证作用的不是 数量:而是优势再次出现。

它还给出第三样东西,也是最省事的:当有人给你看一条曲线时,有用的问题不是 它涨了多少。而是它在哪些时段上涨。如果答案是“主要在某年到某年之间”,你就已经知道 自己在看什么了。

这项研究没有说什么

它不说完整版不好,也不说它将来不会有效。它说的是:用这些数据 无法断言它有贡献,这是两回事。它不说两半就够了:那是最低限度的检查, 不是最终的检查,有足够数据时分成三段或四段更好。它不对任何人 该如何处置自己的钱发表意见。而且这些数字在测量时没有计入隔夜持仓的 成本,在真实账户里这是要付的,而且不小。

你带走什么

带走一个你自己就能做的检查:把你的历史数据从中间切成两半,分别计算 每一段的结果。如果符号变了,或者某一半低于什么都不做, 你就已经比开始时知道得更多。

还有一个即使这篇具体内容被推翻也依然有用的想法:一个总结果会掩盖它来自 哪里。最便宜的发现方法就是把它拆开,而几乎没人这么做,因为总数永远 更好看。

如果你想继续追下去

本系列的另外两份报告从另一个角度测量同一件事:为什么高胜率不是好消息,以及为什么同一个测试重复二十五次会得出二十五个不同的结果。全部都在 sophronepsis.com/informes.html。

如果你想学会自己看这些,六天的学习路线在 app.sophronepsis.com/empieza。

一份报告是某一天的快照。在平台内,有新数据时测量会 重新进行,每套策略旁边都附有它的测试,导师会随时回答你提出的 问题。sophronepsis.com/mentoria.html

这是一项研究,不是说教。如果你在方法或计算中发现错误, 写信到 hola@sophronepsis.com,我们会公开更正。 Sophronepsis · 等待。观察。执行。

148 只股票,16,6 年日线数据(2010-01-04 至 2026-08-12),在 3 R 离场,每种配置打乱 25 次并公布中位数。各版本之间的 R 调整到相同的最大回撤,每一半都调整到其自身基准的回撤。两半的切分点是 2018-04-26,即序列的中间日期:共 11,988 笔交易,前一半 5,944 笔,后一半 6,046 笔。两半于 2026-08-17 用 herramientas/mitades_hmm.py 重新测量,结果保存在 MITADES-HMM-3R.json。基于 148 只股票和 16.6 年日线数据测量,计入 0.05 % 的佣金和 0.05 % 的滑点,不含隔夜持仓的券商成本。每种配置运行 25 次,打乱同一天各标记之间的先后顺序,并公布中位数。教育内容,不是投资建议。我们不出售信号,也不管理第三方资金。Familia FVR · Sophronepsis。