# v0.41 多策略跨币种滚动验证

入口 `/research/multi/validation`。在冻结 v0.38 共享现金、净额成本及 ATR 保护规则之上，仅增加有限预算候选的回顾式滚动选择。支持 C01/C02/C03/C04/C06/C07 中 1–6 项、2–8 个币种；固定策略集合与币种池，不进行全库选策略或底层参数优化。

## 协议与候选

每币至少 716 根完整 UTC 日线：260 根指标预热、365 天训练、1 天隔离、90 天测试。每折前进 91 天，训练窗口滚动，测试窗口不重叠。现有自选历史接口最多 1095 天，可形成最多 5 折；当前固定 BTC/ETH/SOL 文件各 1358 根，可形成 8 折。这里的 1358 是包含预热的原始根数，不是原组合的 1098 个评价日。来源必须同交易所、相同起止和完整连续区间，不自动裁剪、混源或补洞。

预算候选固定顺序：用户原预算、全部已选策略等预算、依次给每项已选策略 60% 而其余等分 40%。相同预算向量去重，保留先出现者；最多 8 项，一项策略时仅有原预算。预算在固定币种间等分，空闲部分留现金，逐币及总仓上限继续按原规则比例限制。

选择依据为训练期每日净收益的 Sharpe（样本标准差、365.25 天年化、零无风险收益）；至少 30 个非零收盘持仓日和 5 条外部成交，且 Sharpe 有限才合格。末端计费清仓后的最后持仓为零，该日不计训练持仓日。平手容差 1e-12 按候选顺序；无合格候选则回退原预算。不能用测试期表现更改本期选择。

训练调用物理截断到训练末端的行情前缀，不接收隔离日或测试日。测试调用只含该折测试末端以前的物理前缀；首日可使用已确认的隔离日收盘，后续使用此前已收盘测试日。EMA 等指标使用起点以来的可见前缀，资金及 ATR 持仓在每个训练/测试窗口独立初始化；没有把训练持仓转入测试。

## 五项对照与账务

- 训练选择预算。
- 固定用户原预算。
- 固定等预算。
- 同一训练选定预算的成本压力：手续费加 10 bp、滑点加 5 bp，各不超过 100 bp；重跑完整测试，不按压力结果重新训练。
- 初始限仓持有：首次开盘等分币种并应用初始单币/总仓限制，之后不调仓，价格漂移可能超过上限，末端计费结算。

每折每项对照从 10,000 USDT 现金开始，末端全部计费清仓。保留完整日线净值、外部净成交、内部策略转移、保护退出及逐策略/币种净现金流贡献；贡献合计等于该折期末现金减初始现金。持有对照仅有逐币贡献。盘中保护沿用原日线粒度、同根双触及止损优先及无同日重新入场口径。

链接指数从 100 开始，按各折结算收益依次复利；测试段之间的一天保持现金、收益为零。费用及换手按每折起始指数比例缩放，相对一个初始 10,000 USDT 名义本金表达；avoidedCost 是相同目标数量不抵消时的理论绝对费用差，经同一资金比例缩放。链接净值、回撤、波动、平均敞口包括零收益隔离日，不作为连续模拟账户或 CAGR。图表抽样不影响指标或完整导出。

所有预算邻域的测试指标均披露；只有选定、原预算、等预算、压力及持有对照保存测试完整账本，其他邻域保存指标与完整运行哈希。完整源数据和协议足以重跑所有训练及邻域，不把只导出的局部账本当作完整研究包。

## 实验登记与权限

新计算与页面导入复算都需先登录，在当前工作区冻结：来源描述与哈希、币种、策略预算、候选集合、成本、风险和协议身份。独立接口：

| 方法 | 路径 | 范围 |
| --- | --- | --- |
| GET | `/api/console/research/multi-validation?before=0` | 每页20条工作区登记 |
| POST | `/api/console/research/multi-validation/start` | `{id,config,reproduceOf}` |
| POST | `/api/console/research/multi-validation/finish` | 成功为 `{id,status,summary,resultHash}`；失败/取消为 `{id,status,message}` |
| GET | `/api/v1/research/multi-validation?before=0` | 独立 `research:read` 密钥，只读且固定工作区 |

所有者/管理员/研究员可登记及提交本人创建的实验；查看者可读。写入仅允许同源浏览器会话，API 密钥不能启动或完成。登记和提交均经受控数据库复核身份及成员权限。自选币种必须已在工作区启用。旧单币实验路由、基础/C07/M03 准入不能使用新组合记录充当证据。

与既有实验共享每工作区 200 条上限；登记和启动共用每分钟10次限流，15分钟未完成显示中断。相同编号/配置/创建者/复算引用重试幂等，配置与终态不可覆盖。成功复算的结果哈希必须等于预登记的复算引用，不一致保留为失败而不改写原包。浏览器超三分钟停止计算，可取消；关闭页面可能留下运行登记，过期后明确为中断。保存摘要失败时保留已计算完整包供下载，可重试摘要提交；过期需新建登记。

结果永久标注 `client_computed`。服务器只校验摘要的规则、候选、选择、时间、链接成本等一致性，不获取完整行情、不重算收益，也不认证客户端选择分数真实性。预登记是当前实验配置收据，不是证明此前从未看过这些数据的第三方时间戳。

## 完整包、离线复算与服务端归档边界

完整格式 `trendlab-multi-wf-package-v1`，最多128 MiB；包含原始来源、完整报告和全报告/包哈希。页面导入必须由编译后的独立计算线程重新计算，报告哈希完全一致才展示结果；自行重算外层哈希不能使伪造账本通过数值复算。

```sh
node --experimental-strip-types scripts/reproduce-multi-wf.mts --file multi-wf-package.json --out replay.json
```

输出路径必须尚不存在，失败返回非零退出码。该 CLI 使用本版本项目源码和已安装依赖，无需网页登录。来源/哈希/复算只证明一致性，不证明导入文件来自真实交易所或策略未来盈利。

本格式当前只提供服务端配置及摘要登记，完整包需本地下载保管；v0.39 归档仍只接收原 basket/multi 两种完整包，不接收新滚动格式。异步服务端研究与可信完整复算归档按 SaaS 路线图 v0.44 单独开发，不能把本版客户端摘要标为服务端验证收益。

## 恢复、回退与验证

复用 research_experiments，不新增表或迁移，仍为44张业务备份表、20个迁移。恢复工具增加 multi-wf-contract.mjs 和 multi-wf-rules-v041.json，现共23文件；原21文件逐字节冻结于 `/integration/v040/`。恢复验证新配置、候选与摘要、终态哈希、审核及归属；无完整行情的数据库恢复不做数值复算，不能还原未另外下载的完整包。

release-v041.json 要求 multi-walk-forward-v1；旧 v0.40 即使表结构相同，也不能直接恢复/回退解释新记录。研究登记不创建观察版本、正式事件、消息或模拟成交，也不授予准入；本轮没有在生产客户工作区建立实验或启用常驻任务。

固定历史证据见 multi-wf-frozen-results-v041.json：使用已有三币真实历史文件，未重新联网获取。该默认预算候选选择在本数据上的链接收益低于固定原预算，保持原样披露，不以同一测试结果反选协议。固定币池和历史可见性存在选择及幸存者偏差，不是盲样本外或前向盈利证据。

实际软件验收见 verification-v041.json。合成夹具仅验证程序；构建后接口/计算线程不替代浏览器点击、真实客户登录、真实付款、生产灾备或持续前向运行验收。
