# 30 · 测量层 v2 · MV2 五票换源转正验证与生产部署

> **状态**：✅ 已转正（生产规格，2026-08-31 起生效）
> **定位**：T1-A 票族去相关重构（V3→利差通道）的五环落地收官篇——环1 数据管道（`_calc_spread_channel.py`，前序已落盘）→ 环2 生产引擎改造（sim-us-macro.html / simulation.html / `_run_dual_track_votes.py` MV2 双轨）→ 环3 场景回检（六泡沫 LOO）→ 环4 双口径回测对账 → 环5 本报告 + HTML 归档页一式两份
> **数据基准**：FRED GS10/GS2/BAA/AAA 月度（`_monthly/spread/spread_channel.json`）+ Shiller `_amp/shiller.csv`；回测窗口 1996-01~2026-06（n=366）
> **与 06 定版纪律的关系**：本项属「动五票」级别规格变更，经用户决策「MV2转正」授权执行；三票缩减路线（T3）同期被否决（LOO 样本外 −6.03）

---

## 0. 摘要

V3 票由「实际利率 < −1.0」换源为「金融条件票 = (BAA−AAA > 1.25pp) OR (GS10−GS2 < 0pp)」，其余四票（V1 CAPE 分位 ≥90 / V2 CPI>5 / V4 加息 12m>1.5 / V5 24m 实价>50）不动。转正证据四件套：

| 证据 | 基线（旧 V3） | MV2（新 V3） | 判定 |
|---|---|---|---|
| ① 同月决策口径（`measure_v2_bt.json`） | 22.68% / −21.7% / Sh 1.650 | **23.05% / −21.7% / Sh 1.698** | 🟢 改善且 MDD 持平 |
| ② Lag-1 口径（`threevote_vs_mv2_bt.json`） | 9.42% / −52.6% / Sh 0.652 | **11.23% / −42.6% / Sh 0.825** | 🟢 三指标全改善 |
| ③ LOO 六泡沫样本外（轮留校准） | mean +0.00 | **mean +1.73**（正案例 3/6） | 🟢 存活 |
| ④ 独立性审计（`vote_independence_audit_mv2.json`） | phi(V2,V3)=0.803 · 有效票 3.39 | **phi=+0.106 · 有效票 4.13** | 🟢 冗余票解除 |

**干净过渡声明**：转正首月（读数月 2026-07）新旧 V3 均 0 票——信用利差 0.43pp（阈值 1.25pp）、期限利差 +0.38pp（未倒挂）、旧 V3 实际利率 +1.30（未触发）——五票 [1,0,0,0,0]，票和 1 维持 wait 段。**切换即无信号翻转、无仓位变化**。

## 1. 动机与规格

- **动机**：2026-08-31 票间独立性审计发现 V2（CPI>5）与 V3（实际利率<-1）phi=0.803——两票高度同涨同落（实质是同一通胀族的两个投影），名义五票的有效自由度只有 3.39，any1 通道的信号容量被高估。
- **换源规格**：

```
V3_金融条件票 = 1  if  (BAA − AAA > 1.25pp)  OR  (GS10 − GS2 < 0pp)  else 0
```

- **数据源**：FRED 月度（fredgraph.csv：GS10/GS2/BAA/AAA），当月末可得，与 Shiller long_rate 同口径（no-look-ahead）。
- **阈值依据**：信用腿 1.0/1.25/1.5 全区间优于基线（T1-A 报告网格扫描）；1.25pp 为 BAA−AAA 战后长期中枢约 1σ 上方。
- **引擎隐性特征延续**：SH_MONTHS 窗口限制 → V1 票 2006-01 前盲区（22 号页已定版的口径），MV2 改造不动引擎，此特征延续。

## 2. 环1 · 数据管道（前序已落盘）

`_calc_spread_channel.py` → `_monthly/spread/spread_channel.json`：
- `credit_spread`：1919-01 起（BAA/AAA 重叠段）
- `term_spread`：1976-06 起（GS2 起点）
- `vote_series`：双腿 OR 合成票值
- `current`：2026-07 credit 0.43pp / term +0.38pp / vote 0
- 管道无数据月 V3 按 0 处理（与回测口径一致）；双腿单腿缺失时必须 `(ts is not None and ts < θ)` 防 None TypeError（坑位已记 skill）。

