海底捞月统一版指标优化 · 第一阶段诊断与实验设计

日期:2026-10-19
状态:只诊断与设计,未修改生产公式、未删除模块、未切换生产口径。

0. 结论先行

当前最值得先处理的不是增加缠论/威科夫条件,而是三件基础问题:

  1. 生产源代码与运行缓存存在卖点口径漂移:源公式写的是 WZ20>=60;build_signals_v2.py 仍计算 EXITW=(WZ20>=85)|(BD7>=70);daily_signal.py 直接读取 cache2 的旧 exitw。如果不先统一,任何卖点优化回测都可能优化了错误对象。
  2. EF 的六项并非六种独立证据:C4(SD≥10、EF≥4)事件中,DP20、DP60、BL20 三个价格偏离条件覆盖率分别约 97.0%、98.7%、99.3%;它们两两 Jaccard 约 0.958、0.965、0.980。真正相对独立的量能条件 X6 仅覆盖约 4.8%。当前 EF 更像“价格超跌程度重复计数 + 一个量能条件”,不是六维供需模型。
  3. 当前指标没有显式表示“供应是否衰竭、测试是否成功、需求是否跟随”:SD/EF 主要描述价格偏离、超卖、连阴、区间位置和量比;这能找“跌得深”,不能直接区分威科夫的 SC→AR→ST/测试→SOS 与普通下跌中的反弹。这是缠论/威科夫最有可能补充、也最该先做单因子验证的方向。

因此第一轮不重写指标,先做:口径对齐 → 条件独立贡献 → 供应/测试/需求跟随三个候选规则的因果测试。


1. 当前真实代码链

1.1 生产/研究数据链

bundles_qfq/<code>.npz
  dates, OHLC, volume, amount
        ↓ build_signals_v2.py
cache2/<code>.npz
  sd, df, xg, bd7, wz20, dp20, dp60, rsi, jv,
  exitw, exit2, warn1, warn2, T, t6b, lyn
        ↓ daily_signal.py
C/u≥4% 门控 → SD≥10 → DF≥4 → 监管/ST/退市过滤 → 前10
        ↓ engine.py / iter_ws.py / 生产扫描
次日开盘成交,收盘触发次日开盘卖出

1.2 指标公式层级

原始行情
├─ MA5/20/60、RSI14、RSV9/K9/D9/JV
├─ 成本线
│  ├─ DCP0=AMOUNT/VOL/100
│  ├─ 复权因子中位数 FQ5
│  ├─ VW20/VW60
│  └─ DP20/DP60
├─ 波动适配 BD7
│  ├─ W1~W8 单根K线波动特征
│  ├─ AVGW
│  ├─ UPW/DNW/LOWW
│  └─ BD7
├─ 位置
│  ├─ WZ20/WZ60
│  ├─ BL5/BL20
│  └─ RM60
├─ SD = A1~A10
├─ EF = X1~X6
├─ C1/C2/C3/C4/SSB
├─ B/G 展示标记
├─ EXITW / 热度 WARN1/WARN2
└─ 灾难线与40日持有期由运行层/副图展示

1.3 变量影响位置

层 变量 影响 当前性质
超跌 A1~A10、SD 进入候选/出手深度 价格状态 + 成本偏离 + 波动状态
极端 X1~X6、EF/DF C4 出手门槛、排名 价格偏离重复较多,X6 量能相对独立
深筛 SSB G 优先标记 连阴、DP60、RSI22 的强超跌组合
门控 C/u≥4% 是否允许当天出手 市场广度/拥挤度,不在副图公式内
卖点 源公式 EXITW / cache2 exitw 次日开盘卖 当前存在源代码与缓存漂移
风控 灾难线、40日 截断逆势单、时间兜底 运行层与副图分别表达

2. 基准版本与口径问题

2.1 当前公式与运行缓存不一致

证据来自实际文件:

分类:这是代码/口径一致性问题,不是理论问题。
处理优先级:P0。正式优化前必须建立两份独立基线:

二者不能混报。旧报告中使用 P95 门控、WZ85/BD70、固定12%的结果,也不能当作统一版基线。

2.2 初步精确门控复核

已按生产 C/u≥4% 重算了一版低内存基准,发现:

