财务报表工具

📎 引用文件

本文引用的文件 - financial_statements_tool.py - financial_rigor_tool.py - sec_filings_tool.py - research_reports_tool.py - research_papers_tool.py - fundamentals_loader.py

目录

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

简介

本文件为 Vibe-Trading 财务报表工具的权威技术文档,覆盖以下能力: - 财务报表提取:支持 A 股(SH/SZ/BJ)、美股(US)和港股(HK)的三大报表及关键指标读取。 - SEC 文件解析:获取美国 SEC EDGAR 近期公告列表,并可抽取单一 XBRL us-gaap 概念的时间序列。 - 研究研报分析:聚合 A 股卖方研报列表与同花顺一致预期 EPS。 - 财务严谨性检查:基于精确十进制算术进行市值校验、估值比率计算、多源交叉验证、本福特定律造假检测、安全表达式计算和三情景目标价测算。 - 数据适配与异常处理:统一封装各数据源差异,提供分页、限流、容错降级与上下文安全裁剪。 - 深度基本面分析:将上述工具组合,完成从数据到指标再到判断的闭环。

项目结构

围绕财务报表的核心代码位于 agent/src/tools 下,按“工具”维度组织;SEC 基础能力由 backtest.loaders 提供通用客户端与框架;A/HK 财报通过东方财富数据中心接口获取;美股财报通过 SEC EDGAR companyfacts 获取;研究研报通过东方财富报告 API 与同花顺一致预期接口拼接。

graph TB subgraph "工具层" FS["财务报表工具<br/>get_financial_statements"] FR["财务严谨性工具<br/>financial_rigor"] SEC["SEC 文件工具<br/>get_sec_filings"] RR["研究研报工具<br/>get_research_reports"] RP["学术论文工具<br/>research_papers"] end subgraph "数据源适配层" EM["东方财富<br/>A/HK 财报与研报"] THS["同花顺<br/>一致预期 EPS"] EDGAR["SEC EDGAR<br/>公司事实与公告"] ARXIV["arXiv / OpenAlex<br/>学术文献"] end FS --> EM FS --> EDGAR RR --> EM RR --> THS SEC --> EDGAR RP --> ARXIV

图表来源 - financial_statements_tool.py:1-23 - sec_filings_tool.py:1-18 - research_reports_tool.py:1-20 - research_papers_tool.py:1-63

章节来源 - financial_statements_tool.py:1-23 - sec_filings_tool.py:1-18 - research_reports_tool.py:1-20 - research_papers_tool.py:1-63

核心组件

章节来源 - financial_statements_tool.py:589-726 - sec_filings_tool.py:43-173 - financial_rigor_tool.py:442-590 - research_reports_tool.py:57-152 - research_papers_tool.py:1-63

架构总览

整体采用“工具 + 适配层”的分层设计: - 工具层暴露统一的 BaseTool 契约,参数校验、错误包装、分页与限流策略一致。 - 适配层屏蔽不同数据源的协议差异(东方财富 JSON、SEC EDGAR XBRL、同花顺 HTTP)。 - 数据在工具内被规范化为扁平期间记录或结构化对象,便于后续分析与可视化。

sequenceDiagram participant U as "用户/Agent" participant T as "工具(如 get_financial_statements)" participant A as "适配层(东方财富/SEC)" participant S as "外部服务" U->>T : 调用(代码, 报表类型, 期间, 分页) T->>T : 参数校验/市场分类 alt 美股 T->>A : SEC companyfacts/frames A->>S : EDGAR 请求 S-->>A : XBRL 事实 A-->>T : 扁平期间记录 else A/HK T->>A : 东方财富 F10/F10-HK A->>S : 数据中心接口 S-->>A : 报表行集 A-->>T : 扁平期间记录 end T-->>U : JSON 信封(ok/data/paging/error)

图表来源 - financial_statements_tool.py:589-726 - sec_filings_tool.py:102-173 - research_reports_tool.py:91-152

详细组件分析

财务报表工具(三大报表与指标)

flowchart TD Start(["开始"]) --> Parse["解析输入(code/statement/period/offset)"] Parse --> Market{"市场分类"} Market --> |US| SEC["SEC companyfacts 拉取"] Market --> |A/HK| EM["东方财富 F10/F10-HK 拉取"] SEC --> Normalize["单位选择/跨度分类/季度合成/合并瞬时"] EM --> Filter["年报/季报过滤"] Normalize --> Cap["字段裁剪/期间裁剪"] Filter --> Cap Cap --> Page["分页构建响应"] Page --> End(["结束"])

图表来源 - financial_statements_tool.py:158-247 - financial_statements_tool.py:302-490 - financial_statements_tool.py:570-726

