HoppyQuant
EN

第 4 课

连续十次正面,下一次呢?

保持原有分组和收益算法不变,用封存数据检查早期观察能否在新时期继续出现。

上一课结束时,装着 2023 年数据的信封还放在桌上。

旁边多了几张便签,上面记着蛙兄和 AI 刚想到的新问题:

  • 如果换一个数字呢?
  • 如果把极端公司单独拿出来看呢?
  • 行业会不会影响两组的结果?

这些问题都很有意思,但蛙兄没有急着执行。

第二天,他刚坐下,就把手伸向了信封。

“现在总能拆了吧?”

“可以。”蛙博士说,“不过拆开以前,你准备怎么判断结果?”

蛙兄早就想好了。

“如果 2023 年还是带 8 组更好,就说明数字 8 真的有用;如果没有重复,就说明前面的结果只是巧合。”

蛙博士没有急着回答。他从口袋里摸出一枚硬币,又翻开自己的本子。

“我昨晚抛了十次,这是记录。”

纸上整整齐齐写着:

正、正、正、正、正、正、正、正、正、正。

“连续十次都是正面?”蛙兄盯着那行字,“那第十一次,看起来还会是正面。”

“前十次已经发生了,第十一次呢?”

“还没抛。”

蛙博士指了指桌上的信封。

“过去的结果可以帮我们提出猜测,新的结果也可以检查这个猜测。但它们不会自动替未来颁发一张‘以后永远如此’的证书。”

蛙兄的手停在信封上。

“所以,就算 2023 年重复了,也不能直接宣布数字 8 有用?”

“对。要是没有重复,也不代表前面的数字是假的。”

“那这封信到底能告诉我们什么?”

“拆开看看。数据不一定按照我们准备好的剧情说话。”

本章重点

这一课不是来看看数字 8 能不能再赢一次,而是要学习:一段没有参与前期分析的新数据,能怎样检查我们在历史中看到的现象。

蛙兄准备拆开装有 2023 年数据的信封,蛙博士拿出连续十次正面的硬币记录,请他先想清楚新数据能回答什么。
图 1|打开留出数据前,先说清楚它能回答什么。

这封信不是一张判决书

蛙兄刚才的想法很自然:重复就是成功,没有重复就是失败。

但新数据很少这么干脆。

新的数据更像一位新证人。它可能支持原来的发现,也可能反对,还可能给出一个不太整齐的回答。

如果同样的方向再次出现,原来的发现就多了一份支持;如果没有重复,我们就少相信一点;如果结果有同有异,我们就把分歧保留下来。它改变的是我们应该相信多少,不是替原假设盖章,更不是决定什么永远正确。

少见的结果,不等于永远不变的规律

再回到那枚硬币。

连续十次正面当然很少见,但少见不等于不可能发生。

我们可以说:

这枚硬币刚刚连续十次出现正面。

这是对已经发生事情的描述。

如果写成:

这枚硬币只有正面,下一次也一定是正面。

我们就从记录过去,一步跨到了保证未来。

股票数据也会制造同样的诱惑。我们在一段历史里看到某组平均收益更高,很容易顺手把它写成“这个特点以后也有效”。

问题是,过去的数据已经站在桌上,未来的数据还没有。

留出一段没有参与前期分析的数据,就是为了给原来的发现增加一次新的检查。它比在同一段历史里不断修改规则更可信。

如果只把最巧的一次拿给你看呢

现在把硬币实验再扩大一点。

房间里坐着很多人,每个人都在抛硬币。有人正反交替,有人连续三次正面,也有人开头就是反面。

最后,我们只找到连续十次正面的那个人,给他拍了一张照片,再把其他人的记录全部收走。

照片当然是真的。

但它没有把整个房间告诉你。

数字实验也可以这样骗人。

假设我们把股票代码里的 0、1、2 一直试到 9,每个数字都做一次分组。最后只挑平均收益差距最大的数字,写成:

