第 3 课
九拍后真的更容易反弹吗?
识别合格事件并与随机日期比较,检查九拍完成后的多个观察窗口发生了什么。
蛙兄把上一节留下的四句话抄在纸上,又打开了 AI。
“现在我已经知道九拍大概怎么数了。”
他把手放到键盘上。
“这次总能直接问它赚不赚钱了吧?”
蛙博士把一份更完整的规则说明放到旁边。
“可以开始实验了。不过在算收益以前,我们先看一眼它有没有把九拍数对。”
“还要检查代码?”
“不用。让 AI 自己检查代码,我们看它画出来的 K 线。”
这一次,你不需要亲自实现九拍算法,也不需要跟着一张长清单逐项操作。
我们只保留一次中途确认:
把完整任务交给 AI
→ AI 检查数据并找出九拍
→ 我们看几张 K 线抽查图
→ 确认没有明显数错
→ AI 继续计算收益并与随机日期比较

为什么要和随机日期比较?
动手以前,蛙兄先问了一句:
“如果九拍后的平均收益是正数,是不是就说明它有用?”
“先别急。”蛙博士说,“普通日期以后,也可能是正数。”
只看九拍自己,就像只问一个参加考试的人考了多少分,却不看这张卷子对其他人有多难。
随机日期对照要回答的是:
如果没有看到九拍,只是在同一只股票的其他普通日期进入,通常会得到什么结果?
我们还会重复抽取 1,000 轮。
因为只抽一次,很可能刚好抽到一把好签,也可能刚好倒霉。
多抽一些,才能看到“普通日期通常是什么水平”。
这里暂时不拿沪深300来比较。
随机日期回答的是“九拍日期有没有比普通日期更特别”;沪深300要到完整策略回测时,才负责回答“有限资金账户有没有跑赢市场基准”。这是两个不同问题。
换一段新对话,把说明书交完整
建议在实验室文件夹中开启一段新的 Codex 对话。
如果你无法使用 Codex,也可以使用 WorkBuddy。工具可以不同,我们要完成的研究不变。
为什么换新对话?
因为 AI 不会自动知道我们前面采用了哪一套九拍,也不应该靠几段模糊的聊天记忆拼出研究规则。
下面这段提示词比较长,但它主要是写给 AI 看的。
你不需要逐条背诵,也不需要先弄懂里面每一个技术细节。复制给 AI,让它负责安装缺少的分析依赖、编写程序、运行内部测试和整理输出即可。
直接交给 AI|完整任务说明
我准备使用当前项目中的 Hoppy 虚构教学数据,研究“完整下行九拍以后,价格是否比普通日期以后更容易上涨”。所有公司、代码和行情均为虚构教学材料,结果不构成任何现实投资建议。
请先查看当前项目结构。教学数据通常位于项目根目录的 hoppy-teaching-dataset 文件夹,其中应包含 README.md、data_dictionary.json、manifest.json、companies.parquet、stock_daily.parquet 和 hs300_daily.parquet。请以实际文件和字段为准;如缺少必要的 Python 分析包,请使用项目已有的 uv 环境安装,不要重建另一套无关环境。
整项研究采用以下固定规则:
- 核心研究只使用日线完整下行九拍。程序可以同时识别上行九拍,用于检查方向切换,但上行九拍不进入收益研究。
- 每只股票独立按
trade_date升序排列,只按照该股票自己的有效 K 线顺序计数。九拍比较使用前复权收盘价adjusted_close。 - 设当前有效 K 线为
t:C[t] > C[t-4]满足上涨条件,C[t] < C[t-4]满足下跌条件,完全相等则没有方向。历史不足 4 根更早有效 K 线时不计数。 - 同方向条件连续出现时从 1 递增。未完成序列遇到相反方向时,旧序列立即结束,当天直接成为相反方向数字 1;遇到相等时,旧序列结束并重新等待。
- 数到 9 后形成一次完整九拍并进入锁定。继续满足原方向时不显示 10、11,也不立即开始新的同方向序列。遇到相等则解除锁定并等待;遇到相反方向则解除锁定,当天成为相反方向数字 1。
- 某个市场交易日没有该股票的日 K 时,不创建占位 K 线,也不因为这个空位主动中断序列;恢复数据后继续按照有效 K 线顺序比较。
- 使用
hs300_daily.parquet的日期作为课程市场交易日历。数据体检可以检查 2021-01-04 至 2023-12-29 的公司和日期是否存在,但不得读取或使用 2023 年价格方向、九拍信号和收益。如果一只股票出现单次连续缺口严格超过 15 个市场交易日,在识别信号前排除整只股票。刚好 15 日不触发,16 日才触发。 - 九拍信号只使用 2021-01-04 至 2022-12-30 的规则研究期识别。2023-01-03 至 2023-12-29 是最终留出期,在完整买卖规则冻结以前,不计算或透露其中的价格方向、九拍信号和收益。
- 数字 9 所在交易日收盘后,信号才算确认。未来收益以下一根有效 K 线的
adjusted_open作为观察起点。从这根进入日 K 线算作第 1 根,分别使用第 3、5、10、20 根有效 K 线的adjusted_close作为观察终点。收益等于“终点收盘价 ÷ 起点开盘价 - 1”。未来数据不足的事件不进入对应窗口,但可以进入更短的完整窗口。 - 随机日期对照必须来自同一只股票和同一研究期,只从拥有完整未来窗口的有效日期中抽取,并排除真实下行九拍完成日。把随机日期视为普通的“信号完成日”,同样以下一根有效 K 线开盘作为起点,并使用相同窗口终点计算收益。某只股票在某个窗口有多少次合格九拍事件,每轮就为该股票抽取多少个随机日期;同一轮、同一股票内不重复抽取。每个窗口独立运行 1,000 轮,并记录实际使用的随机数工具和种子,保证同一套程序可以重复运行。课程参考程序使用 NumPy 的
default_rng,基础种子为20260903,各窗口使用“基础种子 + 窗口天数”;如果你采用了其他可复现实现,不要为了迎合课程小数而强行改写结果。 - 10 日是事先指定的主要观察窗口。第一版弱规律门槛是:真实九拍的 10 日平均收益高于随机实验平均收益的 95% 分位,并且高于随机实验中位数。无论是否达到门槛,都不得写成“九拍已经被证明有效”或现实买入建议。
请把工作分成两个阶段。本次只完成第一阶段,完成后必须停下来等我确认:
- 查看数据文件和字段,完成数据体检;
- 使用人为构造的简单价格序列,自行检查
t-4、相等中断、方向切换、数到 9 后锁定和缺口续接; - 在规则研究期识别完整上涨与下行九拍;
- 汇报初始公司数、排除数量与原因、最终公司数、上涨与下行九拍数量;
- 从真实教学数据中抽取几段有代表性的信号,绘制带有数字 1 至 9 的 K 线抽查图,尽量覆盖普通完成、完成后锁定、方向切换和跨缺口计数;
- 保存一份大白话校验摘要和 PNG 抽查图,并告诉我文件位置。
第一阶段不要计算任何事件收益,不要运行随机日期对照,不要使用沪深300作为收益基准,不要加入 MACD、成交量、市值、行业、仓位、手续费或滑点,也不要读取和透露 2023 年价格、信号或收益。
你可以自行决定程序结构和文件名,也可以自行完成必要的内部检查。不要把程序代码当成主要交付物。完成后请用大白话说明“检查了什么、发现了什么、哪些内容还没有做”,然后停下来等我查看 K 线样本。
这里一次性把完整规则交给 AI,是为了让不同读者尽量从同一套起点完成教学实验,并不代表真实研究也必须依靠一条超长提示词开工。
当你研究自己的想法时,完全可以先用大白话提出一个不成熟的猜想,再通过多轮对话,让 AI 帮你发现其中的模糊之处,逐步补齐数据、时间、比较对象和计算口径。真正重要的不是“一次就把话说完”,而是正式计算以前,把最后商量好的规则整理成一个明确版本并冻结下来。看到结果以后如果想改规则,应当开启下一版研究,而不是悄悄改写原来的实验。
这份说明书很长,不代表你需要成为九拍专家。
它更像是寄快递时贴在箱子上的完整地址:收件人需要看全,寄件人不需要把邮编背下来。
第一次暂停:只看它有没有数对
AI 会自己完成数据检查、内部测试和信号识别。
我们不需要逐行阅读它写出的程序,只需要看两类汇报。
第一类是数字:
- 最初读取了多少家虚构公司;
- 有多少家公司因为长时间缺少数据被排除;
- 最终使用了多少家公司;
- 找到了多少次完整上行九拍和下行九拍。
第二类是图片。
AI 会从历史数据中抽出几段 K 线,把数字 1 到 9 标在对应位置上。
我们重点看:
- 数字是否连续从
1数到9; - 每个数字是不是在和四步以前比较;
- 数到
9后,有没有冒出10; - 图片有没有明显把上涨和下跌方向弄反。
如果看不出来,可以选其中一次,让 AI 把每个数字对应的日期、收盘价,以及四根以前用来比较的日期和收盘价列出来,再带你核对一遍。不必靠盯着图猜。
不需要检查两千多次信号。几张图不能证明所有信号都正确,但它能帮助我们发现最明显的理解错误。

