| name | financial-report-reader |
| description | 财报三表(利润表、资产负债表、现金流量表)深度解读,自动进行同比/环比变动分析并执行多维度财务异常检测(如应收账款暴增、经营现金流与净利润背离、存货积压及毛利率突变等)。当用户需要解读财报、分析三表、做同比/环比比较、检测财务异常信号、评估现金流质量或计算关键财务比率时触发,关键词包括财报、三表、同比、环比、异常检测、应收账款、现金流背离、毛利率、financial statements、earnings report。 |
| license | MIT |
财报三表解读 — 同比环比 + 异常检测
对企业利润表、资产负债表、现金流量表进行结构化分析:自动计算同比(YoY)/ 环比(QoQ)变动,运行多维度异常检测规则(应收暴增、现金流背离利润、存货积压、毛利率突变等),输出可读报告。
能力概览
| 能力 | 说明 |
|---|
| 同比分析(YoY) | 对比同期数据(如 2024Q1 vs 2023Q1),识别趋势变化 |
| 环比分析(QoQ) | 对比相邻期间数据(如 2024Q2 vs 2024Q1),捕捉短期波动 |
| 财务比率 | 毛利率、净利率、资产负债率、流动比率、应收周转天数等 |
| 异常检测 | 10 项规则自动扫描,输出风险等级和解读说明 |
Quick Start
python scripts/analyze_financials.py data.json
python scripts/analyze_financials.py data.json --json
python scripts/analyze_financials.py data.json --output report.json
python scripts/analyze_financials.py --sample > sample_data.json
python scripts/analyze_financials.py data.json --ar-threshold 0.25 --ocf-ratio 0.4
输入数据格式
脚本接受 JSON 文件,格式如下:
{
"company": "示例公司",
"currency": "CNY",
"unit": "万元",
"periods": ["2023Q1","2023Q2","2023Q3","2023Q4","2024Q1","2024Q2","2024Q3","2024Q4"],
"income_statement": {
"revenue": [5000, 5200, 4800, 6000, 5500, 5800, 5100, 6500],
"cost_of_revenue": [3000, 3100, 2900, 3500, 3400, 3600, 3200, 4100],
"operating_income": [800, 850, 750, 1000, 780, 820, 700, 900],
"net_income": [600, 650, 560, 780, 580, 620, 520, 680]
},
"balance_sheet": {
"accounts_receivable": [2000, 2100, 2200, 2300, 2800, 3200, 3600, 4200],
"inventory": [1000, 1050, 1100, 1200, 1100, 1150, 1200, 1300],
"total_current_assets": [5000, 5200, 5400, 5800, 6000, 6500, 7000, 7500],
"goodwill": [500, 500, 500, 500, 500, 500, 500, 500],
"total_assets": [15000, 15500, 16000, 16500, 17000, 17500, 18000, 18500],
"accounts_payable": [1500, 1600, 1550, 1700, 1650, 1750, 1700, 1800],
"total_current_liabilities": [4000, 4200, 4100, 4500, 4300, 4600, 4500, 4900],
"total_liabilities": [8000, 8200, 8400, 8600, 8800, 9000, 9200, 9500],
"total_equity": [7000, 7300, 7600, 7900, 8200, 8500, 8800, 9000]
},
"cash_flow": {
"operating_cash_flow": [700, 750, 620, 850, 300, 280, 250, 200],
"investing_cash_flow": [-200, -180, -250, -300, -400, -350, -300, -280],
"financing_cash_flow": [-100, -50, -80, -120, 200, 150, 100, 50],
"capex": [180, 160, 230, 280, 380, 330, 280, 260]
}
}
字段说明:
periods 支持季度格式(2024Q1)和年度格式(2024),脚本自动识别
- 各数组长度必须与
periods 长度一致
- 缺少的字段会跳过对应分析(不会报错)
unit 为显示单位,仅用于报告展示
参数说明
| 参数 | 简写 | 必填 | 默认值 | 说明 |
|---|
input | - | 是* | - | 输入 JSON 文件路径 |
--json | -j | 否 | false | 以 JSON 格式输出 |
--output | -o | 否 | stdout | 输出文件路径(.json) |
--sample | -s | 否 | false | 输出示例数据到 stdout |
--ar-threshold | - | 否 | 0.20 | 应收账款异常阈值(增速差) |
--inv-threshold | - | 否 | 0.15 | 存货异常阈值(增速差) |
--ocf-ratio | - | 否 | 0.50 | 现金流/利润背离阈值 |
--margin-threshold | - | 否 | 0.05 | 毛利率突变阈值 |
--debt-ceiling | - | 否 | 0.70 | 资产负债率警戒线 |
--current-floor | - | 否 | 1.00 | 流动比率警戒线 |
--goodwill-ceiling | - | 否 | 0.30 | 商誉占比警戒线 |
* 使用 --sample 时 input 非必填。
异常检测规则
脚本内置以下 10 项异常检测规则:
| # | 规则 | 触发条件 | 风险含义 |
|---|
| 1 | 应收账款暴增 | AR 增速 - 收入增速 > 阈值 | 可能虚增收入或回款困难 |
| 2 | 现金流背离利润 | OCF / Net Income < 阈值 | 盈利质量低,利润含"水分" |
| 3 | 存货积压 | 存货增速 - 收入增速 > 阈值 | 产品滞销或减值风险 |
| 4 | 毛利率突变 | 毛利率变动 > 阈值 | 定价能力或成本结构异变 |
| 5 | 净利率突变 | 净利率变动 > 阈值 | 费用管控或非经常损益异常 |
| 6 | 经营现金流持续为负 | 连续 2+ 期 OCF < 0 | 造血能力不足 |
| 7 | 商誉占比过高 | 商誉 / 总资产 > 阈值 | 减值"黑天鹅"风险 |
| 8 | 资产负债率过高 | 负债 / 资产 > 阈值 | 偿债压力大 |
| 9 | 流动比率过低 | 流动资产 / 流动负债 < 阈值 | 短期偿债能力不足 |
| 10 | 应付账款异常 | AP 增速显著偏离成本增速 | 供应链关系或资金链异常 |
LLM 解读指引
当用户提供财报数据(PDF/图片/表格/文本)时,按以下步骤操作:
- 数据提取:将用户提供的财报数据整理为上述 JSON 格式,保存为临时文件
- 运行分析:调用
scripts/analyze_financials.py 执行量化分析
- 综合解读:结合脚本输出和以下分析框架,给出中文解读
三表联动分析框架
- 利润表 → 资产负债表:收入增长是否由应收账款驱动?净利润是否转化为留存收益?
- 利润表 → 现金流量表:净利润与经营现金流是否匹配?折旧摊销是否合理回加?
- 资产负债表 → 现金流量表:资产扩张的资金来源?投资活动是否与资本开支一致?
异常信号的上下文判断
异常信号不等于"公司有问题",需结合行业和经营背景判断:
- 应收暴增在 To-B 企业年末可能是正常的季节性波动
- 高负债率在公用事业、房地产行业属行业常态
- 短期现金流为负在高成长期企业(如 SaaS)可能合理
输出建议格式
## 财报分析报告 — [公司名称]
### 核心指标速览
(关键指标表格)
### 同比/环比变动亮点
(Top 3-5 变动最大的指标及解读)
### 异常信号
(检测到的异常逐项说明,含严重程度和可能原因)
### 三表联动分析
(跨报表的逻辑验证结论)
### 总结与建议
(1-2 段综合评价)