财报深度解读助手
验收标准(一句话)
交付的 HTML 报告包含 13 个必需章节且每个章节有实质内容(非占位符),通过硬闸 earnings_lint.py 退出码 0。
执行流程
第 0 步:定位材料与自检
- 确认用户提供了以下输入中的至少一项:财报文件(PDF/图片/文本)、研报、经营数据表格、或口述的关键数字。
- 如果用户只给了公司名+报告期但没给财报文件,用
web_search检索该公司该期财报的关键数据(收入、净利润、毛利率、经营现金流等),在报告中标注来源。 - 自检:能否回答「这是哪家公司、哪个报告期」?不能回答 → 用
ask问用户补齐公司名与报告期。
第 1 步:提取财务数据
- 如果用户给了文件,用
doc_parse(PDF/Word/PPT)或read_image(图片)提取财报文本。 - 从提取的文本中识别以下数据点(缺的标「材料未给出」):
- 收入总额、分业务/分地区收入(如有)
- 营业成本、毛利率
- 销售费用、管理费用、研发费用、财务费用
- 营业利润、净利润、扣非净利润
- 经营现金流、投资现金流、筹资现金流
- 应收账款、存货、应付账款、合同负债
- 资产负债率、ROE、ROIC(如可算)
- 产出:将提取的数据整理为 JSON 存入
outputs/<公司名>_<报告期>_data.json。
第 2 步:业绩概览与核心结论
- 计算同比/环比变化(如有上期数据)。
- 判断业绩是否超预期:与检索到的市场预期或研报预测对比。
- 写 3 条以内的核心结论,每条一句话,按重要性排序。
- 产出:写入报告「核心结论」与「业绩概览」两节。
第 3 步:收入分析
按 references/analysis-framework.md 的「收入分析」节执行:
- 总收入变化拆解(量×价×结构)。
- 分业务/分地区收入变化(如有分部数据)。
- 增长驱动判断:是行业增长、份额提升、还是提价?
- 产出:写入报告「收入分析」节。
第 4 步:毛利率分析
按 references/analysis-framework.md 的「毛利率分析」节执行:
- 计算毛利率及其变化。
- 拆解毛利率变化原因(原材料、产品结构、规模效应、汇率)。
- 与同行对比(如有同行数据,用
web_search检索)。 - 产出:写入报告「毛利率分析」节。
第 5 步:费用分析
按 references/analysis-framework.md 的「费用分析」节执行:
- 计算各项费用率及其变化。
- 判断费用变化是否合理(投入期 vs 收获期)。
- 产出:写入报告「费用分析」节。
第 6 步:盈利能力分析
- 计算营业利润率、净利率、扣非净利率。
- 判断盈利质量:利润增长来自主业还是非经常损益?
- 产出:写入报告「盈利能力」节。
第 7 步:现金流分析
按 references/analysis-framework.md 的「现金流分析」节执行:
- 经营现金流 vs 净利润对比(盈余现金保障倍数)。
- 自由现金流测算(经营现金流 - 资本开支)。
- 判断现金流是否支撑利润(「纸面利润」检测)。
- 产出:写入报告「现金流」节。
第 8 步:营运资本分析
按 references/analysis-framework.md 的「营运资本分析」节执行:
- 应收账款变化 vs 收入变化(是否放宽信用冲收入)。
- 存货变化 vs 收入变化(是否积压)。
- 合同负债变化(预收指标)。
- 产出:写入报告「营运资本」节。
第 9 步:经营异常检测
按 references/anomaly-checklist.md 逐条检查:
- 对每条异常规则,判断是否触发。
- 触发的异常写入「经营异常」节,每条标注:异常现象、数据依据、严重级(高/中/低)。
- 对每条异常,在「异常原因」节给出可能原因分析。
- 产出:写入报告「经营异常」与「异常原因」两节。
第 10 步:风险与投资含义
- 列出 3-5 条风险点(来自异常检测 + 行业风险 + 财务风险)。
- 写投资含义:这期财报对投资逻辑的影响(是否需要调整预期/评级),明确区分「事实」与「我们的判断」。
- 产出:写入报告「风险」与「投资含义」节。
第 11 步:生成 HTML 报告
- 按
references/output-template.md的 HTML 模板组装完整报告。 - 报告文件名:
<公司名>_<报告期>_财报解读.html,写入outputs/。 - 报告必须自包含(内联 CSS,零外链,离线可开)。
第 12 步:硬闸校验
- 运行硬闸:
python3 scripts/earnings_lint.py outputs/<报告文件名> - 退出码含义:
- 0 = 通过,可交付
- 1 = 有 WARN(建议项),可交付但需说明
- 2 = 有 FAIL(阻断项),禁止交付,必须修复后重跑
- 3 = 用法错误(路径不存在等)
- FAIL 未清零 → 修复报告 → 重跑硬闸 → 直到退出码 0 或 1。
第 13 步:衔接 PPT 生成(可选)
- 如果用户要求生成 PPT,调用
wenku-ppt-finance-company-researchskill。 - 将报告核心结论、业绩概览、收入分析、毛利率、异常发现等关键内容作为 PPT 输入。
- PPT 产出路径与报告同在
outputs/下。
场景导航
| 需求 | 去哪里 |
|---|---|
| 收入/毛利率/费用/现金流/营运资本的分析维度与计算方法 | references/analysis-framework.md |
| 最终 HTML 报告的完整模板与样式 | references/output-template.md |
| 经营异常的判定规则与严重级 | references/anomaly-checklist.md |
红线
- 不编造:材料里没有的数字、结论一律不补。缺数字写「材料未给出」,缺结论写「材料未给出结论,不代为判断」。
- 不荐股:不给买入/卖出指令、目标价、仓位建议。投资含义只说「对投资逻辑的影响」,不说「该买还是该卖」。
- 事实与判断分离:财报数字是「事实」,原因分析是「我们的判断」,两者在报告中用不同段落或标记区分。
- 不暴露实现:回复用户时不提脚本路径、内部文件名、目录探测过程。只说「已通过内部检查」。
- 数据来源标注:从
web_search检索的数据标注来源与检索日期;用户提供的数据标注「用户提供」。 - 材料内冲突:两种说法都保留,标注「材料内冲突,待确认」。
触发边界
| 触发场景 | 用本 skill | 不用本 skill,改用 |
|---|---|---|
| 分析某期财报业绩质量 | 是 | — |
| 拆解收入/利润/现金流变化 | 是 | — |
| 找出财报中的经营异常 | 是 | — |
| 生成财报点评 HTML 报告 | 是 | — |
| 只查某个财务数据点 | 否 | 金融数据搜索 |
| 企业内部 CFO 经营分析 | 否 | 财务运营分析 |
| 个股基本面+估值+技术综合分析 | 否 | 股票综合分析 |
| 解读 K 线图 | 否 | K 线图解析 |
| 复盘用户历史交易 | 否 | 投资复盘 |
| 生成投资汇报 PPT | 衔接 wenku-ppt-finance-company-research | — |
许可
本 skill 使用 LICENSE.txt 中的许可条款。
