因子分析工具

📎 引用文件

本文引用的文件 - factor_analysis_tool.py - technical_indicator_tool.py - pattern_tool.py - factor_analysis_core.py - base.py - registry.py - smb.py - alpha_001.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件系统性介绍 Vibe-Trading 的因子分析工具集,覆盖以下能力: - factor_analysis_tool:支持量化因子的计算、分层回测与评估(IC/IR、分组净值曲线、多空价差等)。 - technical_indicator_tool:提供常用技术分析指标计算(RSI、MACD、布林带、SMA、EMA),基于统一市场数据管线。 - pattern_tool:识别价格形态与技术信号(头肩顶/底、双顶/底、三角形、喇叭口、K线形态、支撑阻力、趋势斜率等)。

同时说明因子库架构、内置因子类型与自定义因子开发规范;记录因子有效性检验、相关性分析与组合构建方法;包含因子衰减检测、过拟合防范与稳健性检验建议;并提供因子研究工作流程与最佳实践指导。

项目结构

围绕因子分析的工具与核心逻辑主要分布在如下位置: - 工具层(对外暴露): - agent/src/tools/factor_analysis_tool.py:因子分析工具入口,封装 IC/IR 与分层回测流程。 - agent/src/tools/technical_indicator_tool.py:技术指标计算工具。 - agent/src/tools/pattern_tool.py:图表形态识别工具。 - 核心计算层(被工具复用): - agent/src/factors/factor_analysis_core.py:IC 序列与分组净值计算的纯数学实现。 - agent/src/factors/base.py:因子算子库(横截面/时间序列算子、安全函数、VWAP 等)。 - agent/src/factors/registry.py:因子注册表(AST 扫描、元数据校验、懒加载 compute)。 - 因子库(zoo): - agent/src/factors/zoo/academic/smb.py:学术因子示例(规模代理)。 - agent/src/factors/zoo/alpha101/alpha_001.py:Alpha101 系列示例。

graph TB subgraph "工具层" FAT["factor_analysis_tool.py"] TIT["technical_indicator_tool.py"] PAT["pattern_tool.py"] end subgraph "核心计算层" FAC["factor_analysis_core.py"] BASE["base.py"] REG["registry.py"] end subgraph "因子库 zoo" SMB["academic/smb.py"] A101["alpha101/alpha_001.py"] end FAT --> FAC TIT --> |"读取行情数据"| TIT PAT --> |"读取OHLCV"| PAT REG --> BASE REG --> SMB REG --> A101

图示来源 - factor_analysis_tool.py:19-105 - factor_analysis_core.py:8-102 - registry.py:201-397 - base.py:62-356 - smb.py:25-62 - alpha_001.py:38-65

章节来源 - factor_analysis_tool.py:19-105 - technical_indicator_tool.py:157-283 - pattern_tool.py:323-411 - factor_analysis_core.py:8-102 - base.py:62-356 - registry.py:201-397

核心组件

章节来源 - factor_analysis_tool.py:19-105 - technical_indicator_tool.py:157-283 - pattern_tool.py:323-411

架构总览

整体架构分为“工具层—核心计算层—因子库”三层: - 工具层:面向用户/Agent 的接口,负责参数校验、IO、结果序列化。 - 核心计算层:提供可复用的数学与数据处理能力(IC、分组净值、算子、注册表)。 - 因子库:以模块形式组织因子,每个因子声明 alpha_meta 并通过 registry 懒加载 compute。

sequenceDiagram participant U as "调用方" participant FAT as "FactorAnalysisTool" participant FAC as "factor_analysis_core" participant FS as "文件系统" U->>FAT : 传入 factor_csv, return_csv, n_groups, output_dir FAT->>FS : 读取因子与收益CSV FAT->>FAC : compute_ic_series(factor_df, return_df) FAC-->>FAT : IC序列 FAT->>FAC : compute_group_equity(factor_df, return_df, n_groups) FAC-->>FAT : 分组净值DataFrame FAT->>FS : 写入 ic_series.csv, group_equity.csv, ic_summary.json FAT-->>U : JSON分析报告

图示来源 - factor_analysis_tool.py:19-105 - factor_analysis_core.py:8-102

详细组件分析

因子分析工具(factor_analysis_tool)

