因子分析工具

📎 引用文件

本文引用的文件 - agent/src/factors/base.py - agent/src/factors/__init__.py - agent/src/factors/factor_analysis_core.py - agent/src/quantlib/factormodel.py - agent/src/quantlib/risk.py - agent/src/entities/cashflow.py - agent/backtest/loaders/fundamentals_loader.py - agent/backtest/metrics.py

目录

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

简介

本文件面向 Vibe-Trading 的“因子分析工具”,系统性说明如何完成因子计算、基本面数据提取、现金流建模与投资组合风险评估,并给出因子模型构建方法、参数设置与验证流程。文档覆盖因子数据的预处理(标准化、去噪)、有效性检验(IC/IR、分层回测)与绩效归因(风格暴露、因子收益分解),并提供可操作的代码路径指引,帮助读者将因子分析工具组合用于量化研究与策略开发。

项目结构

围绕因子分析的核心模块分布在以下位置: - 因子算子与基础框架:agent/src/factors - 因子有效性评估与分层回测:agent/src/factors/factor_analysis_core.py - 风格因子模型与归因:agent/src/quantlib/factormodel.py - 风险度量与尾部建模:agent/src/quantlib/risk.py - 现金流实体与汇率转换:agent/src/entities/cashflow.py - 基本面面板加载(SEC XBRL,PIT 安全):agent/backtest/loaders/fundamentals_loader.py - 回测指标与年化:agent/backtest/metrics.py

graph TB subgraph "因子与算子" FBase["base.py<br/>算子: rank/zscore/ts_*"] FCore["factor_analysis_core.py<br/>IC/IR + 分层回测"] end subgraph "风格模型与归因" FM["factormodel.py<br/>标准暴露/截面回归/归因"] FR["risk.py<br/>VaR/CVaR/回撤/EVT"] end subgraph "数据与实体" FL["fundamentals_loader.py<br/>SEC 基本面面板"] CF["cashflow.py<br/>现金流/FX 转换"] MET["metrics.py<br/>年化/换手/指标"] end FBase --> FCore FCore --> FM FM --> FR FL --> FBase FL --> FM CF --> FR MET --> FR

图表来源 - agent/src/factors/base.py:1-356 - agent/src/factors/factor_analysis_core.py:1-103 - agent/src/quantlib/factormodel.py:1-516 - agent/src/quantlib/risk.py:1-512 - agent/backtest/loaders/fundamentals_loader.py:1-501 - agent/backtest/metrics.py:1-638

章节来源 - agent/src/factors/base.py:1-356 - agent/src/factors/factor_analysis_core.py:1-103 - agent/src/quantlib/factormodel.py:1-516 - agent/src/quantlib/risk.py:1-512 - agent/backtest/loaders/fundamentals_loader.py:1-501 - agent/backtest/metrics.py:1-638

核心组件

章节来源 - agent/src/factors/base.py:1-356 - agent/src/factors/factor_analysis_core.py:1-103 - agent/src/quantlib/factormodel.py:1-516 - agent/src/quantlib/risk.py:1-512 - agent/src/entities/cashflow.py:1-769 - agent/backtest/loaders/fundamentals_loader.py:1-501 - agent/backtest/metrics.py:1-638

架构总览

下图展示因子从数据到评估与归因的整体流程:

sequenceDiagram participant Data as "数据源" participant Loader as "基本面加载器" participant Ops as "因子算子(base)" participant Eval as "有效性评估(core)" participant Model as "风格模型(factormodel)" participant Risk as "风险(risk)" participant Metrics as "指标(metrics)" Data->>Loader : 拉取 SEC 基本面/行情 Loader-->>Ops : 生成宽表(日期×标的) Ops->>Eval : 因子值矩阵 Eval->>Model : 因子值+收益率 -> IC/IR/分组净值 Model->>Risk : 暴露矩阵 -> 截面回归 -> 因子收益 Risk->>Metrics : VaR/CVaR/回撤/模拟 Metrics-->>Eval : 年化/换手/信息比率

