---
template: sheet
title: 按两年一组重测 · 环境强度闸
subtitle: 口径同前（海底捞月 C4 / K=10 / 卖 WZ20≥80 / 40日 / −30% 灾难线）；表格每格是「Calmar / 笔数」
cols: 2
source: /root/lxxg/data/zz_twoyear.json
---

你的质疑成立。我原来用 2022 年一刀切 IS/OOS：2015 股灾和 2018 熊市全落在 IS，剩下的 OOS 四年没有大崩盘。这样一来环境闸看起来只剩拖累。按两年一组切，结论要改。

## A 非重叠两年组 {span=2}

| 配置 | 2014-2015 | 2016-2017 | 2018-2019 | 2020-2021 | 2022-2023 | 2024-2025 | 2026 |
|---|---|---|---|---|---|---|---|
| S1 生产现状：只广度门控 | -0.12 / 48 | **-0.20 / 64** | +1.60 / 72 | +3.88 / 66 | +0.35 / 42 | +1.24 / 52 | +1.40 / 35 |
| S2 生产环境档≥3 + 门控 | -0.02 / 27 | +0.13 / 47 | +2.77 / 50 | +0.28 / 10 | +0.05 / 31 | +1.24 / 52 | +3.17 / 30 |
| S3 生产环境档≥3 纯用 | **-0.23 / 32** | -0.05 / 61 | +1.72 / 71 | +0.28 / 10 | -0.01 / 41 | +1.52 / 66 | +1.09 / 30 |
| S4 880003 自适应 W250 档≥2 | +1.47 / 24 | +0.29 / 50 | +1.40 / 50 | +3.00 / 55 | +0.16 / 32 | +0.93 / 42 | +1.44 / 36 |
| S5 S4 + 只做 B黄 | **+2.37 / 23** | +0.68 / 53 | +0.70 / 51 | **+4.02 / 51** | +0.13 / 32 | +0.68 / 41 | +0.72 / 34 |
| S6 INDEXC 所属 W250 档≥3 | +1.47 / 24 | +0.77 / 32 | +0.40 / 42 | +1.71 / 34 | +0.37 / 31 | +0.37 / 20 | +1.60 / 36 |
| S7 S6 + G红免闸 | +0.22 / 28 | +1.19 / 45 | +1.31 / 58 | +1.84 / 55 | +0.50 / 35 | +0.58 / 36 | +1.50 / 36 |

S1 与 S3 各有两段为负；S4~S7 七段全正。注意 2020-2021 段 S2／S3 只做了 10 笔，等于空仓，这一段对它们没有参考价值。

## B 滚动两年（12 个窗口）{span=2}

| 配置 | 中位 Calmar | 最差窗口 | 最好窗口 | 为正窗口 |
|---|---|---|---|---|
| S1 生产现状：只广度门控 | +1.014 | **-0.196** | **+4.480** | 9/12 |
| S2 生产环境档≥3 + 门控 | +0.465 | -0.017 | +3.012 | 10/12 |
| S3 生产环境档≥3 纯用 | +0.443 | **-0.234** | +1.928 | 8/12 |
| S4 880003 自适应 W250 档≥2 | **+1.196** | **+0.159** | +2.997 | **12/12** |
| S5 S4 + 只做 B黄 | +0.767 | +0.126 | +4.020 | **12/12** |
| S6 INDEXC 所属 W250 档≥3 | +0.748 | +0.117 | +1.714 | **12/12** |
| S7 S6 + G红免闸 | +1.009 | +0.215 | +2.555 | **12/12** |

```callout info 这一栏推翻了我上一版的结论
- S4（880003 自适应 W250 档≥2）12 个窗口全正，最差窗口 +0.159，比生产现状（9/12、最差 -0.196）更稳；中位 Calmar 1.196 也高于 1.014。
- 代价是削峰：S4 最好窗口 +2.997，生产现状 +4.480。环境闸换掉的是峰值，换来的是没有负窗口。
- S5／S6 也是 12/12 正，但中位低于 S4（0.767／0.748），说明「再挑 B/G 子集」不划算。
```

## C 但每窗重新选参就崩 {span=2 meta=扩展窗口走查：只用该窗之前的数据选参}

| 测试窗 | 训练段选中的配置 | 训练 Calmar | 测试窗 Calmar | 测试窗年化 | 笔数 |
|---|---|---|---|---|---|
| 2018-2019 | INDEXC 所属 W250 档≥3 + B黄 | +1.472 | +0.077 | +2.4% | 43 |
| 2020-2021 | 自适应 W250 档≥3 + B黄 | +1.250 | **+2.946** | +22.4% | 41 |
| 2022-2023 | 自适应 W250 档≥3 + B黄 | +1.247 | **-0.120** | -3.0% | 22 |
| 2024-2025 | 自适应 W250 档≥2 + B黄 | +0.846 | +0.679 | +17.2% | 41 |
| 2026 | 自适应 W250 档≥2 + B黄 | +0.807 | +0.716 | +14.1% | 34 |

中位 +0.679，5 个窗口 4 正 1 负。同期 S4 固定配置是 +0.16~+3.00 全正。**每次重新优化反而更不稳**：训练段永远选中「档≥3 + B黄」这类历史上最漂亮的组合，一到新窗口就露馅。

## D 修正后的判定

```callout warn 上一版「环境强度不通过」改判
- 原判依据是 IS 段 0.818 → OOS 段 0.579 的衰减，但那是切分口径造成的错觉，两年一组后衰减消失（S4 每窗都正）。
- 修正结论：880003 自适应 W250 档≥2 作为附加闸门，在稳健性上优于生产现状；差距在收益峰值，不在是否亏钱。
- 仍然成立的一条：每次重新调参会让结果变差，所以参数必须固定，不能跟着数据滚动优化。
- 待你拍板：是否接受「削峰换稳定」——年化从 20.01% 降到 19.55%，MDD 从 -52.0% 收到 -28.1%，没有负窗口。
```

## E 复算入口

`/root/lxxg/zz_twoyear.py`（两年组与滚动窗口）、`zz_walkforward2.py`（扩展窗口走查），结果在 `data/zz_twoyear.json`、`data/zz_walkforward2.json`。

以上为研究结论，生产公式与交易链未改动。
