87.0%。
这是 23 条被观潮 v4 强制降为“中性观望”的看空信号,如果保留原方向,5 天后会得到的命中率。
20 次正确,3 次错误。
看到这组数字时,我的第一反应很直接:v4 把好信号误杀了,置信度门槛应该撤掉。
但真正改变观潮的,不是这个 87%。而是随后冒出来的一个问题:这 23 条信号,系统当时明明对用户说的是“观望”,为什么成绩单里还能算出“看空胜率”?
顺着这个问题查下去,v5 没有先改策略。
它先把自己的胜率推翻了。
这是观潮系列的第十九篇。策略线上接上《观潮淘金记》:四个月前,135 条信号教会 v4“没把握就闭嘴”;四个月后,409 条信号逼着它回答一个更难的问题——闭嘴之后,应该怎样给自己打分?
四个月前留下的伏笔
v4 的核心规则很简单:置信度低于 40,不管技术评分多极端,一律降为中性观望。
当时的数据很漂亮:高置信度信号 72.1% 准,低置信度只有 47.8%,和抛硬币差不多。于是 v4 做了最狠的一刀——不够确定,就不再给方向。
但《淘金记》结尾还埋了一根针:所有被门槛压掉的信号都要留下标记。等未来结果回来,再检查这些信号究竟是被规则救下了,还是被规则误杀了。
四个月后,这笔账终于能算了。
初始复盘快照拉出了 406 条原始记录,按“日期 × 股票”只保留当天最后一次判断后,剩下 388 个独立判断。截至本文定稿,生产库已经增长到 409 条原始记录、391 个独立判断。两组数字来自同一次审计前后的不同时间截面,后文统一使用最新口径。
那 23 条被 P0 置信度门槛压掉的信号,全都来自原本的看空方向。其中 20 条在 5 天后确实下跌,反事实命中率 87.0%。即使只看 7—8 月、排除 bull 市场,仍然是 7/9,命中率 77.8%。
看上去,撤掉门槛的证据已经够了。
可 87% 回答的只是:“如果当时继续看空,会怎样?”它没有回答:“用户实际收到了什么建议?”
这两个问题过去被写在了同一张成绩单上。
成绩单替观潮说了它没说过的话
旧版回填逻辑判断一条信号是否正确时,看的不是最终展示给用户的方向,而是隐藏在后台的技术评分。
假设某只股票评分是 -32,本来应该看空;但它的置信度只有 32,于是 v4 把最终方向降成“中性观望”。用户看到的是观望,没有收到看空建议。
5 天后股票跌了。旧成绩单看到负分和下跌,就给这条信号记一个 correct。
于是出现了一个荒谬的结果:系统没有做出方向判断,却因为那个没有说出口的方向拿到了分。
反过来也一样。如果股票上涨,它会被记为错误,仿佛观潮真的叫人做空过。
这不是普通的统计偏差,而是评价对象错了。成绩单评的是“技术分数隐含了什么”,用户承担的却是“最终建议说了什么”。两者一旦被置信度、市场体制或护栏分开,旧胜率就不再代表真实决策质量。
重新按最终方向计算后,全历史 391 个独立判断中:
| 5 天结果 | 数量 | 如何计分 |
|---|---|---|
| 有方向的判断 | 258 | 161 次正确,方向命中率 62.4% |
| 中性观望 | 118 | 记为 abstain,不算正确也不算错误 |
| 尚未到期 | 15 | 等待后续回填 |
62.4% 不是一个难看的数字。真正重要的是,它终于只回答一个清楚的问题:当观潮确实给出看多或看空时,方向对了多少次?
至于观望,也不再躲进胜率里。它有自己的账:观望了多少次,之后市场波动多大,系统究竟躲开了噪声,还是错过了机会。
这才是“没把握就闭嘴”应该接受的考试。
第二把尺子也有问题
修正最终方向后,事情仍然没有结束。
v4 上线后的样本主要来自三只长期持仓,而这段时间的市场又长期偏弱。结果很容易出现一种假象:系统只要经常看空,胜率就会很好看。
把 v4 上线后已有 5 天结果的 159 次正式方向调用拿出来,与一个什么都不分析、永远回答“看空”的基线比较:
| 策略 | 5 天方向命中率 | 平均方向收益 |
|---|---|---|
| 观潮 v4 | 62.3% | +1.37% |
| 永远看空 | 63.5% | +2.00% |
这里的“方向收益”会把看空后的跌幅转成正值;例如股票下跌 2%,一次正确看空记为 +2%。它衡量方向判断带来的收益,而不是股票本身的平均涨幅。
观潮没有跑赢那句最偷懒的话:“反正会跌。”
这不等于所有技术分析都无效。它只说明现有成绩里混进了太多行情本身的方向。如果不引入基准,熊市里一个看空模型很容易把 beta 当成 alpha;换到牛市,同一套自信可能立刻翻车。
数据也确实留下了警告:在市场体制被标为 bull 的 21 次正式方向调用中,5 天只对了 7 次,平均方向收益 -1.56%。
所以 v5 需要修的不只是“按什么方向判对错”,还包括“凭什么说这是策略赚到的”。
v5 先换尺,不换脑
通常说到策略升级,人们期待的是新指标、新权重、新阈值。v5 偏偏没有先做这些。
MA、MACD、RSI、OBV 的权重暂时不动,用户看到的正式方向仍然来自 v4。v5 先把评价拆成三条互不冒充的轨道:
- 方向结果:只按最终的看多或看空判断命中率和方向收益。
- 观望结果:单独记录 abstain,以及观望后错过或避开的波动。
- 相对结果:同时记录基准指数,计算相对市场的超额收益。
每条新记录还带上策略版本、原始评分、调整后评分、触发规则、信号来源和当时的基准状态。以后再看到一个百分比,可以一路追溯它究竟来自哪个版本、哪条规则、哪种市场环境。
这部分看起来不像“策略”。但如果评价器错了,任何后续调参都只是在优化一个错误目标。
v5 的第一项策略改进,是拒绝继续相信一张口径含混的成绩单。
两条候选策略,先在影子里跑
标尺修好以后,87% 并没有被扔掉。它从“立刻上线的结论”降级成了一条需要前瞻验证的假设。
v5.1 Shadow Policy 同时运行两条候选规则:
| 候选规则 | v4 正式输出 | v5.1 Shadow 输出 | 要验证的问题 |
|---|---|---|---|
非 bull、-40 < score <= -25、低置信度 | 中性观望 | 看空 | P0 是否误杀了弱看空 |
| bull 体制下已有方向调用 | 看多或看空 | 中性观望 | bull 识别下的方向建议是否系统性失真 |
Shadow 的意思是:它们每天和 v4 一起跑,记录自己会怎么判断,但不改变 Dashboard 上的正式建议,也不影响真实决策。
第一天,完整股票池记录了 32 只股票:13 条看空保持看空,18 条观望保持观望,只有 1 条被 v5.1 从观望恢复为看空。当天没有遇到需要静默的 bull 方向调用。
这些记录现在没有胜率,因为 5 个交易日还没过去。没有结果,就是没有结果。 历史反事实负责提出假设,未来数据才有资格裁决它。
为什么不是现在就撤掉 P0
23 条里对 20 条,确实很诱人。但它至少背着三层偏差。
第一,样本来自规则上线后的历史回看,不是预先写下、等待兑现的判断。第二,信号主要集中于三只持仓,不代表跨股票泛化能力。第三,样本处在长期偏弱行情,看空方向天然占便宜。
如果因为 87% 立刻撤掉 P0,观潮只是在重复旧习惯:看到一个漂亮分组,就把它写进正式策略,然后继续用同一批数据证明自己正确。
v5 为此设了两道闸门:
- 至少积累 30 个前瞻的 5 日样本;方向命中率、平均方向收益、相对基准收益三项中,至少两项优于 v4,候选规则才有资格讨论转正。
- 在跨股票 Shadow 样本达到 500 之前,不调整 MA、MACD、OBV 等因子权重。
每天的 Shadow 记录还必须覆盖至少 90% 股票池,并保证股票与基准指数使用同一个预期交易日。日期错位、覆盖不足或数据不完整时,宁可不写,也不制造一批看似完整的脏样本。
这一次,观潮不再边考试边改答案。
不只是股票:评价器也是产品的一部分
这次最值得留下的教训,不是“低置信度看空可能很准”,而是另一个更普遍的问题:一个 AI 系统究竟在优化什么?
客服 Agent 没有回答用户,却因为检索到了正确文档被算作成功;代码 Agent 提交了补丁,却只因为测试命令启动过就被记为通过;医疗模型选择转人工,却仍按内部最高概率类别拿分类分数。
它们和旧版观潮犯的是同一种错:内部推断与最终动作已经分开,评价器却还在给内部推断打分。
一旦指标成为系统进化的方向,这种错会被放大。模型不会主动告诉你目标写错了,它只会越来越擅长拿到那个分数。
所以评价器不是开发完成后的附属报表。它本身就是产品的一部分,甚至是决定系统会进化成什么样的那一部分。
v3 学会了警惕过度自信;v4 学会了没把握时闭嘴。到了 v5,观潮终于开始追问:闭嘴算不算答对?赶上大盘算不算本事?回看历史找到的规律,能不能活到未来?
这些问题暂时没有漂亮答案。
但至少,答案纸终于换对了。
写在最后
四个月前,我写下:“你不需要每次都对,你只需要每次都知道自己对没对。”
现在看来,这句话还少了一层。
你不仅要知道自己对没对,还要确认:被判对的,真的是你当时做出的那个决定。
v5 还没有让观潮预测得更准。第一批 32 条 Shadow 甚至还没有走满 5 个交易日。它没有新胜率可以展示,也没有资格宣布哪条候选策略胜出。
它只是先做了一件更基础、也更困难的事:不再用错误的尺子,证明自己很准。
等潮水退去,答案会自己留下来。