图表来源 - agent/backtest/loaders/fundamentals_loader.py:196-277 - agent/src/factors/base.py:62-356 - agent/src/factors/factor_analysis_core.py:8-103 - agent/src/quantlib/factormodel.py:161-516 - agent/src/quantlib/risk.py:142-512 - agent/backtest/metrics.py:458-623

详细组件分析

因子算子与预处理(标准化、去噪、防未来函数)

flowchart TD Start(["输入宽表"]) --> Pre["标准化/缩放(zscore/scale)"] Pre --> Win["窗口统计(ts_*)"] Win --> SafeDiv["safe_div 防除零"] SafeDiv --> Delta["delta(d>=1) 防未来函数"] Delta --> VWAP["vwap(市场感知)"] VWAP --> Out["输出因子值(保留NaN)"]

图表来源 - agent/src/factors/base.py:62-356

章节来源 - agent/src/factors/base.py:1-356

因子有效性检验(IC/IR 与分层回测)

sequenceDiagram participant F as "因子值矩阵" participant R as "收益率矩阵" participant Core as "factor_analysis_core" F->>Core : 对齐日期与标的 Core->>Core : 横截面秩相关(IC) Core->>Core : 分位分组(等权) Core-->>F : 分组净值曲线

图表来源 - agent/src/factors/factor_analysis_core.py:8-103

章节来源 - agent/src/factors/factor_analysis_core.py:1-103

风格因子模型构建与归因

classDiagram class FactorReturnFit { +date +factor_returns +t_statistics +residuals +r_squared +observations } class StyleDrift { +mean_exposure +std_exposure +first_exposure +last_exposure +total_change +max_abs_change } class Factormodel { +standardise_exposures() +build_style_exposures() +cross_sectional_factor_returns() +portfolio_style_exposure() +style_drift() +factor_return_attribution() } Factormodel --> FactorReturnFit : "返回" Factormodel --> StyleDrift : "返回"

图表来源 - agent/src/quantlib/factormodel.py:115-159 - agent/src/quantlib/factormodel.py:161-516

章节来源 - agent/src/quantlib/factormodel.py:1-516

风险度量与尾部建模

flowchart TD Ret["收益率序列"] --> Var["历史/参数VaR"] Ret --> CVaR["历史CVaR"] Equity["净值曲线"] --> DD["最大回撤分析"] Ret --> MC["蒙特卡洛模拟"] MC --> Summ["终端分布统计"] Ret --> EVT["GPD尾部拟合"]

图表来源 - agent/src/quantlib/risk.py:142-512

章节来源 - agent/src/quantlib/risk.py:1-512

现金流分析与汇率转换

sequenceDiagram participant Src as "多币种现金流" participant FX as "FxRateTable" participant Conv as "translate_cashflows" Src->>FX : 查询结算日汇率 FX-->>Conv : 汇率(含是否过期) Conv-->>Src : 统一币种现金流(带元数据)

图表来源 - agent/src/entities/cashflow.py:443-769

章节来源 - agent/src/entities/cashflow.py:1-769

基本面面板与财务指标提取

flowchart TD SEC["SEC facts"] --> Extract["_extract_concept_series"] Extract --> TTM{"频率=ttm?"} TTM -- 是 --> Roll["滚动四期求和"] TTM -- 否 --> Keep["季度/年度值"] Roll --> Panel["PIT 安全面板"] Keep --> Panel Panel --> Derived["派生字段计算"]

图表来源 - agent/backtest/loaders/fundamentals_loader.py:47-131 - agent/backtest/loaders/fundamentals_loader.py:196-277 - agent/backtest/loaders/fundamentals_loader.py:292-300

章节来源 - agent/backtest/loaders/fundamentals_loader.py:1-501

回测指标与年化