这版已用于发现口径差异,但仍需把 B0-unified-canonical 固化为正式回归基线后,才进入候选规则评估。第一轮不据此宣称优化成功。


3. 现有条件的独立信息诊断

样本:cache2 全池 5388 个文件、约 1203 万根K线;C4 定义为 SD>=10 AND DF>=4。

3.1 C4 规模

统计 数值
全部K线 12,034,979
xg/SD≥8 宽候选 638,497
C4事件 60,930
C4 / 全部K线 0.506%
C4 / 宽候选 9.543%
出现C4的交易日 2,285
单日最多C4 3,349

C4 稀疏,但在恐慌日会高度拥挤,因此后续必须同时看事件加权、按日等权和门控日表现,不能只看单笔均值。

3.2 EF 六条件在 C4 中的覆盖率

条件 含义 C4中成立率 初步判断
X1 RSI14≤25 78.9% 超卖状态
X2 DP20≤−15 97.0% 几乎必有,区分度弱
X3 连阴≥4 71.8% 有一定独立性
X4 DP60≤−20 98.7% 几乎必有,区分度弱
X5 BL20≤−15 99.3% 几乎必有,区分度弱
X6 5日量/前5日均量≥1.5 4.8% 相对独立,需单独验证

3.3 相关性/重复性

C4内部 Jaccard:

初步结论:不宜把 X2、X4、X5 当成三个独立“得分”,否则 EF≥4 可能主要由同一件事——价格已经偏离成本/均线——重复贡献。X6 虽然稀少,却更接近威科夫的供需变化假设;它必须做单独增量测试,而不是直接提高权重。

尚未完成:这只是条件共现诊断,不等于预测贡献。下一步必须做单项消融和未来5/10/20日收益分布。


4. 三个最值得研究的缺陷

缺陷 D1:超跌状态与“供应衰竭/需求接管”没有分开

当前 SD/EF回答“跌得多不多、是否超卖”,没有直接回答:

理论映射:威科夫 SC、停止行为、努力与结果、二次测试、Spring;缠论中“区间下探失败”“中枢震荡”“第二/第三类买点”。

缺陷 D2:当前EF的价格偏离重复,量价维度不足

DP20、DP60、BL20在C4中几乎总是同时成立,造成“看似多维、实际同源”。X6反而较独立,但当前仅作为六项之一,且其方向是放量,不区分恐慌吸收与持续卖压。

理论映射:威科夫努力与结果、停止行为、供应扩大/枯竭;不能把“放量”直接当利好,必须和价格进展、收盘位置、后续测试配对。

缺陷 D3:缺少结构确认的级别与延迟标注

缠论的分型、笔、线段、中枢、背驰都不是当根K线天然可知;如果直接把事后确认结构贴回C4,会有前视偏差。当前日线C4没有可验证的多周期中枢/第三类买点字段。

理论映射:缠论走势级别、同级别分解、中枢、背驰、区间套;第一轮只能使用日线因果代理,不能声称“日线已识别5分钟第三类买点”。


5. 理论→公式→实验映射表