我早就觉得这个数字不一般。

这不是在验证一个提前提出的想法,而是在很多答案里挑出最顺眼的一个,再替它补故事。

我们的数字 8 实验没有这样做。它在看见结果以前就固定了数字、样本、日期和指标。

但这仍然不代表第一次出现的差异一定是规律。即使只测试一个提前选好的数字,偶然也可能让两组看起来不一样。

现在,可以告诉你这份数据的一个秘密了

Hoppy 教学数据里的公司和股票代码都是虚构的。

这些代码在制作数据时随机生成,与公司的收益没有关系。

换句话说,字符 8 不会在数据背后偷偷推动价格。

那前两年算出的结果是假的吗?

不是。

带 8 组的平均收益确实是 19.88%,不带 8 组确实是 14.90%。中位数、正收益比例和极端值也都是真实计算出来的教学数据结果。

真正需要区分的是:

  • 数据里出现了差异,是对这段历史的描述;
  • 字符 8 制造了差异,是一个因果解释。

第一句话可以成立,第二句话没有依据。

这正是这个案例有意思的地方。我们已经知道代码与收益互不相干,却依然能在有限的历史中看到一些像模像样的组间差异。

虚构股票代码和收益数据由彼此不相连的两套过程产生,因此历史中出现差异,不等于差异由数字 8 造成。
图 2|随机代码与收益来自彼此独立的生成过程。

新问题先放在桌边,旧约定不能偷偷变化

现在可以解释,为什么开篇那几张便签还不能马上执行了。

换数字、研究极端公司和加入其他条件,都是看见前两年结果以后才产生的新问题。

如果我们先根据这些问题修改实验,再打开 2023 年信封,验证的就不再是最初那个“代码里有没有 8”的问题。

所以,蛙兄把便签放进一个写着“以后再问”的盒子。

它们没有被否定,只是暂时不参与这次验证。

桌面上只留下最早固定的约定:

  • 仍然使用同一批 294 家虚构公司;
  • 带 8 组仍然是 91 家,不带 8 组仍然是 203 家;
  • 仍然只看 asset_id 中有没有字符 8;
  • 验证期固定为 2023-01-03 至 2023-12-29;
  • 仍然使用期末 adjusted_close 除以期初 adjusted_close,再减去 1;
  • 仍然查看平均收益、中位数、正收益比例、最大收益和最小收益;
  • 不加入其他数字、行业、市值、PE 或沪深300;
  • 无论结果是什么,都不回头修改原研究摘要。

这里还要注意一件事。

原研究期接近两年,验证期接近一年。两个区间长度不同,所以不能直接拿 19.88% 和 3.76% 比较,再说“带 8 组后来变差了”。

这一课更关心的是:在每个时期内部,带 8 组和不带 8 组的相对差异有没有重复。

先让 AI 复述规则,再允许它拆信

如果你准备打开一段新的 Codex 对话,任务必须自己说得通。AI 不会自动记得我们前面封过什么信。

因此,第一步不是让它立即计算,而是先检查文件并复述规则。

交给 AI 研究助手|先复述验证规则

当前项目中已经完成了一项虚构股票代码是否包含字符 8 的研究。请先读取现有研究摘要和相关分析文件,确认原研究使用的固定样本、分组规则、日期和收益公式。

接下来要使用同一批 294 家虚构公司进行留出数据验证。其中带 8 组固定为 91 家,不带 8 组固定为 203 家,不得重新选择公司或修改分组。

验证期固定为 2023-01-03 至 2023-12-29。每家公司的验证期收益仍然使用期末 adjusted_close 除以期初 adjusted_close,再减去 1。

验证期仍需汇报两组的公司数、平均收益、中位数、正收益比例、最大收益和最小收益。请将这些结果与原研究期并排比较,但要明确说明两个时期长度不同,不能直接用累计收益高低判断哪个时期表现更强。

