HoppyQuant

第 7 课

指标亮了,就已经可以买了吗?

串起变量、指标、候选因子、候选信号、规则、最小策略与回测,明确每一站的职责和边界。

蛙兄关掉了大部分指标,只留下跳泡可乐的虚构收盘价和一条二十日均线。

屏幕终于清爽了。

就在这时,价格从均线下方穿到了上方。

行情软件亮起一个向上的箭头:

价格上穿二十日均线

蛙兄把鼠标移到“买入”按钮上。

蛙博士问:“你准备什么时候买?”

“就现在。”

“现在是收盘前,还是收盘后?”

蛙兄停了一下。

蛙博士又问:“买了以后,什么时候卖?”

蛙兄把鼠标慢慢移开。

箭头看起来像一个答案。

可才问了两个问题,答案就开始漏风了。

跳泡可乐的价格上穿均线,屏幕亮起候选信号箭头,但进入、退出和执行问题仍然没有答案。
图 1|指标出现某种状态,只把研究带到链条中间,还没有完成买卖决定。

先别急着买,我们还在研究链的中间

上一章里,我们说指标只是对已有记录的加工。

二十日均线算出来了,说明程序成功制作了一把尺子。

价格上穿均线,说明我们又定义了一个可以在具体日期判断的事件。

但“尺子做好了”“事件发生了”“值得交易”和“拥有一套策略”,不是同一句话。

这一章不再增加新指标。

我们只沿着这条均线,把几个经常挤在一起的词拆开。

收盘价负责留下记录

跳泡可乐每天都有一个收盘价。

它会随着日期变化,也会随着股票变化。

这种会随着研究对象或时间取得不同数值的东西,可以叫作变量

变量的工作很朴素:把我们准备研究的某一面记录下来。

它暂时没有表达“好”“坏”“应该买”或“应该卖”。

十元只是十元。

均线负责整理记录

把最近二十个交易日的收盘价放在一起求平均,我们得到二十日均线。

它是一个指标

这里的“二十日”只是教学例子,不是推荐参数。

指标比原始收盘价多做了一步加工,但仍然只是在描述已经进入计算的历史记录。

它不会因为名字里有“二十日”,就知道第二十一天会发生什么。

相对位置开始承担候选因子的工作

接下来,我们可以继续问:

价格在均线上方时,后来的表现是否与价格在均线下方时不同?

为了比较,我们需要记录价格相对均线的位置。

最简单的版本可以只有“上方”和“下方”。也可以把距离写成一个连续数字。

到了这里,这项特征开始承担候选因子的工作。

本课程暂时使用下面这套大白话定义:

候选因子,是我们准备系统地拿来解释、比较或预测研究结果的一项可测特征。

“候选”两个字很重要。

它只表示这项特征准备接受检查,不表示它已经有效,更不表示它是价格变化的原因。

如果我们只是把二十日均线画在屏幕上,它首先是一项指标。

当我们开始系统比较“价格相对均线的位置”与后来结果之间有没有关系,这项特征才在当前研究中承担候选因子的职责。

同一个数字可以出现在不同环节。它叫什么,除了看计算方式,也要看它在研究中负责什么。

上穿事件只负责标出一个时点

现在再看蛙兄发现的箭头。

我们可以把“由下向上穿过均线”写得更明确一点:

前一个交易日:收盘价不高于当日二十日均线
当前交易日:收盘价高于当日二十日均线

两个条件同时成立,我们就在当前交易日记下一个事件。

这可以叫作一个候选信号

候选信号的主要工作,是回答:

明确条件是否在某个时点发生了?

它把一段连续变化,变成一个可以标在日历上的日期。

但它仍然只是行动候选。

它还没有证明这个时点值得买,也没有告诉我们应该怎样买。

同一份价格记录依次成为变量、均线指标、等待检查的候选因子和某日出现的候选信号。
图 2|变量、指标、候选因子和候选信号,在研究链上承担不同职责。

一个信号,没回答的问题比想象中多

蛙兄看着箭头问:

“既然已经叫信号了,为什么还不能回测?”

因为一个箭头只告诉我们“这里发生了某件事”。

它没有告诉程序接下来该怎样处理。

信号之后的八个空格
  1. 研究哪些股票? 2. 什么时候才能确认信号已经出现? 3. 使用什么价格进入? 4. 什么时候、按什么条件退出? 5. 连续或重复信号怎样处理? 6. 停牌、涨跌停或缺失数据怎样处理? 7. 费用和可能的成交价偏差怎样计算? 8. 每次机会使用什么统一仓位假设?

这些空格不填,程序就只能替我们猜。

而程序每猜一次,研究问题就可能悄悄换一个版本。

比如,我们用当天收盘价确认上穿以后,不能又假装自己早已知道这个收盘价,并毫无困难地按同一个价格成交。

决策时点知道什么、订单何时发出、历史数据能否代表实际成交,必须前后一致。

在 A 股案例里,停牌和涨跌停等市场状态还可能让“理论上想买”与“实际上能成交”不是一回事。其他市场也有各自的交易时间、订单和成交限制。

候选信号只标出一个日期,旁边的研究范围、进入、退出、重复信号、交易限制、成本和仓位仍然是待填写空格。
图 3|候选信号只标出一个时点,完整策略仍需要一组明确规则。

