# M03 滚动验证与稳健性报告 · v0.35

入口 `/research/m03/validation`。在 v0.34 同币种五策略虚拟净值组合之上，增加训练选参、后续测试、固定基线和参数邻域诊断。模型仍为历史回顾研究，不自动进入策略准入、影子观察、消息推送或交易执行。

## 固定实验设计

输入为同一交易所、同一币种的连续收盘 UTC 日线。交互采集、研究包和服务端登记接受 756–1095 根，拒绝 4h、不连续、未来和不足一个完整窗口的数据。支持工作区中已登记的币种。五项底层规则 C01/C02/C03/C04/C06、风险求解、现金和成本模型继承 `M03-Research-v034.md`；不重新选择底层策略、策略参数或币种。

先用 260 根日线预热底层指标，再保留 40 天风险历史。每折使用 365 天训练、1 天隔离、90 天测试，向前移动 91 天。索引采用左闭右开：首折训练 `[300,665)`，隔离 `[665,666)`，测试 `[666,756)`；第二折测试 `[757,847)`。1095 根日线形成四个完整测试折，360 个测试日、3 个折间现金日、66 根未评估尾部。尾部不补成短折，不计入绩效。

365/1/90、20/30/40 参数邻域及训练资格门槛均是本次冻结的实现选择，并非原卡或论文给出的最优参数。滚动划分的一般参考：[scikit-learn TimeSeriesSplit](https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.TimeSeriesSplit.html)。等风险贡献求解沿用 [Griveau-Billion、Richard、Roncalli 原始论文](https://arxiv.org/abs/1311.4057) 对应的 v0.34 实现。

## 训练选择与信息边界

训练期只比较 20、30、40 天协方差回看窗口。每个候选使用基础手续费和滑点，按每日扣费净值计算零无风险利率 Sharpe，年化因子为 365.25。至少 30 个收盘非零配置日、2 次调仓，且 Sharpe 有限有效，才参与选择。负 Sharpe 仍可参与，资格不代表盈利或准入。

选择训练 Sharpe 最大者。差异不超过 `1e-12` 视为相同，优先最接近 30 天，再选较小天数。没有合格候选时回退 30 天，报告明确标记回退。

训练计算只接收截止训练结束的 K 线前缀，隔离日、测试期和更晚数据不会传入训练引擎。每折测试也只接收截止该折测试结束的前缀。底层策略净值从预热后连续计算，组合层在每个训练段、测试段独立从 10000 单位现金开始，末日计费赎回。底层持仓状态不在每折重置，且继承 v0.34 连续虚拟 NAV 的处理。

选定回看天数在该折测试期固定。每周仍按当时已经收盘的历史更新风险矩阵，包括已观察到的隔离日与此前测试日；隔离日不用于本折训练评分，也不计入本折测试收益。周日收盘估计，下一根日线收盘先计旧份额收益再应用目标，新份额影响之后的收益；末日只赎回。隔离一日不保证统计独立，也不能消除重叠训练、连续底层状态和多次研发探索造成的依赖。

## 对照、敏感性与报告指标

五项对照使用相同测试时间：

| 对照 | 测试规则 |
| --- | --- |
| 训练选择 ERC | 使用训练选出的回看天数，等风险贡献配置 |
| 固定 30 天 ERC | 不读取训练排名，固定 30 天基线 |
| 等权 | 使用已选窗口的同一合格策略集合，等资金权重 |
| 逆波动率 | 使用已选窗口的同一合格集合与矩阵，逆波动率权重 |
| 成本压力 | 使用基础成本冻结的已选计划；底层和份额转移手续费各加 10 bp、滑点各加 5 bp，分别封顶 100 bp |

全部组继续采用 20% 年化目标、40% 单策略目标资金上限的统一缩放、现金余量及 2 个百分点调仓阈值。不因压力组结果重选参数。完整报告同时披露固定 20、30、40 天在各测试折的表现，按预设顺序展示，不能用测试收益反选同一期参数。

各折独立结算后复利链接；折间一日持现金，收益为零。曲线从 100 开始，最大回撤按完整链接曲线计算。实现波动率和平均配置/敞口包含折间现金日。费用和换手按各折在链接曲线中的起始资金加权，统计口径为最初资本的百分比；底层费用已在 NAV 中扣除，不再重复扣现金。没有增加 CAGR 或盈利预测。

报告展示正收益折数、最差折、回退次数、参数切换次数、各固定参数的中位数/最好/最差测试收益及链接回撤。每折诊断包括风险决策数、数据不足持现金数、求解失败数、非零配置日及平均目标权重变动。目标变动按相邻目标的风险资产绝对权重差之和计算，首个目标相对全现金。

“应用后估计风险贡献偏差”在每次决策的正则化矩阵上，用调仓或保持后的实际份额权重计算各策略相对风险贡献与 `1/n` 的最大绝对差，再对有效决策取平均和最大；无有效观察时为 null。该值是当时模型诊断，不是未来实现风险贡献。

## 实验留痕、下载与复算

模块 `M03WF`，模型 `m03-walk-forward-v1`，研究版本 `m03-wf-research-0.35.0`，实验版本 `research-experiment-0.35.0`，验证版本 `m03-wf-validation-0.35.0`，包格式 `trendlab-m03-wf-package-v1`。定义哈希包括新滚动规则和 v0.34 底层定义。旧 M03 和其他研究格式继续独立验证，不能混交结果。

运行前登记数据哈希、来源、成本和规则。浏览器 Worker 计算，服务端保存并校验每折训练资格/选择、时间、对照、费用链接和摘要；服务端不重新获取行情计算收益，记录保持 `client_computed`。同一摘要可重试，终态不可覆盖，沿用创建者限制和工作区角色隔离。实验完成请求上限 64 KiB；其他请求仍 32 KiB。工作区全部研究累计最多 200 次，15 分钟未完成显示中断。

完整包不超过 32 MiB，包含快照、训练评分、各折三种风险计划、五项对照曲线与份额转移、参数邻域结果及哈希。页面支持完整包、逐折证据和稳健性摘要下载。服务器只保存摘要，完整包需另行下载。导入校验结构和哈希后重新计算，才展示收益；哈希只证明内容一致，不能认证外部行情来源。

```sh
node --experimental-strip-types scripts/reproduce-research.mts --file M03-WF-package.json --out M03-WF-reproduction.json
```

使用本版本依赖，输出路径必须尚不存在。比较包含绝对容差 `1e-8`、相对容差 `1e-10` 和完整哈希是否精确一致。

## 恢复与回退

无新增迁移，业务备份仍为 43 表。当前恢复工具需要同目录十三文件：v0.34 的十一文件，加 `m03-wf-contract.mjs` 与 `m03-wf-rules-v035.json`。页面 `/integration` 的恢复管理提供全部下载。在线摘要与离线恢复共用同一语义校验模块；篡改后重新计算备份哈希也不能绕过时间、选参及费用一致性检查。

原 v0.34 十一文件按字节冻结于 `public/integration/v034/`。`release-v035.json` 要求回退目标除全部既有模型外还支持 `m03-walk-forward-v1`；相同表结构不代表旧代码能处理新实验。清单提交与版本占位值仍需匹配实际部署记录，不能直接作为发布证明。

## 已有数据证据与未完成事项

`m03-wf-frozen-results-v035.json` 使用 2026-09-20 已冻结的 BTC、ETH、SOL 三份日线，逐一核对原 manifest SHA-256，没有请求新行情。开发复算直接使用每份 1358 根，得到各七折、630 测试日和六个折间现金日；交互式范围仍为 1095 根上限，不能把该文件直接作为交互研究包导入。

基础手续费 10 bp、滑点 5 bp 下，训练选择与固定 30 天的链接净收益分别为：BTC +1.04% / +1.94%，ETH -11.22% / -2.27%，SOL -11.08% / -13.84%。这组历史观察不支持“训练选择稳定胜过固定基线”的结论，也不代表未来收益或三币联合组合。

`verification-v035.json` 记录实际代码、构建产物、接口、恢复及旧包复算检查。历史数据已经参与开发，不是未见数据盲测；也未完成整个策略研发流程的独立样本外验证。后续仍需冻结后前向观察、M03 独立准入标准、跨币种风险预算、实际净额订单成本研究，以及真实客户部署和持续运行验收。