不要测试其他数字,不要加入行业、市值、PE、沪深300或其他条件,也不要修改原研究摘要。

现在先不要计算。请用大白话复述你准备怎样保持同一批公司、同一分组和同一公式。指出你实际找到的文件以及是否存在歧义,然后停下来等我确认。

这段任务最重要的不是“帮我算 2023 年”。

真正重要的是三个“同一”:同一批公司、同一套分组、同一个收益公式。

AI 复述没有跑偏以后,我们再告诉它:

你的复述与原实验约定一致。请保持这些规则不变,开始执行验证。

让 AI 打开信封,但不要替结果安排剧情

接下来,AI 可以正式计算验证期结果。

交给 AI 研究助手|执行留出验证

请按照刚刚确认的固定规则,实际计算 2023-01-03 至 2023-12-29 的验证期收益。

请再次确认两段时期使用同一批 294 家公司、同一分组和同一个端点收益函数。分别汇报带 8 组和不带 8 组在验证期的公司数、平均收益、中位数、正收益比例、最大收益和最小收益。

将验证期结果与现有原研究期结果并排比较。重点说明每个时期内部两组差异的方向和大小,不要因为两个时期长度不同而直接比较累计收益高低。

请另外保存一份大白话验证摘要和一张 PNG 对比图。图中比较两组在原研究期与验证期的平均收益、中位数和正收益比例;最大收益与最小收益放进摘要即可,不必塞进图里。

不要修改原研究摘要,不要测试其他数字,也不要添加因果判断、未来预测、买卖建议或课程没有要求的新条件。

你可以自行决定程序结构,但必须实际运行并复核结果。完成后请告诉我文件位置,并说明哪些结果重复了,哪些没有重复。

这里没有给 AI 安排“验证成功”或“验证失败”的标准台词。

数据说得整齐,我们就记录整齐;数据说得含糊,我们就记录含糊。

信封打开以后,三个指标没有举起同一块牌子

使用当前版本的 Hoppy 虚构教学数据,按照固定规则实际运行后,结果如下:

组别时期公司数平均收益中位数正收益比例最大收益最小收益
带 8 组原研究期9119.88%-0.50%49.45%368.76%-66.99%
带 8 组验证期913.76%2.17%52.75%143.05%-55.46%
不带 8 组原研究期20314.90%-1.65%46.80%625.12%-63.98%
不带 8 组验证期2035.36%-0.07%49.75%252.39%-61.56%
同一批 294 家虚构公司在原研究期与验证期的平均收益、中位数和正收益比例。两个时期长度不同,应该比较各时期内部两组的相对差异。
图 3|同一批公司在原研究期与留出期的三项指标对比。

如果只问“这次到底重复了吗”,最诚实的回答是:部分重复,部分没有。

先看平均收益。

  • 原研究期,带 8 组比不带 8 组高 4.98 个百分点;
  • 验证期,带 8 组反而低 1.60 个百分点。

平均收益的相对顺序变了。

再看中位数。

  • 原研究期,带 8 组高 1.16 个百分点;
  • 验证期,带 8 组高 2.24 个百分点。

中位数的相对顺序保留了下来。

最后看正收益比例。

  • 原研究期,带 8 组高 2.65 个百分点;
  • 验证期,带 8 组高 2.99 个百分点。

这一项的相对顺序也保留了下来。

三个指标没有举起同一块牌子。

这不是实验出了故障,而是数据给出的真实回答。

为什么不能宣布“数字 8 赢了三分之二”

蛙兄看着表格,伸出两根手指。

“三个指标里有两个方向一样。那是不是至少能算数字 8 赢了三分之二?”

“这个三分之二,是看见结果以前定的吗?”蛙博士问。

“不是。”

“那它就是刚刚才出现的新规则。”

平均收益、中位数和正收益比例不是三位举手表决的裁判。它们回答的是不同问题,我们也没有提前约定“只要两项方向一致,就算验证通过”。