## 3. 环2 · 生产引擎改造（本轮落地）

| 端口 | 文件 | 改动 |
|---|---|---|
| 模拟盘主页 | `sim-us-macro.html` | 7 处：header tag（v2.2b+Shiller MV2）、投票明细表（新 V3 行：金融条件票 0.43/+0.38pp 差 0.82pp 未触发）、MODEL CONSTANTS 换源注释（含四件证据）、STRATEGY.label/note、fuseVote 文案、决策链 note、页脚日期 |
| Hub 卡 | `simulation.html` | 4 处：Hub 卡注释、cc-note（v2.2b + V3 描述）、策略③票源 span、决策链 note（锚 measure_v2_bt.json） |
| 月度双轨 | `_run_dual_track_votes.py` | 新增 MV2 轨 `mv2_votes()`（sh_votes 但 V3 换利差 OR）；record 结构新增 `shiller_proxy_votes_src4_mv2` 字段（votes/vote_sum/names/diff_v3/note）；旧 src4 加「旧轨保留，前向对照」注 |
| 过渡记录 | `outputs/dual_track_votes.json` | record #2 `mv2_promotion`：新旧轨并排（均 [1,0,0,0,0]）、evidence 四件套、readings、gap_notes（无信号翻转） |

**每日管线保护区确认**：`_daily_update.py` 只读页面 `COUNTRY_MODEL.vote` 不算票，票值快照在 sim-us-macro.html 静态块——本改造未触碰管线逻辑。

## 4. 环3 · 场景回检（六泡沫 LOO 样本外）

轮流留出六案例、参数由其余 5 案例校准（网格档位事先固定：mom_thr 40/50/60 × cthr 1.0/1.25/1.5），MV2 vs 换源前基线（`threevote_vs_mv2_bt.json` loo 节）：

| 案例 | MV2 变体 | ann | mdd | d_ann | d_mdd | d_score |
|---|---|---|---|---|---|---|
| E1 dotcom 1998-2002 | MV2_c1.25 | −1.35% | −42.6% | +5.00 | +10.0 | **+14.93** |
| E2 GFC 2007-2009 | MV2_c1.25 | −1.53% | −25.9% | +3.27 | +4.7 | **+8.02** |
| E3 2018Q4 | MV2_c1.00 | +3.70% | −5.2% | −3.76 | 0.0 | −3.76 |
| E4 COVID 2020 | MV2_c1.00 | +19.79% | −12.2% | −13.97 | 0.0 | −13.97 |
| E5 2022 加息冲击 | MV2_c1.25 | −6.63% | −16.8% | 0.0 | 0.0 | 0.00 |
| E6 AI 段 2023-2026 | MV2_c1.25 | +28.17% | −5.5% | +1.68 | +3.5 | **+5.15** |
| **mean** | | | | | | **+1.73** |

- 增益集中在信用危机型案例（E1 dotcom +14.93 / E2 GFC +8.02）——金融条件票正是为这类场景设计，机制自洽。
- 亏损集中在快熊反弹型（E4 COVID −13.97：利差尖峰触发 wait、错过 V 型反弹）——已知代价，E4 段基线本身靠 rr5 快恢复，任何慢票都会吃亏。
- **同期三票缩减路线（T3）LOO mean −6.03**（E3 −27.85 / E4 −16.67），样本外翻车被否决——五票换源存活、三票缩死，对照强化了「保五票、只换源」的决策。

## 5. 环4 · 回测对账（双口径）