使用当前版本教学数据时,课程实验得到的是:
| 检查项目 | 课程结果 |
|---|---|
| 初始虚构公司 | 300 家 |
| 因连续缺口严格超过 15 日而排除 | 8 家 |
| 最终合格公司 | 292 家 |
| 完整下行九拍 | 2,040 次 |
| 完整上行九拍 | 1,561 次 |
这些数字是课程实验的校验结果,不是提示词里要求 AI 迎合的答案。
如果你使用的是同一个数据包和同一套规则,基础数量应该能够对上。如果明显不同,先查原因,不要要求 AI 直接把数字改成课程答案。
如果数量和样本图没有明显问题,只需要回复一句:
继续实验
这些 K 线样本看起来没有明显问题,请冻结刚刚得到的合格公司名单和九拍信号,不要修改已经确认的规则。现在继续计算 3、5、10、20 日事件收益,并按照原任务中的同股票随机日期规则分别运行 1,000 轮对照。
请汇报每个窗口的实际事件数、平均收益、中位数和正收益比例,同时汇报随机实验平均收益的中位数、5%—95% 区间,以及真实结果在随机实验中的位置。请生成一张容易阅读的对比图,并保存一份大白话研究摘要。
这一阶段仍然不要读取或透露 2023 年价格、信号和收益,不要加入沪深300、MACD、成交量、市值、行业、仓位、手续费或滑点。完成后告诉我输出文件位置,并说明当前结果支持什么、还不能支持什么。

