基本面分析工具

📎 引用文件

本文引用的文件 - get_fundamentals_tool.py - financial_statements_tool.py - cashflow_analytics_tool.py - cashflow.py - fundamentals_loader.py - test_get_fundamentals_tool.py - test_financial_statements_tool.py - test_cashflow_analytics_tool.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与健壮性
  8. 故障排查指南
  9. 结论
  10. 附录:研究流程与示例

简介

本文件系统性介绍 Vibe-Trading 的基本面分析工具集,覆盖三大工具: - get_fundamentals_tool:面向美国市场(SEC XBRL)的标准化、PIT 对齐的面板数据拉取,提供公司财务指标、估值因子与基础因子。 - financial_statements_tool:跨市场(A股/港股/美股)三大报表与关键指标读取,支持年报/季报、分页与字段裁剪。 - cashflow_analytics_tool:基于客户视角现金流序列计算时间加权收益(TWR)、修正 Dietz 收益与货币加权收益(XIRR),用于现金流质量评估与绩效归因。

文档同时说明财务数据的标准化处理、异常值检测、趋势分析方法,并给出财务健康度评分、盈利质量分析与增长预测模型的应用思路;包含同行比较、行业基准与估值模型应用;最后提供基本面研究工作流程与投资决策支持示例。

项目结构

围绕基本面分析的代码主要分布在 agent/src/tools 与 agent/backtest/loaders: - 工具层:三个工具类分别封装输入校验、数据源路由、结果包装与错误信封。 - 加载器层:fundamentals_loader 将 SEC companyfacts 转换为 PIT 安全的日频面板,支持 TTM 滚动、季度合成与派生字段。 - 实体层:cashflow.py 定义现金流实体、汇率表与转换逻辑,为现金流分析提供严格的数据契约。

graph TB subgraph "工具层" A["GetFundamentalsTool"] B["FinancialStatementsTool"] C["CashFlowPerformanceTool"] end subgraph "加载器/实体" L["fundamentals_loader<br/>PIT面板/T TM/派生字段"] E["cashflow.py<br/>现金流实体/汇率表"] end subgraph "外部数据源" S1["SEC EDGAR (companyfacts)"] S2["东方财富 (A/HK F10)"] end A --> L B --> S1 B --> S2 C --> E

图表来源 - get_fundamentals_tool.py:64-211 - financial_statements_tool.py:589-726 - cashflow_analytics_tool.py:40-300 - fundamentals_loader.py:196-278 - cashflow.py:121-265

章节来源 - get_fundamentals_tool.py:64-211 - financial_statements_tool.py:589-726 - cashflow_analytics_tool.py:40-300 - fundamentals_loader.py:196-278 - cashflow.py:121-265

核心组件

章节来源 - get_fundamentals_tool.py:64-211 - financial_statements_tool.py:589-726 - cashflow_analytics_tool.py:40-300

架构总览

工具通过统一的“错误信封”和“成功信封”对外暴露稳定接口,屏蔽底层数据源差异与异常。

sequenceDiagram participant U as "调用方" participant G as "GetFundamentalsTool" participant L as "fundamentals_loader" participant SEC as "SEC EDGAR" U->>G : execute(symbols, fields, start, end, freq, pit, source, index) G->>G : 参数校验/类型检查 G->>L : load_fundamental_panel(...) L->>SEC : 获取 companyfacts / 概念映射 SEC-->>L : 稀疏事实序列 L-->>G : 日频宽面板 DataFrame G-->>U : {"ok" : true, "data" : {field : [records]}} Note over G,L : 失败时返回 {"ok" : false,"error" : ...}

图表来源 - get_fundamentals_tool.py:126-211 - fundamentals_loader.py:196-278

章节来源 - get_fundamentals_tool.py:126-211 - fundamentals_loader.py:196-278

详细组件分析

组件一:get_fundamentals_tool(基本面面板)

classDiagram class GetFundamentalsTool { +execute(**kwargs) str -_frame_records(df) list -_json_safe(value) Any } class FundamentalsLoader { +load_fundamental_panel(...) dict -_extract_concept_series(...) DataFrame -_to_ttm_flow_series(DataFrame) DataFrame } GetFundamentalsTool --> FundamentalsLoader : "调用"

