---
template: sheet
theme: shadcn
title: 相对强弱 RS × 海底捞月·追逐 · 调优与 IS/OOS 评估
subtitle: 3.87 万 C4 事件 + 4193 只全A池 · IS=2014-2021 / OOS=2022-2026 · 口径与 10-24 早上评估表一致
cols: 2
source: /root/lxxg/data/rs_final_table.json
---

```callout info 结论先说
指标本身有效，方向和你写的相反。行业线越强越好，大盘线越弱越好。
但它只能当显示与人工优选，不能当交易闸门。闸门类 OOS 全部跑输生产现状。
```

## A 指标是否有效 · 事件级实测 {span=2}

把两条线分别切五段，看信号后 20 日收益。全样本 3.87 万个 C4 事件。

| RS_HY 相对行业 · 段 | 事件数 | 前瞻20日 | 胜率 |
|---|---|---|---|
| 最弱 ≤ −15.6 | 7557 | +9.21% | 66.0% |
| −15.6 ~ −9.8 | 7534 | +14.00% | 74.9% |
| −9.8 ~ −6.1 | 7570 | +15.57% | 81.0% |
| −6.1 ~ −2.4 | 7607 | +16.81% | 84.6% |
| 最强 > −2.4 | 7639 | +17.01% | 86.7% |

单调递增。行业里越抗跌，后面反弹越好。

| RS_DP 相对大盘 · 段 | 事件数 | 前瞻20日 | 胜率 |
|---|---|---|---|
| 最弱 ≤ −22.6 | 7635 | +18.87% | 74.5% |
| −22.6 ~ −17.1 | 7619 | +16.21% | 79.9% |
| −17.1 ~ −13.3 | 7576 | +14.09% | 80.8% |
| −13.3 ~ −9.6 | 7569 | +12.06% | 79.9% |
| 最强 > −9.6 | 7508 | +11.35% | 78.3% |

单调递减。相对大盘跌得越透，后面反弹越强。

```callout warn 这就是原式的第一个错
`RS_DP>0` 才算强，这条在 C4 池里几乎从不成立。全样本只有 1.0% 的事件满足。
超跌抄底信号天生是弱势股。照原式做闸门，等于把 99% 的信号删掉。
```

## B 两条线合起来 · 分档依据 {span=2}

阈值取 RS_HY=0、RS_DP=−12。左列是全样本，右两列是分段验证。

| 组合 | 样本占比 | 全样本 | 胜率 | IS 2014-2021 | OOS 2022-2026 |
|---|---|---|---|---|---|
| 行业强 + 相对大盘超跌 | 2.9% | **+24.00%** | **92.6%** | +18.00% / 82.7% | +26.22% / 96.3% |
| 行业强 + 相对大盘不深 | 7.7% | +15.25% | 85.3% | +13.73% / 79.0% | +16.40% / 90.1% |
| 行业弱 + 相对大盘超跌 | 63.9% | +15.62% | 78.0% | +10.46% / 70.5% | +20.10% / 84.4% |
| 行业弱 + 相对大盘不深 | 24.4% | +10.33% | 76.8% | +9.02% / 73.9% | +11.60% / 79.5% |

两维各自单调，且互相独立。所以能正交分档。分段都单调，说明不是拟合出来的。

首行与末行在两段里顺序稳定。中间两行在 OOS 里互换，所以图上一律用黄橙，不细分。

## C IS/OOS 评估表 {span=2}

引擎口径；K=10、卖出 WZ20≥80、最长持有 40 日、−30% 灾难线、费用 0.1%；广度门控 C/u≥4.5%。

