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

70 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <CONF> --start <START> --end <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 <CONF> --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 个(单次改动可归因、可回滚、可复现)