章节来源 - financial_statements_tool.py:1-23 - financial_statements_tool.py:158-247 - financial_statements_tool.py:302-490 - financial_statements_tool.py:570-726

SEC 文件工具(公告列表与 XBRL 指标序列)

sequenceDiagram participant U as "用户" participant T as "get_sec_filings" participant C as "SEC 客户端" U->>T : ticker/form/metric/limit/offset T->>C : cik_for(ticker) C-->>T : CIK T->>C : get_submissions(CIK) C-->>T : submissions T->>T : 解析公告列表(可过滤) alt 指定 metric T->>C : get_company_facts(CIK) C-->>T : facts T->>T : _parse_metric(单位选择/去重/排序/截断) end T-->>U : 分页信封(data.filings + data.metric?)

图表来源 - sec_filings_tool.py:102-173 - sec_filings_tool.py:185-235 - sec_filings_tool.py:267-320

章节来源 - sec_filings_tool.py:1-18 - sec_filings_tool.py:102-173 - sec_filings_tool.py:185-235 - sec_filings_tool.py:267-320

财务严谨性工具(精确十进制校验与分析)

classDiagram class FinancialRigorTool { +execute(**kwargs) str } class verify_market_cap { +price +shares +reported_cap +currency } class verify_valuation { +price +eps +bvps +fcf_per_share +dividend +revenue_per_share } class cross_validate { +field_name +source_values +unit +tolerance_pct } class benford_check { +values } class exact_calc { +expr } class three_scenario_valuation { +current_price +current_eps +shares_billion +growth_optimistic/growth_neutral/growth_pessimistic +pe_optimistic/pe_neutral/pe_pessimistic +years +currency } FinancialRigorTool --> verify_market_cap : "调用" FinancialRigorTool --> verify_valuation : "调用" FinancialRigorTool --> cross_validate : "调用" FinancialRigorTool --> benford_check : "调用" FinancialRigorTool --> exact_calc : "调用" FinancialRigorTool --> three_scenario_valuation : "调用"

图表来源 - financial_rigor_tool.py:143-230 - financial_rigor_tool.py:233-345 - financial_rigor_tool.py:348-439 - financial_rigor_tool.py:442-590

章节来源 - financial_rigor_tool.py:1-27 - financial_rigor_tool.py:143-230 - financial_rigor_tool.py:233-345 - financial_rigor_tool.py:348-439 - financial_rigor_tool.py:442-590

研究研报工具(卖方研报与一致预期)

sequenceDiagram participant U as "用户" participant T as "get_research_reports" participant EM as "东方财富" participant THS as "同花顺" U->>T : code/limit T->>EM : 研报列表 EM-->>T : 研报数据 T->>THS : 一致预期 EPS THS-->>T : 一致预期(可能失败) T-->>U : 合并结果(研报 + 一致预期)

图表来源 - research_reports_tool.py:91-152 - research_reports_tool.py:169-227 - research_reports_tool.py:229-293

章节来源 - research_reports_tool.py:1-20 - research_reports_tool.py:91-152 - research_reports_tool.py:169-227 - research_reports_tool.py:229-293

学术论文工具(因子研究与落地衔接)

章节来源 - research_papers_tool.py:1-63 - research_papers_tool.py:157-220 - research_papers_tool.py:284-413 - research_papers_tool.py:651-798

依赖关系分析

graph LR FS["财务报表工具"] --> EM["东方财富"] FS --> EDG["SEC EDGAR"] SEC["SEC 文件工具"] --> EDG RR["研究研报工具"] --> EM RR --> THS["同花顺"] RP["学术论文工具"] --> ARX["arXiv/OpenAlex"] FS -.-> SF["sec_frames"] SEC -.-> SF RR -.-> TH["限流/超时"] RP -.-> TH

图表来源 - financial_statements_tool.py:31-36 - sec_filings_tool.py:25-32 - research_reports_tool.py:28-34 - research_papers_tool.py:73-103

章节来源 - financial_statements_tool.py:31-36 - sec_filings_tool.py:25-32 - research_reports_tool.py:28-34 - research_papers_tool.py:73-103

性能与可扩展性

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

故障排查指南

章节来源 - financial_statements_tool.py:114-124 - financial_statements_tool.py:249-290 - sec_filings_tool.py:118-141 - research_reports_tool.py:104-138 - financial_rigor_tool.py:518-590

结论

Vibe-Trading 财务报表工具通过统一工具契约与多源适配,实现了跨市场的三大报表读取、SEC 公告与 XBRL 指标抽取、A 股研报与一致预期聚合,以及严格的财务校验与分析。其设计强调上下文安全、分页与限流、健壮的错误处理与降级策略,适合与 Agent 工作流组合进行深度基本面分析与合规性检查。

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

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

[本节为操作指引,引用了具体文件路径以便读者定位实现细节]