HoppyQuant
EN

第 1 课

代码里有个 8,就会更走运吗?

把一个关于幸运数字的随口猜想,写成允许被数据反对并能提前固定规则的研究假设。

蛙兄又打开了上一次画好的 K 线图。

图上的虚构公司叫“晨塔绿境”,代码是 003382。

他本来只是想看看自己画出的第一张 K 线,目光却停在了股票代码上。

“这里有个 8。”

蛙兄托着下巴看了一会儿。

“8 听起来挺吉利。代码里带 8 的股票,会不会真的更容易上涨?”

蛙博士没有笑,也没有马上反驳。

他拉过一张空白纸,在最上面写下:

代码里带 8 的公司,历史表现会不会比不带 8 的公司更好?

“这听着还是有点像胡话。”蛙兄说。

“可能是。”蛙博士点点头,“但在量化世界里,判断它是不是胡话以前,我们还可以先做一件事。”

“测一测?”

“先把你到底想测什么,说清楚。”

蛙兄从虚构股票代码 003382 中发现数字 8,蛙博士则提醒他先把想测的问题说清楚。
图 1|一个有趣的发现可以成为问题,但还不能直接成为结论。

感觉、问题和假设,不是同一句话

蛙兄一开始的感觉是:

代码里有个 8,听起来挺吉利。

这当然可以成为研究的起点。但它还没有告诉我们要比较谁,也没有说“更吉利”究竟是什么意思。

把它往前推一步,就会变成一个可以讨论的问题:

代码里带 8 的公司,历史表现会不会比不带 8 的公司更好?

问题有了,接下来还要写下一个明确的猜测:

本次假设

在 Hoppy 虚构教学数据中,股票代码里带有数字 8 的公司,在我们选定的历史期间里,整体价格表现会比代码不带 8 的公司更好。

这就是我们这次准备验证的假设。

假设不是已经被证明的答案,也不是非赢不可的赌注。它只是我们在看数据以前,先把自己的猜测写了下来。

后面的数据可能支持它,也可能反对它,还可能给出一个含含糊糊的回答。

无论是哪一种,研究都没有白做。

本章重点

一个可以研究的假设,必须允许数据回答:“你可能猜错了。”

光有假设还不够

蛙兄看着纸上的假设,觉得事情已经说清楚了。

蛙博士却问他:

“如果带 8 的公司平均涨得更多,但上涨的公司反而更少,算谁赢?”

“那就……看平均数?”

“如果平均数不好看,中位数好看呢?”

“那也可以看中位数。”

“要是两个都不好看,我们再试试数字 6?”

蛙兄沉默了两秒。

“这样好像总能挑到一个对我有利的答案。”

问题就在这里。

如果先看见结果,再决定怎样分组、看哪段时间、用哪个数字判断,我们很容易把研究改成一场“答案挑选大会”。

这就像蛙兄在运动会前猜蓝队会赢百米赛跑。

比赛结束以后,他发现蓝队输了,于是改口:

“我说的是两百米。”

两百米也输了,他又说:

“其实我比较的是谁的队服更好看。”

只要终点可以一直搬,蛙兄永远不会输。但这场比赛也永远不会有答案。

所以,假设写下来以后,还要在比赛开始前把赛道画好:谁和谁比、比哪一段、怎样才算表现更好,以及哪些东西这次不看。

这就是固定规则。

这次比赛,规则先这样定

蛙兄和蛙博士把这次实验写在了同一张纸上。

实验约定
  • 比较谁: 只研究 Hoppy 教学数据里的虚构公司,不涉及任何真实股票。
  • 怎样分组: 代码中只要出现字符 8,就进入“带 8 组”;其余公司进入“不带 8 组”。
  • 先看哪段时间: 先研究 2021-01-04 至 2022-12-30。
  • 哪段时间留到最后: 2023-01-03 至 2023-12-29 暂时不参与第一次结果,等前面的判断写下以后再打开。
  • 谁能参加: 公司需要在两次比较所用时间的起点和终点,都有可用的复权收盘价。这样前后比较的会是同一批公司。
  • 怎样看表现: 同时查看公司数量、平均收益、中位数和正收益比例,再用最大值和最小值留意有没有特别夸张的公司。
  • 这次不看什么: 不换成 6、9 或其他数字,不临时加入行业、市值、PE,也不与沪深300比较。

这些约定不是为了把一件小事写得很正式。

它们只是帮我们守住同一个问题:等结果出现以后,不偷偷换数字,不临时改日期,也不只挑一句自己最爱听的话。

至于平均数、中位数和正收益比例分别在说什么,现在不用急着记。等真实结果摆到桌上,我们再慢慢拆开看。

还有一年数据,先别看

教学数据包里一共有三年日线数据。

前两年会先用来完成这次比较,2023 年的数据则暂时放进一个信封里。

蛙兄刚想拆开,蛙博士把信封按住了。

“反正 2023 年早就过去了,为什么不能一起看?”

“因为一旦看过答案,它就会影响你怎么想。”

我们会先根据前两年的结果,写下第一次判断。然后再反过来问:

这个差异会不会只是碰巧出现在前两年?

到那时,我们不换数字、不改日期或计算方法,也不换一套更顺眼的指标,只把原来的规则拿到 2023 年再测一次。

这段暂时没参与前期分析的数据,就像给第一次结果准备的一次复查。

它不能替我们预测真正的未来,但至少可以看看:同一个说法换一段数据以后,还站不站得住。

2021 至 2022 年的数据先用于研究,2023 年的数据装进信封,等规则固定后再用于复查。
图 2|先用 2021—2022 年研究,把 2023 年留到规则固定以后再打开。

接下来,我们会把这条路完整走一遍

到目前为止,桌上只有一份假设和一张实验约定,还没有任何收益结果。

接下来,我们会依次做几件事:

提出假设
→ 固定规则
→ 让 AI 用数据验证
→ 查看结果
→ 质疑结果
→ 用暂时保留的数据再验证
→ 写下一个有边界的暂时结论
→ 判断这条线索该继续、修改还是停止

今天,我们站在最前面的两步。

下一步,AI 会按照这张约定,把虚构公司分成两组,计算前两年的结果。

结果出来以后,我们不会急着宣布“8 果然有用”或者“这个想法真荒唐”,而是先看平均数、中位数、正收益比例和极端值分别说了什么。

最后,我们还要拆开那封装着 2023 年数据的信,看看原来的差异换一段时间以后是否还存在。

两段证据都摆上桌以后,我们还要做最后一件事:决定这条线索值得继续观察、换个问题重新研究、进入更完整的回测,还是应该停在这里。

最小量化研究从提出假设和固定规则开始,经过数据验证、查看与质疑结果,再用留出数据复查、写下暂时结论,并判断下一步。
图 3|最小研究闭环从可反驳的假设开始,以暂时结论和下一步结束。

蛙兄把写好的假设和规则压在键盘旁边,又把 2023 年的信封收进抽屉。

“所以,我们不是要想办法证明 8 很神奇?”

“不是。”蛙博士说,“我们只是先写下一个猜测,再给数据一次反对它的机会。”

蛙兄点点头。

现在,问题没有变得更正确。

但它已经变得可以被检验了。

带走一句话

我们不是从数据里寻找一个有趣故事,而是先写下一个允许数据反对的假设,再固定判断它的方法。

课后讨论

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