| 项 | S0 生产现状 | S1 闸门 RS_HY>0 | S2 闸门 z_HY≥0 | S3 闸门 z_DP≥0 | S4 闸门 RS_HY≥−12 | S5 排序 RS_DP最弱 | S6 排序 z_DP最弱 | S7 排序 行业分位−大盘分位 | S8 随机排序 |
|---|---|---|---|---|---|---|---|---|---|
| IS Calmar | +0.408 | +0.060 | +0.137 | +0.363 | +0.357 | +0.366 | +0.467 | +0.518 | +0.380 |
| OOS Calmar | +0.744 | +0.116 | +0.358 | +0.609 | +0.402 | **+0.803** | +0.668 | +0.441 | +0.458 |
| 衰减率 | −82.6% | −91.6% | −160.4% | −67.6% | −12.5% | −119.1% | −43.1% | +14.7% | −20.5% |
| OOS 夏普 | **+1.07** | +0.34 | +0.66 | +0.96 | +0.69 | +0.93 | +0.91 | +0.59 | +0.73 |
| OOS 最大回撤 | −24.3% | −31.6% | −26.8% | −15.1% | −27.2% | −21.8% | −24.2% | −23.4% | −29.2% |
| OOS 盈亏比 | 1.26 | 0.90 | 1.00 | 1.61 | 0.96 | 0.99 | 1.12 | 1.02 | 1.12 |
| OOS 胜率 | 72.1% | 63.4% | 71.4% | 82.5% | 68.5% | 71.8% | 72.4% | 66.7% | 67.4% |
| OOS 笔数 | 129 | 71 | 84 | 40 | 130 | 131 | 127 | 126 | 129 |
| OOS 最长水下 | 209 日 | 450 日 | 539 日 | 416 日 | 279 日 | 167 日 | 203 日 | 461 日 | 213 日 |
| 总分 | 88 | 44 | 63 | 87 | 61 | **93** | 85 | 56 | 69 |
| 评级 | A | D | C | A | C | A | A | C | C |
| 否决项 | 通过 | 水下>365日<br>频率<15% | 水下>365日<br>频率<15% | 水下>365日<br>频率<15% | 通过 | 通过 | 通过 | 水下>365日 | 通过 |

S5 分数最高，是因为它只改排序、不砍频率。S3 分数 87 却被否决，只选了 40 笔。

```callout err 高分不等于可用
S5 的 OOS Calmar 比生产现状高 8%。但它的 IS 更低，只按 IS 选参根本选不到它。
S7 的 IS 最高（0.518），OOS 掉到 0.441。这是典型过拟合形态。
```

## D 只按 IS 选参 · 干净走查 {span=2}

| 只按 IS 选出的配置 | IS Calmar | OOS Calmar | OOS 笔数 | OOS 胜率 |
|---|---|---|---|---|
| RS_DP 同日分位 ≤50% | +0.414 | +0.536 | 128 | 68.8% |
| df 优先, 同分按 RS_DP 弱 | +0.410 | +0.621 | 133 | 70.7% |
| 生产现状（全 C4, df 排序） | +0.408 | **+0.744** | 129 | 72.1% |
| 按 RS_DP 最弱优先排序 | +0.366 | +0.803 | 131 | 71.8% |

IS 段最优的三个 RS 配置，OOS 全部低于生产现状。S5 是 OOS 段冒出来的，不是 IS 选出来的。

## E 分段稳健性 · 增益是否只来自一段 {span=2}

七个非重叠两年组的 Calmar。

| 配置 | 2014-15 | 2016-17 | 2018-19 | 2020-21 | 2022-23 | 2024-25 | 2026 | 滚动12窗中位 | 为正 |
|---|---|---|---|---|---|---|---|---|---|
| 生产现状 df 排序 | −0.123 | −0.196 | 1.599 | **3.876** | 0.346 | 1.239 | **1.395** | **1.014** | 9/12 |
| RS_DP 最弱优先 | +0.093 | +0.160 | 0.610 | 3.227 | 0.374 | **1.649** | 0.644 | 0.682 | **11/12** |
| z_DP 最弱优先 | **+0.274** | **+0.053** | 0.808 | 2.696 | 0.353 | 1.175 | 0.784 | 0.815 | **11/12** |
| 随机排序（对照） | −0.011 | −0.299 | 1.191 | 5.508 | 0.380 | 0.850 | 1.963 | 0.685 | 9/12 |

```callout info 读法
RS 弱优先在 2014-2017 的坏年份、以及滚动窗最差值上都更好。最差窗 −0.109 对 −0.196。
代价是牛市让利：2020-21 从 3.876 掉到 3.227；中位窗从 1.014 掉到 0.682。
这是削峰降险，不是增加收益。按你的口径算未证明。
```