> **⚠ 口径说明备注（先读再对表）**——两套引擎只差一件事：**信号生效时点差 1 个月**。
>
> | 维度 | 同月决策口径 | Lag-1 口径 |
> |---|---|---|
> | 生效时点 | **信号当月生效**（当月判断、当月调仓） | **信号已出、次月生效**（当月信号、次月调仓） |
> | 代码实现 | 生产 `combo_stages_v22` 同构：`smap[m]` ← 当月 `votes(m)` | `_run_vote_family_bt.py`：`smap[m]` ← 上月 `votes(m−1)` |
> | 性质 | 「理想化上限」乐观口径（生产在用） | 「严格无前视」真实可得下限 |
> | 基线 | 22.68% / −21.7% / Sh 1.650 | 9.42% / −52.6% / Sh 0.652 |
> | 落盘文件 | `measure_v2_bt.json` | `threevote_vs_mv2_bt.json` / `vote_family_bt.json` |
>
> 晚 1 个月生效 = 多吃一个危机首月暴跌（如 2008-09 满仓吃下 −11.58%）、晚 1 个月退出 = 少吃一个月反弹——**年化差 13.3pp、MDD 差 31pp 全是这 1 个月造成的，不是策略差异**。
> **对比纪律**：任何变体只能与同口径基线比（MV2 同月 23.05% vs 22.68% ✓；MV2 Lag-1 11.23% vs 9.42% ✓）；跨口径对比 = 拿尺子比温度计，必出虚假结论。

### 5.1 同月决策口径（生产 `combo_stages_v22` 同构，`measure_v2_bt.json`）

| 臂 | ann | vol | MDD | Sharpe | Calmar | 换手 | any1 触发 | 判定 |
|---|---|---|---|---|---|---|---|---|
| BASE_any1_rr（基线复现） | 22.68% | 13.63% | −21.7% | 1.650 | 1.046 | 187.1 | 31 | 基线锚（=官方 V22_MACRO_any1 ✓） |
| **MV2_SPREAD_any1 ★核心** | **23.05%** | 13.46% | **−21.7%** | **1.698** | 1.063 | 211.5 | 42 | 🟢 改善 |
| MV2_CREDIT_only（单信用腿） | 22.50% | 13.52% | −21.7% | 1.650 | 1.038 | 194.2 | 34 | 🟡 持平 |
| MV2_TERM_only（单期限腿） | 23.02% | 13.58% | −21.7% | 1.682 | 1.062 | 197.6 | 37 | 🟢 改善 |
| MV2_NONE（拆 V3） | 22.46% | 13.63% | −21.7% | 1.635 | 1.036 | 180.3 | 29 | 🔴 退化对照 |
| BASE_any2_rr | 23.27% | 14.54% | −21.7% | 1.587 | 1.074 | 112.5 | 4 | 基线 any2 |
| MV2_SPREAD_any2 | 22.69% | 14.22% | −21.7% | 1.582 | 1.046 | 113.1 | 6 | 🟡 持平（any2 下换源无增益） |

### 5.2 Lag-1 口径（月末信号→次月配置，`threevote_vs_mv2_bt.json` full_metrics）

| 臂 | ann | MDD | Sharpe | wait 月 | exit 月 | 判定 |
|---|---|---|---|---|---|---|
| BENCH_HOLD | 12.01% | −67.3% | 0.623 | 0 | 0 | 参照 |
| V22_BASE_LAG1（旧 V3） | 9.42% | −52.6% | 0.652 | 92 | 49 | 基线锚 |
| **MV2_c1.25 ★转正阈值** | **11.23%** | **−42.6%** | **0.825** | 148 | 46 | 🟢 三指标全改善 |
| MV2_c1.00 | 9.82% | −42.6% | 0.740 | 167 | 46 | 🟢 |
| MV2_c1.50 | 10.69% | −50.5% | 0.758 | 123 | 46 | 🟢 |

### 5.3 独立性审计（`vote_independence_audit_mv2.json`，生产窗口 1996-01~2026-06 n=366）

| 口径 | phi(V2,V3) | 有效票（参与率） | 有效票（熵） | V3 触发率 |
|---|---|---|---|---|
| OLD（实际利率） | **0.803** | 3.39 | 3.94 | 9.02% |
| MV2（金融条件） | **+0.106** | **4.13** | **4.50** | 27.87% |