这次实验看见了什么?
使用课程数据和已经固定的规则,真实九拍与随机日期得到下面这组结果:
| 观察窗口 | 完整九拍事件 | 九拍平均收益 | 随机实验平均收益中位数 | 随机实验的 5%—95% 区间 |
|---|---|---|---|---|
| 3 日 | 2,016 | -0.02% | 0.20% | 0.01%—0.39% |
| 5 日 | 1,994 | 0.26% | 0.32% | 0.07%—0.58% |
| 10 日 | 1,908 | 1.35% | 0.60% | 0.23%—0.94% |
| 20 日 | 1,886 | 1.68% | 1.25% | 0.76%—1.75% |
不同窗口的事件数量略有差别,是因为靠近研究期末尾的一些九拍,没有足够的后续 K 线走完整个观察窗口。
最值得注意的是事先定下来的 10 日窗口:
- 九拍事件平均收益是
1.35%; - 1,000 轮随机实验平均收益的中位数是
0.60%; - 随机实验中,95% 的结果不超过
0.94%; - 真实九拍的
1.35%高于全部 1,000 轮随机结果。
按照实验开始以前定下的门槛,10 日窗口出现了一条值得继续检查的弱规律。
3 日、5 日和 20 日窗口没有通过同一门槛。
这里的真实九拍事件数量和收益来自固定数据与固定公式,不含随机抽签;使用同一数据包和规则时,这部分结果应该能够对上。
随机日期结果则允许出现合理的小幅差异。不同 AI 可能选择不同的随机数工具、候选排序或抽样实现,即使写下同一个种子,也不一定抽到完全相同的日期。我们真正要求的是:同一套程序重复运行时结果不乱跳,而且随机方法的小变化没有轻易把主要判断整个翻过来。