图表来源 - get_fundamentals_tool.py:64-211 - fundamentals_loader.py:47-132 - fundamentals_loader.py:292-301

章节来源 - get_fundamentals_tool.py:64-211 - fundamentals_loader.py:47-132 - fundamentals_loader.py:196-278 - test_get_fundamentals_tool.py:22-80

组件二:financial_statements_tool(三大报表与指标)

sequenceDiagram participant U as "调用方" participant F as "FinancialStatementsTool" participant EM as "东方财富" participant SEC as "SEC EDGAR" U->>F : execute(code, statement, period, offset) F->>F : 分类市场(.SH/.SZ/.BJ/.US/.HK) alt 美股 F->>SEC : cik_for + get_company_facts SEC-->>F : us-gaap 事实 F-->>U : ok envelope with periods else A/HK F->>EM : datacenter report API EM-->>F : 报表行集合 F-->>U : ok envelope with periods end

图表来源 - financial_statements_tool.py:589-726 - financial_statements_tool.py:249-290 - financial_statements_tool.py:492-568

章节来源 - financial_statements_tool.py:589-726 - financial_statements_tool.py:249-290 - financial_statements_tool.py:492-568 - test_financial_statements_tool.py:103-200

组件三:cashflow_analytics_tool(现金流分析与质量评估)

flowchart TD Start(["开始"]) --> V["校验估值序列<br/>至少两期且有限值"] V --> F["解析现金流<br/>内联或文件"] F --> K{"外部/内部种类"} K --> |外部| TWR["计算 TWR"] K --> |内部| MWR["计算 XIRR"] TWR --> D["计算 Modified Dietz"] D --> R["汇总摘要/子区间/权重"] MWR --> R R --> End(["结束"])

图表来源 - cashflow_analytics_tool.py:172-300 - cashflow.py:121-265

章节来源 - cashflow_analytics_tool.py:40-300 - cashflow.py:121-265 - test_cashflow_analytics_tool.py:53-119

依赖关系分析

graph LR ToolA["get_fundamentals_tool"] --> Loader["fundamentals_loader"] ToolB["financial_statements_tool"] --> SEC["SEC EDGAR"] ToolB --> EM["东方财富"] ToolC["cashflow_analytics_tool"] --> Entity["cashflow.py"]

图表来源 - get_fundamentals_tool.py:177-199 - financial_statements_tool.py:679-686 - cashflow_analytics_tool.py:172-219

章节来源 - get_fundamentals_tool.py:177-199 - financial_statements_tool.py:679-686 - cashflow_analytics_tool.py:172-219

性能与健壮性

章节来源 - financial_statements_tool.py:109-156 - cashflow_analytics_tool.py:30-38 - test_get_fundamentals_tool.py:63-80 - test_cashflow_analytics_tool.py:107-119

故障排查指南

章节来源 - get_fundamentals_tool.py:126-176 - financial_statements_tool.py:660-703 - cashflow_analytics_tool.py:303-400

结论

Vibe-Trading 的基本面分析工具集提供了从数据获取、标准化到绩效评估的完整链路: - get_fundamentals_tool 提供 PIT 安全、可组合的面板数据,适合因子研究与趋势分析。 - financial_statements_tool 打通多市场财报读取,支持分页与上下文安全,便于财报审阅与比率计算。 - cashflow_analytics_tool 提供严格的现金流语义与三种收益度量,支撑现金流质量评估与绩效归因。

结合派生字段、同行比较与估值模型,可形成闭环的研究与决策支持体系。

附录:研究流程与示例

标准化处理、异常值检测与趋势分析

章节来源 - fundamentals_loader.py:128-132 - get_fundamentals_tool.py:35-61 - cashflow_analytics_tool.py:303-334

财务健康度评分、盈利质量分析与增长预测模型

章节来源 - financial_statements_tool.py:492-568 - cashflow_analytics_tool.py:172-300

同行比较、行业基准与估值模型应用

章节来源 - test_get_fundamentals_tool.py:97-142 - test_financial_statements_tool.py:103-200

基本面研究工作流程与投资决策支持示例

章节来源 - financial_statements_tool.py:589-726 - get_fundamentals_tool.py:64-211 - cashflow_analytics_tool.py:40-300