每填清一个空格,我们就多了一条规则

规则没有神秘之处。

它只是把“遇到这种情况怎么办”写清楚。

例如,研究者以后需要明确:

  • 信号使用哪些信息确认;
  • 信号出现以后,从哪个可执行时点开始处理;
  • 满足什么条件结束一次观察或持有;
  • 多个机会撞在一起时采用什么一致做法;
  • 不可交易和数据异常时怎样记录。

这里故意没有替你填具体答案。

因为这一章的任务不是偷偷送出一套均线交易法,而是让我们看见:信号只负责按铃,规则才说明听见铃以后怎么办。

多条规则前后一致,才组成最小策略

当进入、退出、重复信号、交易限制、成本和仓位假设都写清楚以后,程序终于可以从头到尾照着执行。

这组能够被完整执行的规则,可以组成一套最小策略

“策略”在这里不等于“赚钱方法”。

它只表示处理说明已经足够完整:同一份历史数据交给同一段程序,程序知道每一步该做什么。

一套策略完全可能定义清楚,却表现很差。

这不矛盾。

规则完整解决的是“能不能一致执行”,不是“执行以后会不会赚钱”。

为什么回测仍然需要仓位假设?

只要我们想把多次历史机会合成一条收益曲线,就必须说明每次使用多少研究资金。

否则,一次上涨究竟为整个研究账户贡献多少收益,程序无法计算。

因此,后面的课程会使用简单、统一的仓位假设。

它的作用是让不同规则可以放在同一把尺子上比较。

这不等于课程在教你建立适合个人资金、风险承受能力和真实生活需求的仓位系统。

前者是研究条件,后者是完整的投资决策问题。我们的核心课程先停在前者。

回测是一场历史彩排

规则和最小策略准备好以后,才能进入回测

回测会把历史数据按时间顺序交给程序,让它模拟:

如果当时只能看到当时已经出现的信息,
并一直按照这套规则处理,
历史上会发生什么?

所以,回测更像一场历史彩排。

舞台、演员和过去发生过的天气都已经留下记录。我们可以检查规则在这段历史里怎样运行。

但剧院后面那扇写着“未来”的门,仍然关着。

回测不能从门缝里偷看下一场。

蛙兄和蛙博士在历史舞台上检查策略彩排,舞台记录清晰可见,但写着未来的大门仍然关闭。
图 4|回测是在历史记录上的彩排,通往未来的大门仍然关闭。
本章重点

回测回答的是:过去按照当前数据和规则模拟,会得到什么结果。

它不回答:未来一定会不会赚钱。

漂亮结果,也可能是研究过程化了妆

一条回测曲线很好看,不代表程序撒谎。

程序可能非常认真地执行了一套有问题的研究定义。

常见麻烦包括:

  • **偷看未来:**把当时还不知道的数据提前交给了策略;
  • **只留下幸存者:**使用今天仍然存在的股票,漏掉历史中已经退市或被排除的对象;
  • **反复挑答案:**不停更换窗口、条件和参数,只保留最好看的一组;
  • **忘记摩擦:**没有计算手续费、滑点或实际无法成交的情况;
  • **把运气当规律:**一段历史刚好配合当前规则,换个时期可能消失。

后面的实战课会一点点检查这些问题。

现在只要先记住:程序运行成功,只能证明程序完成了某种计算;它没有自动证明研究设计正确。

七个名字,各自只负责一站

最后,把这一章的词重新排成一条队:

| 名称 | 在当前课程里的工作 | | -------- | ------------------------------------------------------------------ | | 变量 | 记录会随对象或时间变化的内容,例如每日收盘价 | | 指标 | 按明确方法加工已有记录,例如二十日均线 | | 候选因子 | 等待系统检查、用于解释或比较结果的可测特征,例如价格相对均线的位置 | | 候选信号 | 在具体时点满足明确条件的行动候选,例如价格由下向上穿过均线 | | 规则 | 说明信号出现以后,各种情况怎样一致处理 | | 最小策略 | 把多条规则组成程序能够完整执行的说明 | | 回测 | 在历史数据中模拟这套策略,并记录过去发生了什么 |

这张表不是金融行业唯一允许使用的词典。

它是我们后续实验的工作地图。

以后只要有人说“这个因子出了买入信号,策略有效”,我们就能停下来问:

他说的是哪一站?
中间还有哪些站被跳过去了?

下一站:把研究零件装成完整路线

蛙兄再次看向屏幕上的向上箭头。

这一次,他没有点击买入。

他在箭头旁边写下了一句话:

这里出现了一个可以继续研究的日期。

蛙博士点了点头。

箭头没有消失,只是回到了它应该待的位置。

下一章,我们把已经认识的这些零件装成一条完整路线,看看后面的实战究竟准备怎样走。

本章参考资料

资料核对日期:2026-08-14

跳泡可乐、价格、均线、箭头和全部交易情节均为虚构教学案例,不对应真实公司、股票、收益或策略。二十日均线仅用于串联概念,不是参数推荐。金融行业对因子、信号和策略存在不同定义,本章采用的是后续课程内部保持一致的工作定义。本章不提供买卖信号、仓位建议或投资建议。

课后讨论

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