# A/B 分档路由 · 个股用 B30 · ETF 用 A30
> 2026-09-13 定版 · 全市场 3555 只(2020-02→2026-09)+ 22 只 ETF(2018-06 起)· 持有 30 日 · 灾难线 −30% · 成本双边 0.15%
| KPI | 个股→B30 | 净公平 Calmar 1.23(含状态仓位) | 每笔 +4.21% · 胜率 56.0% · 灾难线仅 3.8% |
|---|---|---|---|
| KPI | ETF→A30 | ETF 上完胜 B30 | 每笔 +2.8% vs B30 +1.85%;跑赢死拿 16/21 vs 14/21 |
| KPI | 口径修正 | 已交付公式B 漏了清洗条件 | 信号 12,548→57,139(4.5×),每笔 +4.21%→+3.20% |
| KPI | 接入 | 每日扫描已就绪 | `python3 /root/.hermes/scripts/ab_daily_scan.py scan` |
## 01|路由表
| 标的类型 | 策略 | 买入条件(副图同口径) | 卖出 | 仓位 |
|---|---|---|---|---|
| 个股 | B30 筹码跳升 | 获利筹码 ≤30 + 单日跳升 ≥8pp + 量比 ≥1.0 + 主力清洗转进场 | 持有 30 日到期卖;成本 −30% 灾难线 | 单席 = 总资金/20 × 系数(牛 1.0 / 防守 0.7) |
| ETF | A30 低位回升 | 获利筹码 ≤30 + 环比回升 >0 + 量比 ≥1.2 + 主力清洗转进场 | 同上 | 同上 |
为什么不是反过来:
## 02|口径修正(三处,必须知道)
| # | 问题 | 影响 | 处置 |
|---|---|---|---|
| 1 | 上一篇公式B 漏了「主力清洗转进场」 | 信号从 12,548 → 57,139(4.5 倍),每笔 +4.21% → +3.20%,Calmar 1.23 → 0.42 | 本版公式B 已补上 `QL_A5>REF(QL_A5,1)` |
| 2 | 「当日筹码 ≤30」vs「前日筹码 ≤30」两种写法混用过 | 前日口径信号 +2,924 个(当日口径 100% 落在前日口径内),每笔 +3.58%、Calmar 0.46 | 统一用「当日 ≤30」(头条口径,已验证) |
| 3 | 组合曲线是否含状态仓位(牛1.0/防守0.7) | 含权重 Calmar 1.21;不含 0.86(B30×30日) | 生产口径含状态权重 |
诚实说明:我在 9/12 晚间的「B30 vs A30 具体差别」「风格分档」「ETF 测试」三份分析里用了「前日 ≤30」的变体,与头条 B30(当日 ≤30)不是同一口径。本报告已用正确口径重算全部数字;两份旧报告的相对结论(A30 逐笔质量更好、B30 组合更强)不变,但绝对数字以本报告为准。
## 03|四个口径的全市场对照(同一份数据)
| 口径 | 信号点 | 轮次 | 胜率 | 每笔 | 去尾10% | −30%触发 | CAGR(中位) | 回撤 | Calmar |
|---|---|---|---|---|---|---|---|---|---|
| B30 当日(生产采用) | 14,227 | 12,548 | 56.0% | +4.21% | +2.78% | 3.8% | 21.1% | -26.6% | 0.8 |
| B30 前日(旧分析用) | 17,151 | 14,953 | 54.6% | +3.58% | +2.23% | 4.0% | 14.1% | -29.9% | 0.46 |
| B30 当日无清洗(误交付版) | 108,429 | 57,139 | 54.1% | +3.2% | +1.85% | 3.3% | 12.9% | -31.7% | 0.42 |
| A30(公式A) | 49,126 | 30,446 | 57.6% | +4.0% | +2.97% | 5.1% | 19.7% | -29.1% | 0.69 |
注:本表 Calmar 为不含状态权重的净公平口径(随机分配×60 取中位);bt47 口径(含状态权重)下 B30 当日 = 1.23、A30 = 0.97。
## 04|ETF 上四个口径对照(22 只,未复权)
| 口径 | 覆盖 ETF | 轮次 | 每笔 | 胜率 | 跑赢死拿 |
|---|---|---|---|---|---|
| A30(生产采用) | 21 只 | 235 | +2.8% | 51.9% | 16/21 |
| B30 当日(个股口径) | 21 只 | 121 | +1.85% | 47.1% | 14/21 |
| B30 前日 | 21 只 | 144 | +1.15% | 45.8% | 13/21 |
| B30 当日无清洗 | 21 只 | 347 | +0.88% | 49.9% | 17/21 |
分组表现(A30):防御红利最稳(每笔 +2.86%、胜率 69.0%、跑赢死拿 5/6);宽基次之(每笔 +4.93%);医药消费最弱(+0.69%)。
## 05|每日扫描接入
脚本:`/root/.hermes/scripts/ab_daily_scan.py`
| 命令 | 作用 |
|---|---|
| `python3 ab_daily_scan.py scan` | 扫当前池(默认读生产持仓清单 `scan_holdings.json`),输出每只标的的信号状态 |
| `python3 ab_daily_scan.py update` | 仅更新 K 线缓存(腾讯前复权,分段拉取避开 ETF/次新股的 640 根截断) |
| `python3 ab_daily_scan.py scan --pool | 用自定义池(格式同 scan_holdings.json) |
行为:
2026-09-11 收盘实跑(8 只持仓):状态=牛/系数1.0,买入信号 0 个 —— 8 只全部不满足入场条件(英杰筹码 44.1、量比 1.00、清洗未;半导体设备 ETF 筹码 9.8、量比 1.19、清洗未)。
## 06|选股公式(通达信,复制即用)
### 个股 · B30(筹码跳升)
```
QL_HLP:=WINNER(CLOSE)*100;
QL_JJ:=QL_HLP-REF(QL_HLP,1);
QL_LB:=V/REF(MA(V,5),1);
QL_A1:=REF((LOW+OPEN+CLOSE+HIGH)/4,1);
QL_A2:=SMA(ABS(LOW-QL_A1),13,1)/SMA(MAX(LOW-QL_A1,0),10,1);
QL_A3:=EMA(QL_A2,10);
QL_A4:=LLV(LOW,33);
QL_A5:=EMA(IF(LOW<=QL_A4,QL_A3,0),3);
XG:QL_HLP<=30 AND QL_JJ>=8 AND QL_LB>=1 AND QL_A5>REF(QL_A5,1);
```
### ETF · A30(低位回升)
```
QL_HLP:=WINNER(CLOSE)*100;
QL_JJ:=QL_HLP-REF(QL_HLP,1);
QL_LB:=V/REF(MA(V,5),1);
QL_A1:=REF((LOW+OPEN+CLOSE+HIGH)/4,1);
QL_A2:=SMA(ABS(LOW-QL_A1),13,1)/SMA(MAX(LOW-QL_A1,0),10,1);
QL_A3:=EMA(QL_A2,10);
QL_A4:=LLV(LOW,33);
QL_A5:=EMA(IF(LOW<=QL_A4,QL_A3,0),3);
XG:QL_HLP<=30 AND QL_JJ>0 AND QL_LB>=1.2 AND QL_A5>REF(QL_A5,1);
```
下载版(UTF-8 BOM,避免中文乱码):[选股公式_AB分档_v2_20260913.txt](http://47.113.231.110/选股公式_AB分档_v2_20260913.txt)
## 07|局限