好消息,但先别把它叫作策略
蛙兄盯着 1.35% 看了几秒。
“所以,下行九拍真的可以抄底?”
蛙博士摇了摇头。
“我们现在只知道,在这份虚构教学数据的研究期里,10 日结果比普通日期更突出。”
“这还不够吗?”
“它足够让我们继续研究,但不够让真钱上场。”
我们还没有认真回答:
- 这个平均数是不是被少数暴涨样本拉高;
- 大多数事件是不是也表现得更好;
- 很多九拍会不会刚好挤在同一批市场日期;
- 统计上的平均事件收益,离一套真正能执行的策略还有多远。
这些问题不适合挤在本章结尾匆匆回答。
下一节,我们会把这份“好消息”放到桌上,看看它为什么值得继续,却还不能叫作策略。
如果结果明显对不上
先别让 AI 重写答案,也不要把课程数字塞给它要求照抄。
可以直接发送这一段:
逃生提示词
我想检查刚刚完成的九拍实验有没有按照约定执行。请读取当前项目中实际使用的数据文件、程序和刚刚生成的摘要,但不要猜测任何外部参考答案,也不要为了让结果看起来更合理而修改规则。继续封存 2023 年价格、九拍信号和收益。
请从原始数据开始审计整条计算链,并按顺序汇报:实际读取的数据包、字段和日期范围;公司与日期数量;连续缺口严格超过 15 个市场交易日的排除过程;前复权字段;t-4 比较、相等中断、方向切换和完成后锁定;信号确认后的进入日;3/5/10/20 日窗口计数;各阶段实际留下的公司数、信号数、事件数和真实九拍收益。
然后单独检查随机日期部分:确认是否保持同股票、同数量、完整未来窗口、排除真实九拍完成日,以及同一股票内不重复;记录实际使用的随机数工具、候选日期排序方式和种子;把同一套程序连续运行两次,比较两次结果是否一致。
最后请输出一张审计表,至少包含“阶段、使用的规则、实际结果、是否发现异常、可能影响”。如果发现问题,请指出最早出现问题的阶段,并用大白话解释应该怎样修复;如果没有发现问题,也请明确说明随机结果的小幅变化是否足以改变当前判断。在我确认以前,不要修改程序和研究输出。
这个提示词不保证一句话解决所有问题。
它的作用是让 AI 审计自己实际做过的事情,返回最早可能跑偏的地方,而不是假装知道课程答案,再在终点附近反复修饰数字。
如果独立审计后仍然需要逐项对照,可以再把你看到的参考数字明确贴给 AI。顺序最好是先审计、后对照,避免 AI 一开始就朝着参考答案调整程序。
这一章真正完成了什么?
我们没有学会手写九拍程序,也没有得到一套可以买卖的策略。
我们完成的是另一件更重要的事:
把完整规则交给 AI
→ 确认 AI 找到的是我们定义的九拍
→ 让九拍日期与普通日期公平比较
→ 得到一条可以继续研究、但仍有边界的弱规律
AI 负责读取数据、实现算法、重复抽样和绘图。
你负责守住研究问题、确认关键样本,并决定结论能走多远。
在这份虚构教学数据中,下行九拍的 10 日结果比随机日期更突出,这让它值得继续研究;但“比随机日期好一点”还不是一套可以交易的策略。
课后讨论
留下你的问题、理解或不同意见,也看看其他学习者怎么想。