30 lines
2.7 KiB
Markdown
30 lines
2.7 KiB
Markdown
# 实验台账与去重
|
|
|
|
社区的 Backtest Ledger 将 API 和人工回测统一登记,以公式和完整设置做指纹,并引入 RESERVED 阶段防止重复派发。其 CSV/Excel MVP 很适合说明状态模型,但 CSV 写入本身不提供数据库事务与并发互斥。来源:[一个很小但很有用的工具:Alpha Backtest Ledger,避免重复回测](https://support.worldquantbrain.com/hc/en-us/community/posts/40857367883159)(发帖 2026-05-31,社区经验)。
|
|
|
|
## 建议的数据契约
|
|
|
|
| 对象 | 必须记录 |
|
|
| --- | --- |
|
|
| 假设 | hypothesis_id、来源、机制、反例、预定评价窗口 |
|
|
| 实验输入 | 语言、完整表达式或代码、字段、完整 settings、代码/算子/数据版本、父实验 |
|
|
| 执行 | input_hash、job_id、平台 simulation_id、alpha_id、状态、时间、重试原因 |
|
|
| 证据 | 原始业务响应引用、检查原值/阈值/状态、分年指标、PnL 时段、成本与覆盖 |
|
|
| 决策 | candidate/repair/reject/pending、理由、下一步、已用预算、停止条件 |
|
|
|
|
指纹至少涵盖规范化代码与完整设置;Python 还要包含依赖/代码版本与状态初始化语义。保留原始输入,避免字符串清洗改变含义。研究去重、平台 Alpha ID 幂等同步、提交防重是三个不同问题。
|
|
|
|
建议状态:planned → reserved → running → succeeded/failed/cancelled/unknown;检查状态独立存储。进程崩溃后的 reserved 需要租约/恢复策略。若平台已经接收任务但本地没拿到结果,进入 unknown 并对账,不能盲目重发。数据库唯一约束与事务解决竞争条件,重试日志解释实际发生了什么。
|
|
|
|
## SuperAlpha 的两个指纹
|
|
|
|
“selection + combo + settings”只能识别同一请求,无法识别两种 selection 实际选中了同一个池;同一 selection 随时间也会得到不同池。
|
|
|
|
建议同时记录请求指纹与实际组件指纹:对实际 alpha_ids 排序,联合 combo、影响结果的 settings 及选择时间生成版本指纹。原帖通过 super-selection 取得组件,这个步骤属于后续平台调用,本次未触发。来源:[SuperAlpha 去重的一点小坑:只看 selection 可能还不够](https://support.worldquantbrain.com/hc/en-us/community/posts/40936186021271)(发帖 2026-06-03,社区经验)。
|
|
|
|
## 摘要必须保留的信息
|
|
|
|
摘要中保留 alpha_id、input_hash、完整 settings 的引用、所有非 PASS 检查、检查缺失标记、数据/费用状态,以及与上一轮的差异。显示截断表达式仅用于辨认;不能用截断文本复现或去重。评分候选时,PENDING/unknown 单列,不得自动升格。
|
|
|
|
以上是建设建议,未修改数据库 schema、任务队列或全局 Agent 规则。
|