flowchart TD Start(["开始"]) --> Read["读取因子与收益CSV"] Read --> Valid{"数据非空且n_groups合法?"} Valid -- 否 --> Err["返回错误JSON"] Valid -- 是 --> IC["计算每日Spearman IC"] IC --> ICValid{"IC序列有效?"} ICValid -- 否 --> Err ICValid -- 是 --> Group["按因子值分组(优先qcut, 不足回退cut)"] Group --> Equity["等权持有累计净值"] Equity --> Out["输出CSV/JSON报告"] Out --> End(["结束"])

图示来源 - factor_analysis_tool.py:19-105 - factor_analysis_core.py:8-102

章节来源 - factor_analysis_tool.py:19-105 - factor_analysis_core.py:8-102

技术指标工具(technical_indicator_tool)

sequenceDiagram participant U as "调用方" participant TIT as "TechnicalIndicatorTool" participant MD as "fetch_market_data" U->>TIT : symbol, interval, lookback TIT->>MD : 拉取OHLCV MD-->>TIT : 原始数据 TIT->>TIT : 提取收盘价序列 TIT->>TIT : 计算RSI/MACD/Bollinger/SMA/EMA TIT-->>U : JSON指标结果

图示来源 - technical_indicator_tool.py:157-283

章节来源 - technical_indicator_tool.py:157-283

形态识别工具(pattern_tool)

flowchart TD S(["开始"]) --> Load["读取OHLCV文件"] Load --> Select{"选择模式"} Select --> |all| All["执行所有形态检测"] Select --> |指定| Pick["解析并校验模式名"] All --> Run["逐标的运行检测函数"] Pick --> Run Run --> Out["输出JSON结果"] Out --> E(["结束"])

图示来源 - pattern_tool.py:323-411

章节来源 - pattern_tool.py:323-411

因子库架构与自定义因子开发

classDiagram class Registry { +list(zoo, theme, universe) list[str] +get(alpha_id) Alpha +compute(alpha_id, panel) DataFrame +health() dict +export_manifest() dict } class AlphaMeta { +id str +nickname str +theme list[Theme] +formula_latex str +columns_required list[str] +extras_required list[str] +requires_sector bool +universe list[Universe] +frequency list[str] +decay_horizon int +min_warmup_bars int +notes str } class BaseOperators { +rank(df) DataFrame +zscore(df) DataFrame +scale(df,a) DataFrame +ts_mean(df,n) DataFrame +ts_std(df,n) DataFrame +ts_corr(x,y,n) DataFrame +ts_cov(x,y,n) DataFrame +ts_argmax(df,n) DataFrame +ts_argmin(df,n) DataFrame +delta(df,d) DataFrame +decay_linear(df,n) DataFrame +signed_power(df,p) DataFrame +safe_div(a,b,eps) DataFrame +vwap(panel,market) DataFrame } Registry --> AlphaMeta : "校验元数据" Registry --> BaseOperators : "因子内部使用"

图示来源 - registry.py:87-125 - registry.py:201-397 - base.py:62-356

章节来源 - registry.py:201-397 - base.py:62-356 - smb.py:25-62 - alpha_001.py:38-65

依赖关系分析

graph LR FAT["factor_analysis_tool.py"] --> FAC["factor_analysis_core.py"] TIT["technical_indicator_tool.py"] --> MD["market_data (外部)"] PAT["pattern_tool.py"] --> PU["path_utils (外部)"] REG["registry.py"] --> BASE["base.py"] REG --> ZOO["zoo/*.py"]

图示来源 - factor_analysis_tool.py:19-105 - technical_indicator_tool.py:157-283 - pattern_tool.py:323-411 - registry.py:201-397 - base.py:62-356

章节来源 - factor_analysis_tool.py:19-105 - technical_indicator_tool.py:157-283 - pattern_tool.py:323-411 - registry.py:201-397

性能考量

[本节为通用性能讨论,无需具体文件引用]

故障排查指南

章节来源 - factor_analysis_tool.py:36-85 - technical_indicator_tool.py:200-252 - pattern_tool.py:334-360

结论

Vibe-Trading 的因子分析工具集提供了从因子计算、技术指标到形态识别的一体化能力,配合严格的因子注册与算子体系,便于快速验证与扩展。通过 IC/IR、分层回测与形态信号,可构建稳健的研究闭环;结合衰减检测、过拟合防范与稳健性检验,有助于产出可落地的策略。

[本节为总结性内容,无需具体文件引用]

附录

因子有效性检验、相关性分析与组合构建方法

[本节为方法论说明,无需具体文件引用]

因子衰减检测、过拟合防范与稳健性检验

[本节为方法论说明,无需具体文件引用]

因子研究工作流程与最佳实践

[本节为方法论说明,无需具体文件引用]