SAF Architecture Review 策略自动化工厂 — 架构深度评审(修订版) 更新时间: 2026-04-14 评审范围: SAF / Strategy Factory / 各子系统联动 1. 定位与愿景 QMT 工作区 │ ├── qdata/ 统一数据层 ├── qss/ 量化策略系统 ├── its/ 舆情/情绪分析 ├── sps/ 盘中信号监控 ├── tss/ 策略研发回测 │ └── SAF/ 策略自动化工厂 ├── core/saf/ saf Python 包(核心引擎) └── strategy_factory/ 策略工厂(批量评估) 2. 实际架构:双轨并行 strategy_factory/ │ ├── run_evaluate.py ← 批量评估入口(当前生产路径) │ │ │ ├─ legacy/evaluate/engine.py CrossSectionalBacktester ← 实际运行的回测引擎 │ ├─ legacy/evaluate/scorer.py 6D 评分 + 场景切片 │ └─ evaluate/fast_screen_policy.py 快筛策略 │ ├── run_pipeline.py ← 策略数据提纯入口(LLM 清洗 raw→JSON) │ └── pipeline/runner.py │ ├── evaluate/ │ ├── engine_adapter.py ⚠️ 存在但未接入 — SAF 引擎适配器 │ └── fast_screen.py │ └── backtest_*.py ← 专项回测工具(独立使用) ├── backtest_regime.py Regime 三策略对比 (374L) ✅ ├── backtest_regime_aware.py Regime-Aware 回测 (499L) ✅ ├── backtest_skills_v71.py Skills V7.1 回测 (342L) ✅ ├── backtest_sps.py SPS 回测 (360L) ✅ ├── backtest_sps_v2.py SPS V2 回测 (325L) ✅ ├── backtest_v7_vs_v8.py V7 vs V8 对比 (289L) ✅ └── test_tdx_api.py TDX API 测试 (297L) 3. 双轨详解 3.1 Legacy 轨(✅ 当前生产路径) run_evaluate.py │ ├─ CrossSectionalBacktester (legacy/evaluate/engine.py) │ ├─ load_data_yfinance() ✅ Mac 主路径 │ ├─ load_data_csv() ✅ CSV fallback │ ├─ load_data_gateway() ✅ QMT gateway │ ├─ _normalize_ohlcv() ✅ 列名统一 │ └─ signal_func(df) → equity ✅ 截面回测 │ ├─ fast_screen_policy.py │ ├─ infer_profile() ✅ 策略画像推断 │ ├─ should_retry_rejected() ✅ 重试策略 │ └─ classify_*() ✅ 分类逻辑 │ └─ legacy/evaluate/scorer.py ├─ score_strategy() ✅ 6D 评分 ├─ score_scenario_slices() ✅ 场景切片评分 └─ generate_report() ✅ JSON/MD 输出 特点: 直接操作 pandas DataFrame,不依赖 saf.data 包,零抽象开销。 ...

James Gan

SAF 重构迁移方案 日期: 2026-04-13 目标: 将 SAF 提升到与 StrategeFactoryFlow/TSS 并列层次,废弃两者中与 SAF 重叠的部分 范围: StrategeFactoryFlow, TSS, SAF 三个项目的回测/数据/评估层 1. 当前架构状态 1.1 三个项目现状 qmt/ ├── SAF/ # 新共享内核(重构骨架) │ ├── src/saf/ │ │ ├── capability/ # ✅ 策略能力检测 │ │ ├── data/ # ⚠️ 框架完成,实现缺失 │ │ ├── engine/ # ⚠️ 框架完成,时序实现待补全 │ │ ├── evaluation/ # ⚠️ 框架完成,评分实现缺失 │ │ ├── models/ # ✅ 强类型对象模型 │ │ ├── orchestrator/ # ✅ 编排层框架 │ │ ├── storage/ # ✅ 接口定义 │ │ └── strategy/ # ✅ 策略解析器 │ └── tests/ │ ├── StrategeFactoryFlow/ # 策略工厂(待迁移/废弃) │ ├── evaluate/ │ │ ├── engine.py # ❌ 与 SAF engine 重复 → 废弃 │ │ ├── fast_screen_policy.py # ✅ 保留(SAF 暂无对应) │ │ └── scorer.py # ⚠️ 与 SAF evaluation 重复 → 迁移/废弃 │ ├── run_evaluate.py # ✅ 保留(批量编排) │ └── pipeline/ # ⚠️ 部分迁移 │ └── tss/ # 策略运营(待迁移/废弃) ├── data_loader.py # ❌ 与 SAF data 重复 → 废弃 ├── run_*_comparison.py # ⚠️ 保留(多策略对比) ├── vnpy_backtest_runner.py # ⚠️ SAF vnpy_adapter 替代 └── ... 1.2 SAF 能力 vs 现有实现 (2026-04-13 更新) 模块 SAF 现状 StrategeFactoryFlow TSS 结论 策略拓扑检测 ✅ 完整 ✅ 完整 ❌ 无 SAF 优,废弃 SFF FailureCode ✅ 完整 ❌ 散落字符串 ❌ 无 SAF 优,废弃 SFF 对象模型 ✅ 完整 ❌ pd.DataFrame ❌ 无 SAF 优 时序回测引擎 ✅ 完整 ✅ 完整 ⚠️ 简单实现 SAF 已可替代 SFF 截面回测引擎 ✅ 完整 ✅ 完整 ❌ 无 SAF 已可替代 SFF 配对回测引擎 ⚠️ 骨架定义 ❌ 无 ❌ 无 SAF 框架已定义,实现待补 vnpy 适配器 ⚠️ 骨架定义 ❌ 无 ✅ 完整 迁移到 SAF vnpy_adapter 数据加载 ⚠️ 协议定义 ❌ 直接用 DataService ✅ 完整 迁移 data_loader 到 SAF 评分系统 ⚠️ 简化版 ✅ 6维评分 ❌ 无 迁移 6维到 SAF evaluation 编排/批量 ✅ 框架完整 ✅ 完整 ⚠️ 脚本 SAF orchestrator 已可替代 快筛重试 ❌ 无 ✅ 完整 ❌ 无 SFF 保留或迁移到 SAF 2. 迁移原则 2.1 三不原则 不删除代码:所有待废弃代码移入 legacy/ 目录,保留历史 不中断开发:迁移期间现有流水线照常运行 不破坏接口:SAF 接口先稳定再对接 2.2 迁移顺序 Phase 1: 稳固 SAF 内核(共享层先完成) Phase 2: 废弃 StrategeFactoryFlow 中对应模块 Phase 3: 废弃 TSS 中对应模块 Phase 4: 清理 legacy/ 目录 3. 完整迁移方案 3.1 Phase 1: 稳固 SAF 内核 ✅ 已完成 (2026-04-13) 目标: 补全 SAF 中缺失的关键实现,使其能够承接废弃模块 ...

James Gan