Experiment / Attempt
Experiment 仍是唯一策略计算身份;Attempt 仍是同一冻结实验的一次物理启动。
在固定数据集与时间范围内,系统化搜索算子参数;用严格的时间序列验证、评价算子与不可变实验记录,找出当前研究协议下最可信的参数组合。
ParameterStudy。它内部完成搜索轮次、Trial、DatasetView、评价与 Holdout 编排;具体回测继续复用现有 Experiment/Attempt,不建立第二套执行系统。本轮按 Matt Pocock 的深模块、领域建模与 spec-first 方法重新审查:参数研究需要很多内部机制,但调用者不应该学习很多接口。新的设计把复杂度集中在 ParameterStudy,现有 ExperimentService 继续负责策略执行和去重。[17][18][19]
Experiment 仍是唯一策略计算身份;Attempt 仍是同一冻结实验的一次物理启动。
冻结研究协议,协调候选、时间切分、评价和 Holdout;UI、CLI、worker 只调用它。
Trial 不是进程,参数研究不复制 Experiment/Attempt 状态机,也不绕过去重。
← 左右滑动查看完整链路 →
preview、submit、advance、control、detail。调用者无需理解内部表结构或 Search Round。
只有 ParameterSuggester 有多个真实 Adapter:Grid、Seeded Random、Optuna TPE。ExecutionDatasetSliceFactory、MetricDocumentFactory 与 EvaluationPolicy 保持窄接口,但首阶段不承诺插件化。
ParameterStudy 直接调用 ExperimentService,不增加只做转发的 ExperimentGateway 中间层;Catalog 只提供连接和事务原语。
如果删除 ParameterStudy,状态机、幂等、候选去重、Holdout 和报告逻辑会散落到 web、worker、CLI 与 Catalog——这说明它确实承担了深度。
搜索范围直接冻结在 StudySpec,并由现有算子参数 Schema 校验。没有第二个调用者前不单独抽象。
先交付一个可信、版本化的内置 EvaluationPolicy。出现第二个真实评价实现后,再建立投稿和隔离执行 seam。
内层和最终选参轮次是 ParameterStudy 的内部记录;用户管理 Study 和 Trial,不管理编排细节。
← 左右滑动查看完整流程 →
研究谱系不能清零:看过结果后缩小参数范围、增加预算或换评价规则,必须关联前序 Study;不能通过“新建任务”把多重检验次数重置为零。
FrozenStudyPlan 覆盖数据、模板、算子、搜索空间、FoldWindows、Metric/Evaluation/Execution identities、双重预算与 Study Lineage。
StrategyConfiguration 是完整、规范化的参数值对象;重复 suggestion 只记事件,不新增 Trial。unique Trials 和原始 suggestions 分别设上限。
评价结果绑定评价规则、全部输入产物摘要、评分区间和运行环境,而不是相信可变路径。
Study 绑定源代码、依赖/runtime 与 runner image 的内容摘要;release path 只是 locator。首阶段不跨 release 续跑,摘要漂移后停止并显式 fork。
MetricDocumentFactory 先验证不可变产物、账户/交易/成本核对和指标语义;评价规则只负责定义“什么叫好”。首阶段只有一个真实评价实现,因此它不是提前建设的插件 seam。
只向搜索器提供一个冻结分数,例如“各折净 Sharpe 中位数 − 稳定性惩罚 − 换手惩罚”。公式、权重和门槛不能在同一 Study 中继续搜索。
净收益、买入持有、超额收益、回撤、换手、暴露、交易次数、成本、Sharpe、Sortino、Calmar 和跨折离散度全部独立保留。
robust_walk_forward@1.0.0何时才开放自定义评价算子? 至少出现第二个真实评价逻辑,并证明两者需要同一投稿、验证和执行生命周期。此前不建设 EvaluatorSubmissionService、EvaluatorWorker 或投稿 UI。
UI 显示为 DatasetView。派生快照 ID 承诺 parent lineage、FoldWindow 和 access-boundary digest;内层切片不包含外层未来或 Holdout。旧完整快照 Experiment 禁止作为 validated evidence 复用。
可信 replay engine 按日期推进;custom operator 每次只收到当前时点以前的前缀,并且不能读取文件、环境、网络或完整 DataFrame。
两层缺一不可:DatasetView 不能单独证明逐日因果;prefix-only 接口也不能单独证明内层任务没挂载最终 Holdout。发布前同时做物理挂载审计与“追加未来行不改变过去决策”的 prefix-stability 测试。
访问阶段使用 SEALED → GRANTED → ACCESSED;结果使用 NOT_RUN / PASSED / FAILED;历史新鲜度另用 NO_RECORDED_PLATFORM_EXPOSURE / PREVIOUSLY_EXPOSED / LEGACY_UNKNOWN。三者分别记录,禁止声称“全球全新”。
根据 signal、execution、label end 的信息区间删除重叠;严格 expanding 流程不机械增加测试后 embargo。[16]
首阶段仅支持 FORCE_FLAT_WITH_COST:每折以标准资金和空仓开始,折末真实平仓计费,再拼接净 daily returns。它评价定期重新选参并在边界清仓的流程,不冒充持仓跨折连续策略。
修正反复试验和非正态收益导致的 Sharpe 膨胀;研究谱系不完整时必须标明下界。[8]
只对 final Search Round 的共同候选 × 共同日期矩阵计算,不能混合不同 outer rounds。[10]
首个生产 release 只包含 Slice A–C;高级统计诊断、Optuna 和自定义评价投稿分别进入后续独立 Slice。
建立统一术语、七项关键 ADR 和唯一外部接口;Web/CLI/worker 不接触 Study 内部表或状态机。
一次交付 DatasetView、嵌套切分、Grid/Random、内置评价规则、Experiment 复用、Holdout 与最小 CLI;先形成完整可用闭环。
创建向导、搜索范围、外层 OOS、Trial 排行、约束原因、研究谱系、Holdout 暴露和移动端报告。
在共同候选 × 共同日期矩阵上增加 DSR、PBO/CSCV、SPA/Reality Check;研究谱系不足时明确证据不完整。
只有 Grid/Random 的重启等价与去重门禁通过后,才接入固定版本 TPE 和确定性 proposal seed。
只有两个真实 EvaluationPolicy 证明 seam 存在,才建设自定义评价 bundle、验证容器与投稿 UI。
绝大多数行为从 ParameterStudy 的 preview / submit / advance / control / detail 验证,配合临时真实 SQLite Catalog 与真实 ExperimentService。
只为 ExecutionDatasetSliceFactory、MetricDocumentFactory、ParameterSuggester contract、EvaluationPolicy 和 ExperimentService 集成写专门测试。
advance() 每次最多推进一个持久化 effect;先记录 intent,再以确定性 action_id 执行,恢复时重放同一 effect。
最小 Grid validated Study、复用 Experiment、重启继续、DatasetView 攻击、prefix stability、最终 Holdout 和公开链路验收。
不连接券商,不自动 paper/live trading,也不把赢家自动设为算子默认值。
只说明在冻结的数据、时间、搜索空间、成本、评价规则与研究谱系下观察到的最优候选。
不引入 GPU、Ray、早停、首版 Pareto、自定义评价投稿平台和未被真实变化证明的 seam。
本报告是平台建设方案,不表示参数研究功能已经上线;实施必须按 Slice 验收,不得跳过 DatasetView、嵌套验证、Study Lineage 和不可变执行身份。
工具能力优先引用官方文档;验证方法优先引用论文、作者研究页与正式教材。