## F 原式的六处要修 {span=2}

| 问题 | 后果 | 改法 |
|---|---|---|
| `N:=20` 名字太泛 | 与平台参数或保留名相撞 | 改 `RSN` |
| `HY_INDEXC` 取不到 | RS_HY 整条变无效值, 图上直接消失 | 加 `RS_HOK` 守卫, 退回大盘 |
| `REF(RS_HYC,20)` 可能为 0 | 早期 bar 除零, 拉出天文数字 | 守卫里同时校验 REF 有效 |
| `COLORWHITE` / `COLORLIRED` / `COLORYELLOW` | 白底平台看不见, 两平台颜色不一致 | 改六位 `COLOR2ECBFF` / `COLOR8FD600`；`COLORAAAAAA` |
| 没有数据量守卫 | 新股加载根数不足时线形错位 | 加 `BARSCOUNT(CLOSE)>=40` |
| 只画两条线, 没有分档 | 看不出哪一档值得优先 | 加三态扁柱, 色阶与实测收益同序 |

## G 交付 · 相对强弱 RS 副图 {span=2}

```text src=rs_subplot_TDX.txt lines=1-27
```

```text src=rs_subplot_THS.txt lines=1-26
```

## H 交付 · 海底捞月追逐·优选 选股 {span=2}

生产 C4 条件原样保留，末尾叠加 RS 最优态。频率低，只用于人工优选。

```text src=rs_pick_TDX.txt lines=1-121
```

```text src=rs_pick_THS.txt lines=1-120
```

## I THS 没法追行业 · 三种可落地口径 {span=2}

同花顺没有 `HY_INDEXC`。跨品种 `"880003$CLOSE"` 这类写法也取不到。

| 方案 | 写法 | 跟踪对象 | 状态 |
|---|---|---|---|
| A 内置大盘 | `RS_HYC:=INDEXC；` | 所属市场（沪票上证 / 深票深成指） | 必可用, 追逐版已在用 |
| B 全A平均股价 | `INDEXDATA("883957",&CLOSE)` | 全A, 等同通达信 880003 | 本机已实测可用 |
| C 指定行业 | `INDEXDATA("881101",&CLOSE)` 或行业ETF代码 | 一份公式跟一个行业 | 需用探针在你的环境实测 |

```callout ok 更好的做法: 用 z 代替固定阈值
换跟踪对象最痛的是阈值要重标定。早上那次换指数就掉了一整档。
把阈值换成 `(RS-MA(RS,250))/(STD(RS,250))` 的 z 分；换任何参照物都不用改数。
追逐副图的环境强度已经是这个写法, 两边同构。
```

先跑探针，看哪个能取到数。哪一行报错就注释掉那一行。

```text src=rs_probe_TDX.txt lines=1-10
```

```text src=rs_probe_THS.txt lines=1-9
```

## J 怎么用 · 生产链未改动 {span=2}

| 场景 | 做法 |
|---|---|
| 看出手质量 | 相对强弱RS 副图底部扁柱: 红实心 = 最优态, 灰空心 = 最弱态 |
| 人工优选 | 收盘跑「海底捞月追逐优选」, 一天最多一两只 |
| 组合交易 | 继续用现有生产席位。RS 不进闸门, 也不进排序 |
| 想进追逐副图 | 把三态扁柱挪到 y=−2.6 到 −2.1 即可, 本次未改生产副图 |
| 想自己做排序 | 按 RS_DP 最弱优先, 但要接受牛市让利 |

```callout warn 本轮改动范围
只新增独立文件: RS 副图、优选选股、探针, 各两平台。
追逐副图、追逐选股、生产席位、cron 全部未改。
```

回测口径与注意点：

- 池 = 4193 只可交易 A 股，2014-01 至 2026-10；3.87 万个 C4 事件。
- 大盘用上证（沪票）与深成指（深票）代理 `INDEXC`。
- 行业归属用日收益相关性匹配通达信行业指数，只在 2014 年之前定归属，不用未来数据。
- 行业收益由池内成员等权自算，与通达信官方权重口径不完全一致。
- 阈值 −12 由两段各自的分位切点验证过（IS −13.3 / OOS −13.4）；不是挑出来的。
