Files
quant-factor-research/docs/dev-flow-checklist.md

2.7 KiB
Raw Permalink Blame History

QFR 策略开发最小闭环Checklist

目标:让每次改动都能被复现、复算、对比、落库,避免只看日志导致的错觉与过拟合。

0) 约定

  • 唯一入口:所有优化结果必须可用 scripts/run_etf_trend_backtest.py 复算。
  • 固定数据窗:同一次实验必须固定 start/end 与 configs 下的 universe json。
  • 落库优先:优化与复算都要写入 data/experiments.sqlite或输出可追溯 artifacts

1) 提出假设(写清楚再改)

  • 本次改动想提升什么ann_return / max_drawdown / ann_vol / sharpe / trades_per_year
  • 风险约束是什么例如max_trades_per_year <= 80回撤不恶化超过阈值
  • 预期影响:趋势/均值回归/风险控制/换仓逻辑/过滤条件 哪一块在起作用?

2) 实现改动 + 基线自检

  • 运行一次基线回测(固定 config + 时间窗):
    • python scripts/run_etf_trend_backtest.py --config --start --end
  • 确认输出 artifacts
    • data/etf_trend_equity.parquet
    • data/etf_trend_equity_weights.parquet
    • data/etf_trend_equity_trades.parquet如有

3) 搜索/优化iterate_optimize

  • 固定参数seed、start/end、config、rawdir
  • 记录 run_id建议用时间戳
  • 让优化写库data/experiments.sqlite

4) Top-N 复算(必须做)

目的:避免优化器算出来的 top config 因入口不同/代码变更/数据差异而不可复现。

  • 复算命令:
    • python scripts/verify_topn.py --db data/experiments.sqlite --topn 10 --config --rawdir data/raw

输出:

  • 每个 trial 的原始指标 vs 复算指标差异
  • 标记不一致(超过容忍阈值)的 trial

5) 更新 best 与汇报规则

  • 只有在满足:
    • ann_return 相比 last_reported_ann_return 提升 >= 5pp
    • 且 Top-N 复算一致
    • 且风险约束不恶化

才更新 data/opt_state.json 的 last_reported_ann_return 并对外汇报。

6) 借鉴四大流派(落成 模块 + 指标)

  • 趋势:多周期一致性、风险调整动量
  • 均值回归:偏离/回归信号(用于降低回撤/提高夏普)
  • 风险/宏观PCA/absorption ratio/相关性升高时降风险
  • 相对价值/结构:强弱腿替换、组内中性、主题子宇宙

要求:每个模块都要

  • 可开关(参数化)
  • 可记录原因trades/日志中写入 reason 字段)
  • 可对比A/B vs baseline

7) 迭代准则(用户确认)

  • 当已有一个还可以的策略(例如年化 25%+)后:
    • 必须以该基础策略为主框架逐步叠加技巧与改进
    • 不要换一套完全不同的思路/框架
    • 每次微调的因子不超过 4 个(单次改动可归因、可回滚、可复现)