> 口径披露：前序会话临时速算值为 phi −0.01 / 有效票 3.46→4.45，与正式落盘值（+0.106 / 3.39→4.13）略有出入（数据 vintage 差异），phi 旧值 0.803 精确复现、结论方向不变；按「禁止编造数字」纪律，归档一律以 `vote_independence_audit_mv2.json` 可复现值为准，已同步修正 sim-us-macro.html / `_calc_spread_channel.py` / dual_track_votes.json 中的引用。

### 5.4 对账结论（启用范围声明）

- **启用范围**：仅 US sim-us-macro 盘（票源④ Shiller proxy 轨），V3=SPREAD_OR(1.25)，同月决策口径与生产引擎一致；Lag-1 数字仅作稳健性证据。
- **为何 any2 不启用**：any2 门槛下换源无增益（1.587→1.582，噪声级）——金融条件票的增益走的是 any1 快速降杠杆通道，与「≥2 票才降仓」的慢通道正交。
- **MDD 是否劣化**：全臂 MDD 均 −21.7%（2008-11）持平，无劣化。
- **代价**：换手 187→211（+13%），0.15% 单边成本下已含；any1 触发 31→42 次，wait 段 87→129 月——防御更频繁但每次更便宜。

## 6. 推广检验（七国不适用声明）

金融条件票数据源为 FRED 美国序列（BAA/AAA/GS10/GS2），七国无同口径长历史利差序列；本换源**不推广至七国**，七国继续 v2.2 五票（旧 V3 口径）+ 各自本地票源。三票路线的七国教训（A2 v1.1：各国最优阈值分散不可统一）同样提示勿强行统一换源。

## 7. 结论与发现

1. **转正成立**：四件证据（同月 23.05/Sh1.698、Lag-1 11.23/Sh0.825、LOO +1.73、phi 0.803→0.106）同向，且 MDD 全程不劣化——满足「动五票」级别变更的证据门槛。
2. **机制自洽**：增益集中在信用危机案例（E1/E2），亏损集中在快熊 V 型（E4）——金融条件票本质是信用周期探测器，不是流动性危机探测器。
3. **拆解验证**：单期限腿（23.02/Sh1.682）≈ 双腿 OR（23.05/1.698）> 单信用腿（22.50/1.650）> 拆掉 V3（22.46/1.635）——V3 换源后的增量真实存在，且双腿互为冗余备份。
4. **三票 vs 五票尘埃落定**：五票换源 LOO +1.73 存活、三票缩减 LOO −6.03 翻车——「去相关靠换源、不靠砍票」。

## 8. 后续建议

- T1-D 双轨续记：每月 `_run_dual_track_votes.py` append（现含 src4 旧轨 + src4_mv2 生产轨），分歧月看 `diff_v3` 字段——旧轨保留作前向对照，累计 12 个月后可做前向复盘。
- E4 类快熊的已知亏损窗口：若未来出现流动性危机型下跌，预期 MV2 比 V3 基线多亏——这是换源的显式代价，勿在事后单案例上回滚。
- κ(t) 挂载、T2-B E/P 轴票化等后续项按 04 路线图独立推进，与本换源解耦。

## 9. 产物清单

| 产物 | 路径 |
|---|---|
| 数据管道 | `_calc_spread_channel.py` → `_monthly/spread/spread_channel.json` |
| 独立性审计（正式落盘） | `_run_vote_independence_audit_mv2.py` → `outputs/vote_independence_audit_mv2.json` |
| 同月口径终验 | `_exp_measure_v2_bt.py` → `outputs/measure_v2_bt.json` |
| Lag-1 + LOO + 三票对照 | `outputs/threevote_vs_mv2_bt.json`（Lag-1 族谱 `vote_family_bt.json`） |
| 双轨月记 | `_run_dual_track_votes.py` → `outputs/dual_track_votes.json`（record #2 mv2_promotion） |
| 生产页面 | `sim-us-macro.html`（v2.2b+Shiller MV2）· `simulation.html`（Hub 卡同步） |
| 归档页 | 本文件 + `模型优化记录_MV2五票换源转正_2026-08-31.html`（academic/ + 桌面一式两份，md5 一致） |
