# 筹码版（B30 / A30 / A30·副图共振）生产复刻 · 逐位比对

> 目的：把这次研究的三个买点**接进生产链路**（`holdings_daily_scan.build_buy_sell`），并验证生产路径与研究路径的信号**逐位一致**。

|KPI|逐位一致性|**全部 0 差异**|68 只 × 2 种数据源 × 3 个买点 = 408 组，全部逐位一致|
|KPI|回归|**在役席位未受影响**|75/75 组 0 差异（潜龙吸水·双闸 / 三重奏·终卖）|
|KPI|性能|**25.7s / 204 次调用**|均 0.063s/次（8 只持仓约 0.5s，可接受）|
|KPI|生产状态|**已注册，未切换**|规则进 `strategy_rules.json`，席位表未动 → 现有推送行为零变化|

## 01|接进生产链路做了什么

| 项 | 内容 | 文件 |
|---|---|---|
| 新买点模式 | `ql_a30`（低位回升）· `ql_b30`（筹码跳升）· `ql_a30_sub`（A30+副图共振） | `holdings_daily_scan.py` 新增 `ql_indicators()` / `ql_fwd_any()` |
| 新卖点模式 | `hold30`（无事件卖点，持有 N 日到期卖） | 同上 |
| 规则注册 | `筹码版B30` / `筹码版A30` / `筹码版A30·副图共振`（各带 desc 与实测数字） | `strategy_rules.json`（纯新增 3 条）|
| 备份 | 改动前两个文件已备份 | `/root/backups/ql30_20260913/` |

**指标口径（与你的副图完全同源）**：

| 指标 | 实现 |
|---|---|
| 获利筹码 W | `winner.py` 的 `winner_series`（VERIFIED_PARAMS：mid / λ=0.035 / window=160）|
| 量比 VR | `V / REF(MA(V,5),1)`（副图口径，非 `V/MA(V,5)`）|
| 主力清洗 WUP | 副图 VAR1~VAR5：`EMA(IF(LOW<=LLV(LOW,33), EMA(VAR2,10), 0), 3)` 上行 |
| 副图买点 SUB | `K=EMA(EMA(RSV,3),3)`、`D=MA(K,3)` 的 **K 上穿 D**（你确认的红箭头）|

## 02|逐位比对结果

| 数据源 | 买点 | 生产路径信号点 | 研究路径信号点 | 差异 | 判定 |
|---|---|---:|---:|---:|---|
| 生产缓存（腾讯qfq） | A30 | 89 | 89 | 0 | ✅ 逐位一致 |
| 生产缓存（腾讯qfq） | B30 | 29 | 29 | 0 | ✅ 逐位一致 |
| 生产缓存（腾讯qfq） | A30副图 | 51 | 51 | 0 | ✅ 逐位一致 |
| 研究 bundle（mootdx） | A30 | 1,986 | 1,986 | 0 | ✅ 逐位一致 |
| 研究 bundle（mootdx） | B30 | 504 | 504 | 0 | ✅ 逐位一致 |
| 研究 bundle（mootdx） | A30副图 | 915 | 915 | 0 | ✅ 逐位一致 |

生产路径 = `build_buy_sell(s, g, C, n, {buy: ql_*}, df)`（14:45 扫描器调用的同一函数）；研究路径 = 本次研究用的自算实现（`bt58.compute_ind` + `bt67` 副图 K/D）。**两条路径在所有 bar 上完全一致。**

**回归验证**：在役两个席位（个股席 潜龙吸水·双闸、ETF席 三重奏·终卖）在改动后仍然 75/75 组 0 差异 → 现有生产逻辑未被破坏。

## 03|现在的状态与后续动作

| 状态 | 说明 |
|---|---|
| 筹码版 B30 / A30 / A30·副图 | **已可在生产链路运行**（改席位表即生效），当前未切换 |
| 现有生产席位 | 个股席 潜龙吸水·双闸 · ETF席 三重奏·终卖 —— 行为零变化 |
| 切换动作（待你点头）| ① 改席位表 `strategy-naming-20260812.md` ② 跑 `update_active_strategy.py` ③ 14:45 扫描自然切换 ④ 观察一次实盘推送核对 |
| 需要留意的 | 生产缓存只有 ~1,620 根（2020-02 起）+ 归一化到现价 → 信号数比研究口径少 10~30%（已量化，方向一致）|

## 04|局限

- `hold30` 只提供「无事件卖点」；30 日到期与 −30% 灾难线的执行在扫描器的持仓跟踪层（`ab_daily_scan.py` 已实现），持股周期规则尚未并入生产 `analyze()`
- 副图共振容忍度固定 ±3 日（研究中 A30 侧最优），未做参数寻优
- 生产缓存长度有限：上市不足 1,620 根的标的（如珂玛 503 根）信号可用区间较短

<div class='foot'>脚本 /root/ths_analysis/winner_test/{bt71_ql_parity,make_report33}.py · 生产改动 /root/.hermes/scripts/{holdings_daily_scan.py,strategy_rules.json} · 备份 /root/backups/ql30_20260913/ · 生成 2026-09-13</div>