ID 来源/概念 要解决的问题 量化候选(全部只用当日及以前) 最早确认 影响位置 状态
W1 威科夫·努力与结果 放量究竟是接盘还是持续供应 当日量比≥1.8且振幅≥9%,再按收盘位/阴阳分组;高量大跌与高量小跌分开 当日收盘 B/G质量标签 待测试
W2 威科夫·停止行为 下跌是否停止 下跌背景下,振幅扩大但收盘位≥当日振幅中点,或价格跌幅缩小而量增;不单独把长下影当买点 当日收盘 B/G质量标签 待测试
W3 威科夫·二次测试 低点是否被重新测试且供应减弱 20日低点后,回测前低±2%区域;回测日量比≤前SC/前20日量,振幅收窄;需明确基准低点 测试收盘后 入场过滤/评分 待测试
W4 威科夫·Spring 识别下探失败 当日/近3日低点跌破前20日低点不超过2%,收盘重新站回前低,且后续不能立即放量跌破;首次只做标签,不硬过滤 收盘收回支撑当日 G/B质量标签 待测试
W5 威科夫·需求跟随 区分反弹与反转 C4后3日内高点/低点/收盘至少逐步抬高,阳线成交量不持续萎缩;严格按入场后确认,先测“确认后入场”的等待成本 第3根收盘 触发时机 待测试
W6 威科夫·无需求反弹 排除下跌中弱反弹 反弹上涨但量和振幅同步收缩,且未越前一压力;只作为负标签/风险标记,不直接加分 当日收盘 B/G降级 待测试
C1 缠论·区间下探失败 减少持续下跌接刀 20日/60日区间下沿附近下探后收回,作为日线“类中枢测试”代理;不宣称正式中枢 收盘收回当日 B/G质量标签 待测试
C2 缠论·走势节奏 区分中枢震荡与下跌延续 C4后反弹段是否突破前一反弹高点且回踩不破;仅日线代理,等待确认会产生延迟 回踩确认后 触发时机 待测试
C3 缠论·背驰/区间套 减少超跌但未止跌 先用当日可得的两段同向价格/波动衰减代理;不使用事后线段/背驰;需与简单反弹基准比较 第二段完成后 B/G质量标签 待测试
A1 现有EF消融 判断重复条件真实贡献 X2/X4/X5逐项移除,保持C4门槛、门控、成交规则不变 同日 EF/出手门槛 待测试
A2 现有SD消融 判断十项条件独立贡献 A1~A10单项移除/单项只保留,报告信号数量及未来分布 同日 SD 待测试
Q1 质量分层 避免硬过滤漏掉反转 原C4集合不变,新增 W/C 标签,比较 B/G、标签组合的前瞻分布 当日 B/G展示 待测试

理论证据:W1~W6来自威科夫蒸馏中的SC/停止行为/努力结果/二次测试/Spring/SOS;C1~C3来自缠论蒸馏中的中枢、走势节奏、背驰/区间套。尚无规则已被本轮验证为生产优化。


6. 第一轮最小化实验计划

6.1 先固定三套基线

基线 目的 口径
B0-runtime 当前实际运行回归 cache2现有字段 + daily_signal实际门控/过滤/当前cache exitw
B0-unified 用户统一版目标基线 WZ20≥60、灾难线−30%、40日、C/u≥4%、次日开盘、成本0.1%
B0-old-report 历史报告参考,不参与新结论 P95、WZ85/BD70、固定12%,仅用于解释旧数字

硬规则:三者不能混报。先把 B0-unified 用独立研究缓存重建并逐位校验;生产 cache2 不覆盖。

6.2 单因子实验

对每个候选只加一个因素,其他完全固定:

  1. B0 + W1(努力结果)
  2. B0 + W2(停止行为)
  3. B0 + W3(二次测试)
  4. B0 + W4(Spring代理)
  5. B0 + W5(需求跟随,报告等待/价格滑移成本)
  6. B0 + W6(无需求反弹负标签)
  7. B0 + C1(类区间下探失败)
  8. B0 + C2(日线节奏代理)
  9. B0 + C3(非正式背驰代理)
  10. B0 + X2/X4/X5逐项消融
  11. B0 + A1~A10逐项消融

第一轮新增规则全部先作为质量标签/分组,不直接硬过滤买点。只有某标签在样本外也有稳定增量,再测硬过滤。

6.3 必做对照

6.4 接受/淘汰标准

候选条件只有同时满足以下条件才进入下一轮:

  1. 样本外20日/40日收益或Calmar有增量,不能只提高胜率。
  2. 交易数不因硬过滤骤减超过20%,除非回撤和单笔期望均显著改善。
  3. 熊/震荡/结构牛至少三段不劣,不能只靠一段行情。
  4. 随机选槽三次不出现单次尖峰。
  5. 无未来函数、无确认时点伪造、无复权/初始化漂移。
  6. 组合必须报告5/10/20日收益、MAE/MFE、持仓时间、连续亏损、成本敏感性。

7. 本阶段不做的事

8. 下一步

第一优先修复研究口径:建立 research/00_baseline 的 B0-runtime 与 B0-unified 双回归;同时完成 A1~A10、X1~X6 单项消融。之后再对 W1~W6、C1~C3 逐个做因果前视实验。

当前证据等级: