DevLog #003: no_signal_func 问题分析 — 741个策略中90个无法提取信号函数

日期: 2026-04-12 状态: 分析完成 Tags: strategy-factory, issue-analysis, signal-extraction, 平台兼容性


概述

out/ 目录下所有 741 个策略 JSON 进行分析,发现 90 个策略(12.1%)的 pure_alpha_function 字段为 null,无法参与回测。


总体统计

类别数量占比处理建议
A类(可直接修复)~5 个0.7%通过 LLM 直接生成
B类(可重新生成)~58 个7.8%模拟 API 或替代数据
C类(不可修复)~27 个3.6%标记排除,不计入失败率
总可修复率~70%修复后预估通过率 4.0% → 12.5%

A类:可直接修复(5个)

判定条件

  • pure_alpha_function 为 null
  • logic_extraction.entry_signals 有实质性内容
  • quality_assessment.completenessmediumhigh
  • 策略描述清晰

典型案例

文件问题修复方案
24 自选策略1.json框架模板,核心筛选函数为空占位符已有详细 entry/exit signals,可直接生成
68 板块轮动不动?.json策略依赖外部CSV数据文件CSV文件路径已知,可补充数据源后生成
87 选股策略说明——张燕兰.json财务因子策略,6项指标清晰entry_signals 包含6个财务指标,可直接生成 pandas 实现

修复方案:使用 logic_extraction 中的 entry_signalsexit_signals 重新调用 LLM。


B类:可重新生成(58个)

判定条件:策略依赖平台私有 API,但策略描述完整,有可参考的输入输出逻辑。

主要问题类型

类型典型案例问题修复方案
JoinQuant 财务 API11.多因子选股策略——基于传统分析.json使用 get_fundamentals用 akshare/tushare 替代
JoinQuant 行业API86.北上詹姆斯.json使用 get_industry_stocks用申万行业数据替代
机器学习预测依赖97.基于机器学习的多因子选股策略.json依赖平台 ML 模型需重新训练或使用替代 ML
遗传算法/优化40.基于遗传算法挖掘因子2.json遗传算法优化依赖平台 API使用 DEAP 库独立实现

★ Insight ───────────────────────────────────── 平台锁定是策略可移植性的最大障碍。 大多数"野生策略"都绑定了特定平台的私有 API(get_fundamentals、get_industry_stocks 等), 这也是为什么我们需要用 pure_alpha_function 将它们"净化"为纯 pandas/numpy 实现。 ──────────────────────────────────────────────────

修复方案

  1. 建立 API 模拟层:用 akshare/tushare 替代 JoinQuant 财务 API
  2. 因子库替代:使用开源因子库或自实现常用因子
  3. LLM 重建:对有清晰 logic_extraction 的策略重新生成代码

C类:不可修复(27个)

判定条件

  • 非交易策略(研究工具、学习示例、数据采集工具)
  • 完全依赖外部不可得数据
  • entry_signals 为空数组

典型案例

文件类型原因
7.中文自然语言处理--情感分析.jsonNLP研究非交易策略,是文本情感分类教程
54.指数估值自动报表系统.json分析工具无交易信号,仅数据报表生成
77.TensorFlow 学习之RNN.json学习示例ML 学习代码,非交易策略
43.ETF资源收集整合.json数据采集仅数据采集和整理,无交易逻辑
100.全市场归因.json分析工具归因分析,非交易策略

处理建议

  • 标记为"模板残留"或"非交易策略"
  • 从评估集中排除,不计入失败率
  • 如需利用,可作为 LLM 微调训练数据

失败原因分布

no_signal_func (90个)
├── A类可直接修复: 5个 (5.6%)
│   └── 框架模板占位符、财务因子逻辑完整
├── B类可重新生成: 58个 (64.4%)
│   ├── JoinQuant 财务API: ~15个
│   ├── JoinQuant 行业API: ~8个
│   ├── 机器学习依赖: ~10个
│   ├── 多因子策略: ~12个
│   └── 遗传算法/优化: ~5个
└── C类不可修复: 27个 (30.0%)
    ├── 研究/学习工具: ~12个
    ├── 分析/报表工具: ~8个
    └── 外部数据依赖: ~7个

修复优先级

优先级类别数量修复后预估通过率提升
P1A类可直接修复5+0.7%
P2B类可重新生成58+7.8%
P3C类不可修复270%(标记排除)

如全部修复完成,预估通过率从 4.0% 提升至 12.5%(假设 B 类 50% 修复成功)。


核心洞察

★ Insight ───────────────────────────────────── 12.1% 的策略因为"平台锁定"而无法参与回测,这不是策略本身的问题,而是量化平台生态割裂的结果。

净化工作(pure_alpha_function 提取)的价值在于:将散落在各个平台的"野生策略"转化为"可移植的策略资产"。

但这也提醒我们:未来的策略生成应该直接输出平台无关的 pure_alpha_function,而不是先写平台特定代码再转换。 ──────────────────────────────────────────────────


Generated from: SAF/strategy_factory/docs/stratege_factory_issues.md