更重要的是,我们已经知道股票代码是随机生成的,与收益无关。

所以,即使验证期的三个指标全都保持原来的方向,也只能说明这份有限的虚构数据又出现了一次方向相似的描述,不能证明字符 8 推动了收益。留出验证比在同一段数据里反复修改规则更可靠,但不会把相关自动变成因果。

把两段证据写进同一个暂时结论

如果只挑自己喜欢的部分,我们可以写出两种完全相反的口号:

中位数和正收益比例都重复了,数字 8 果然有效。

或者:

平均收益反转了,前面的研究全是错的。

这两句话都把证据剪得太整齐。

更符合当前结果的写法是:

本次实验的暂时结论

在 Hoppy 虚构教学数据中,带 8 组在原研究期的平均收益高于不带 8 组,但在 2023 年验证期反而更低;两组中位数和正收益比例的相对顺序则在两个时期保持一致。因此,留出验证得到的是混合结果,而不是一个整齐重复的规律。由于虚构股票代码随机生成并且与收益无关,这些差异只能描述当前教学数据,不能说明字符 8 带来了更高收益,也不能外推到真实市场、未来表现或买卖规则。

这段结论没有否认已经算出的数字。

它只是拒绝让这些数字承担自己证明不了的事情。

让 AI 帮我们验收这次留出验证

这一次,我们要检查的是:打开信封以后,旧规则有没有保持不变,新结果有没有被完整记录,暂时结论有没有说得比证据更响亮。

和 Codex 一起验收

请读取这项虚构股票代码研究的原研究摘要、留出验证摘要和两时期对比图,不要重新选择公司、修改规则或增加新的分析。

请用大白话检查下面几件事:

  1. 两段时期是否使用同一批 294 家公司、同一套 91/203 分组和同一个收益公式;
  2. 原研究期与验证期的公司数、平均收益、中位数、正收益比例、最大收益和最小收益是否被准确记录;
  3. 当前结论是否同时写出了平均收益方向反转,以及中位数和正收益比例方向重复;
  4. 正文是否明确说明两个时期长度不同,不能直接比较累计收益高低;
  5. 正文是否利用“代码随机生成且与收益无关”这个已知前提,避免把描述性差异写成因果关系;
  6. 当前结论是否越界成真实市场外推、未来预测或买卖建议。

如果发现问题,请指出具体位置和理由,先向我汇报,不要直接修改文件。如果没有问题,请用几句话复述这项研究最终能说明什么、不能说明什么。

验收完成以后,我们留下的主要成果仍然不是一份需要背诵的程序。

我们留下的是一份写清问题、固定规则、两段证据和结论边界的研究摘要,以及一张可以检查的结果图。

第十一次,还是正面

信封里的结果已经记录完了。

蛙兄重新拿起开篇那枚硬币,终于抛出了第十一次。

硬币在桌面转了几圈,停下。

还是正面。

蛙兄愣了一下,看向蛙博士。

“那我现在可以说下一次也一定是正面了吗?”

“你可以先把第十一次记下来。”

蛙博士把本子推回给他。

“然后别让它替第十二次说话。”

2023 年的验证也是这样。

有些方向重复了,有些没有。我们把它们全部记下来,却没有要求其中任何一个数字替未来作保证。

蛙兄放下硬币,又看了看刚刚完成的摘要。

“可我们提出了假设、固定了规则,还专门用一段新数据重新验证。”

“忙了这么久,最后还是不能说数字 8 有效,更不能保证以后赚钱。”

他在空白纸上写下了一个新问题:

不能保证未来,量化研究到底有什么用?

这一次,蛙博士没有马上回答。

“这个问题,值得单独讲清楚。”

带走一句话

留出验证不会替一个规律盖章。它让没有参与前期分析的新数据,有机会支持、反对,或者补充原来的发现。

课后讨论

留下你的问题、理解或不同意见,也看看其他学习者怎么想。