章节来源 - agent/backtest/metrics.py:1-638

依赖关系分析

graph LR Base["base.py"] --> Core["factor_analysis_core.py"] Core --> Model["factormodel.py"] Model --> Risk["risk.py"] Loader["fundamentals_loader.py"] --> Base Loader --> Model CF["cashflow.py"] --> Risk Metrics["metrics.py"] --> Risk

图表来源 - agent/src/factors/base.py:1-356 - agent/src/factors/factor_analysis_core.py:1-103 - agent/src/quantlib/factormodel.py:1-516 - agent/src/quantlib/risk.py:1-512 - agent/backtest/loaders/fundamentals_loader.py:1-501 - agent/src/entities/cashflow.py:1-769 - agent/backtest/metrics.py:1-638

章节来源 - agent/src/factors/base.py:1-356 - agent/src/factors/factor_analysis_core.py:1-103 - agent/src/quantlib/factormodel.py:1-516 - agent/src/quantlib/risk.py:1-512 - agent/backtest/loaders/fundamentals_loader.py:1-501 - agent/src/entities/cashflow.py:1-769 - agent/backtest/metrics.py:1-638

性能考量

[本节为通用指导,无需具体文件引用]

故障排查指南

章节来源 - agent/src/factors/base.py:93-356 - agent/src/quantlib/factormodel.py:161-516 - agent/src/quantlib/risk.py:142-512 - agent/backtest/loaders/fundamentals_loader.py:196-501 - agent/src/entities/cashflow.py:443-769

结论

Vibe-Trading 的因子分析工具提供了从数据到评估与归因的完整链路: - 通过稳健的因子算子与 PIT 安全的基本面面板,确保因子构建的可重复性与严谨性。 - 利用 IC/IR 与分层回测进行因子有效性检验,结合风格模型进行暴露与归因分析。 - 借助风险度量与尾部建模评估组合风险,配合回测指标形成闭环。 - 现金流与汇率模块保障资金流分析的准确性与可比性。 建议在实际研究中遵循最小有效观测、稳健标准化与严格防未来函数的原则,并结合多源数据与交叉验证提高因子稳定性。

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

附录:使用示例与最佳实践

以下为常见任务的操作路径与参考位置(不包含具体代码内容): - 提取财务指标并构建基本面因子: - 使用 fundamentals_loader 获取 PIT 安全面板,再经 base.py 算子组合成因子。 - 参考:agent/backtest/loaders/fundamentals_loader.py:196-277、agent/src/factors/base.py:62-356 - 计算技术因子与时间序列变换: - 使用 ts_mean/ts_std/ts_corr/delta/decay_linear/vwap 等算子。 - 参考:agent/src/factors/base.py:93-356 - 因子有效性检验: - 计算每日 IC 与分组净值曲线。 - 参考:agent/src/factors/factor_analysis_core.py:8-103 - 风格暴露与归因: - 构建暴露矩阵、截面回归估计因子收益,进行组合暴露与漂移分析。 - 参考:agent/src/quantlib/factormodel.py:161-516 - 风险评估: - 计算 VaR/CVaR、最大回撤、蒙特卡洛模拟与 GPD 尾部拟合。 - 参考:agent/src/quantlib/risk.py:142-512 - 现金流与汇率转换: - 构建现金流序列并按结算日汇率转换,保留元数据。 - 参考:agent/src/entities/cashflow.py:443-769 - 回测指标与年化: - 计算年化、换手、信息比率、跟踪误差等。 - 参考:agent/backtest/metrics.py:458-623

章节来源 - agent/backtest/loaders/fundamentals_loader.py:196-277 - agent/src/factors/base.py:62-356 - agent/src/factors/factor_analysis_core.py:8-103 - agent/src/quantlib/factormodel.py:161-516 - agent/src/quantlib/risk.py:142-512 - agent/src/entities/cashflow.py:443-769 - agent/backtest/metrics.py:458-623