003 · 路径分布实验室
Stationary Bootstrap · 连续数据块 · 风险分布
这个模块做什么
从经过质量校验的真实市场序列中抽取连续数据块,拼接出数千条新的、可复现的市场路径。它不预先规定“牛市”或“崩盘”的答案,而是测量策略面对大量可能路径时的收益、回撤、破产概率和恢复时间分布。
当前状态 · 最小版本已实现
IMPLEMENTED_DEVELOPMENT · Stationary Bootstrap 内核、来源追踪和四类安全测试已经完成。首轮 256 条路径实验已运行,但结果不足以支持策略晋级。Moving/Circular Block 对照、留出集和接缝诊断仍未实现。
为什么不同于随机 K 线
逐根随机打乱会破坏波动聚集、自相关和成交量联动。Stationary Bootstrap 使用随机长度的连续区块,允许伪序列在条件上保持平稳,同时保留部分真实时间依赖。Moving/Circular Block Bootstrap 作为对照,帮助判断结果是否依赖单一重采样方法。
第一版调用协议
| 参数 | 首轮设置 |
|---|---|
| 输入资产 | 宁夏数据湖中不可变、连续、已发布的 OHLCV/收益资产 |
| 重采样方法 | Stationary、Moving Block、Circular Block 三组 |
| 平均区块长度 | 自动估计,并对照 24 / 42 / 84 / 180 根 |
| 路径长度 | 与目标研究周期一致;首轮 3000 × 4h |
| 路径数量 | 开发 1000,冻结协议后留出 5000 |
| 随机种子 | 开发组与留出组永久分离 |
| 成本 | 基准、双倍、盈亏平衡成本三层 |
| 策略输入 | 不可变版本、参数指纹、执行与仓位管理组合 |
价格从重采样的对数收益重建;成交量、波动和可用的价差变量必须跟随同一时间块移动,不能分别打乱。区块连接处要登记为人工接缝,并单独检查异常跳跃。
已实现的最小内核
本版先完成一个可审计的小闭环,不宣称模块全部完成:
- 输入只能来自声明了截止点的冻结序列;抽样索引不可能越过该截止点。
- 新区块以
p = 1 / 42的概率开始,区块内部按原始次序前进并在冻结序列内循环。 - 每条路径保存种子、来源索引、区块边界、区块数量和来源清单 SHA-256。
- 同一数据、参数与种子完整复跑,结果 JSON、逐路径 CSV、来源记录和冻结 Parquet 必须逐字节一致。
实现选择
最小版使用 Python 标准库实现索引抽样,没有引入 arch 依赖,也没有复制第三方代码。公开实现只作为后续交叉验证参考。
第一份实验
首轮只运行 Stationary Bootstrap:256 条路径、每条 3000 根 4h K 线、4 个观察期、统一评价起点。它是工程验收和失败模式探索,不是预注册的策略晋级试验。
必须输出
- P01/P05/P50/P95/P99 收益与最大回撤;
- 破产概率、资金跌破 80%/60% 阈值的概率;
- 最大连续亏损、回撤持续时间和恢复时间;
- 成本盈亏平衡点、换手与费用分布;
- 删除最大赢家后的收益分布;
- 按真实市场状态分层的条件表现;
- 每条路径的来源块、随机种子、策略版本和内容哈希。
通过前提
模块自身必须先通过可重复性、无未来数据、区块来源完整、同种子同结果和接缝诊断测试。策略门槛必须在查看留出路径前预注册,不能根据结果事后决定。
学术与实现来源
- Politis & Romano:The Stationary Bootstrap
- 公开实现参考:bashtage/arch · Stationary/Moving/Circular Bootstrap
解释边界
重采样只能重组历史中已经出现过的局部结构,不能自然创造从未观察过的市场机制。极端压力注入必须作为单独实验层登记,不能混进基础分布后隐藏来源。