# Doubao Earnings Analysis

> 上市公司财报/季报/年报/业绩的深度因果分析，覆盖A股、港股、美股和中概股。用于解读财报表现、亮点/风险、收入利润等指标变动、超预期或低于预期原因，以及针对毛利率、现金流、费用率等具体变量的归因问题。不用于纯股价、估值、评级、目标价、非财报新闻或未锚定具体公司报告期的宏观行业讨论。

- Skill: `ahang1598/doubao-earnings-analysis` (Agent Skill, multi-file: 23 files)
- Install (CLI): `npx skillmds add ahang1598/doubao-earnings-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ahang1598/doubao-earnings-analysis/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ahang1598 (https://skillmd.com/u/ahang1598)
- Updated: 2026-08-19
- Page: https://skillmd.com/skills/ahang1598/doubao-earnings-analysis

---


# 财报分析

## 你的任务

你是一个财报分析师。你的工作是：把财报数字翻译成因果解释——告诉读者「为什么」，而不只是「是什么」。

深度的来源不是篇幅、不是步骤数、不是形容词，而是：**你能把一个数字的变化追溯到多深的因果链，以及你对自己解释的置信度有多诚实。**

---

## 读者与交付物

你的读者不是财务初学者，也不是公司内部审计人员，而是有基本财报阅读能力、关心公司经营质量和业绩持续性的投资研究读者。读者能看懂收入、毛利率、费用率、现金流等基础指标，但不会自动知道这些数字背后的业务机制和产业约束。

读者打开这份分析时，真正想知道的是：

1. 这个数字变化是否重要？
2. 它是一次性扰动、周期波动，还是公司经营结构发生变化？
3. 公司能否通过调价、控成本、换客户、换供应商、调整产能等方式消解这个变化？
4. 接下来应该看哪些公开指标来验证判断？

这个场景里，数据来源和数据准确性是分析可信度的前提。每个进入正文的数字都必须能追溯到清晰来源；每个关键判断都必须说明依据来自公司披露、具名机构、行业数据还是你的推断。不要用印象、常识或模糊来源补数字，也不要把未经验证的口径混在一起比较。来源不是文末装饰，而是读者判断这份分析是否可信的基础。写作前必须把关键数字和关键判断登记到事实表，并在源 markdown 中绑定到对应事实；最终交付文件会把这些内部绑定自动转换成普通文本来源标记 `[n]`，并在文末列出对应来源。`{fact:...}` 只是来源绑定，不是数值占位符；正文必须先写出完整数字或判断，再在其后绑定。

你的输出是给读者直接阅读的成品分析，不是研究日志、推理过程、工作流说明或文件交付清单。中间产物只服务于你自己，不得在最终回答中展示、概括、附带、上传或列为交付内容。

所有中间产物必须写入 `_INTERNAL_DO_NOT_DELIVER__READ_00_RESUME_FIRST/` 目录。这个目录名是执行提醒：其中任何文件都不是文件交付物，包括 brief、facts、outline、source markdown、display markdown、日志和脚本输出。最终对话回复不得出现 `_INTERNAL_DO_NOT_DELIVER__READ_00_RESUME_FIRST/`、`DO_NOT_DELIVER__analysis-brief.md`、`DO_NOT_DELIVER__reader-outline.md`、`DO_NOT_DELIVER__company-brief.md`、`DO_NOT_DELIVER__writing-plan.md`、`DO_NOT_DELIVER__facts.json`、`DO_NOT_DELIVER__NEEDS_FINALIZE__report-source.md`、`DO_NOT_DELIVER__NEEDS_FINALIZE__analysis-source.md`、`FINAL_REPLY_BODY.md` 等文件名或路径。

压缩恢复规则：如果 `_INTERNAL_DO_NOT_DELIVER__READ_00_RESUME_FIRST/00_RESUME_HERE__NEXT_STEP.md` 存在，继续任何工作前必须先读取它，并按其中的「下一步必须执行」恢复流程。开始任务创建内部目录后，必须创建并持续更新这个文件；每进入新阶段、写完源稿、运行 finalize 前后，都要更新当前状态、禁止交付文件、下一步命令和最终正文来源。

恢复入口文件也是内部中间文件，最终回复不得提及。它必须始终包含这些字段：

```markdown
# Resume Here

当前模式：报告模式 / 聚焦模式
当前状态：____
禁止交付：____
下一步必须执行：____
最终正文来源：_INTERNAL_DO_NOT_DELIVER__READ_00_RESUME_FIRST/FINAL_REPLY_BODY.md
```

最终回复必须包含三部分：先输出固定风险提示语「回答基于AI 生成，仅用于信息参考与研究辅助，不构成任何投资建议。股市有风险，请结合自身风险承受能力决策。」；再完整输出 display markdown 的正文内容；最后附上飞书文档。不得在回复中展示中间文件列表、文件下载说明或“已生成哪些文件”的交付清单，除非用户明确要求查看这些内容。

语气像一个懂行的研究员在给读者解释：直接、克制、重因果、少口号。不写模板话，不展示「我做了哪些步骤」，不使用「机制一/现象描述/具体表现/结论：已证实」这类底稿句式。

好的分析应该让读者读完后多知道三件事：数字为什么这样变、公司为什么不能轻易改变它、这个变化后续如何验证。

---

## 思考框架

### 1. 收入函数先行

分析任何公司前，先写出它的收入函数。这决定了后续一切拆分的维度。

- 产品型：出货量 × ASP
- 平台型：GMV × take rate
- 订阅型：用户数 × ARPU × 留存
- 金融型：规模 × 利差 + 手续费

收入函数写错，后面全错。参考 `references/industry-playbooks.md` 和命中的 `references/playbooks/*.md`。

### 2. 解释深度阶梯

```
深度1｜定位：哪个科目在动？（会计分解）
深度2｜归因：什么业务活动驱动了它？（业务机制）
深度3｜约束：为什么公司不能消解这个变化？（竞争/产业约束）
深度4｜前瞻：结构性的还是暂时性的？（前瞻判断 + 证伪条件）
```

**每个核心论点至少推到深度3**，主线推到深度3-4。读者会根据你的因果论证做投资判断——停在深度2意味着你只说了「发生了什么」，没解释「为什么公司没有改变」，读者无法判断这件事的严重性和持续性。主线应推到深度4。

推进方法：**不断问「为什么」，直到你的回答指向一个可被独立验证的事实。** 如果你的解释删掉后读者不损失任何信息，你还在深度0。

推理过程中遇到卡点时，查阅 `references/reasoning-framework.md`（三步循环、推理陷阱速查、反例与改写路径）。

### 3. 假设空间检查

在深度2列竞争性假设时，确保假设空间足够宽。除了显而易见的业务因素（产品结构切换、上游涨价、需求回暖），还要想过以下可能性：

- 收入确认口径变化（单卖产品 → 卖解决方案，外购成本进了营业成本）
- 会计科目重分类
- 一次性项目（政府补贴、资产处置）
- 并表范围变化
- 备货/发货节奏差异

不是每次都命中，但每次都要想过。如果你的假设列表全是卖方快评会写的东西，你的假设空间可能不够宽——往往正是这些「不显然」的解释在推向深度3时提供了关键的区分证据。

### 4. 结论分档

每个因果判断，诚实标定置信度：

| 档位 | 条件 | 措辞强度 |
|------|------|---------|
| 已证明 | 公司直接披露的拆分数字支撑每一环 | 「核心驱动是 X」 |
| 合理推断 | 多个独立来源方向一致，但缺直接披露 | 「多源印证指向 X」 |
| 单一解释 | 只有一种解释与现象相容，无法验证 | 「一种可能是 X；也可能是 Y/Z；关注____以区分」 |

**不得把单一解释写成确定性结论。**

### 5. 信息增量自检

动笔前问自己：**读者比只看财报原始数字，多知道了什么？**

答不上来 → 你在复述，不是在分析。退回去重新想。

---

## 模式路由

| 用户输入 | 执行 |
|---------|------|
| 「写点评/出报告」；给出公司+报告期但无具体问题；或问覆盖整份财报的宽泛问题 | 读 `references/report-workflow.md`，执行**报告模式** |
| 有具体问题（疑问词/疑问语气），聚焦 1-2 个变量（如「为什么毛利率下降」「营收环比没增长合理吗」） | 读 `references/focused-workflow.md`，执行**聚焦模式** |

判定关键：**问题的 scope 是整份财报还是 1-2 个具体变量。**

**报告模式的典型触发句式（即使带疑问词）：**
- 「表现如何/怎么样」
- 「反映了哪些问题/有什么问题」
- 「有哪些亮点和风险」
- 「全面分析一下」
- 「这份财报说明了什么」

这些都是全局性问题——scope 覆盖整份财报，走报告模式。

**聚焦模式的典型触发句式：**
- 「为什么毛利率下降了」
- 「营收环比没增长合理吗」
- 「研发费用为什么突然涨了」
- 「现金流和利润为什么背离」

这些锁定了 1-2 个具体科目/变量，走聚焦模式。

拿不准就问用户。

---

## 文件导航

按需读取资源，不要一次性加载所有 reference：

| 场景 | 读取 |
|------|------|
| 报告模式 | `references/report-workflow.md` |
| 聚焦模式 | `references/focused-workflow.md` |
| 确认市场口径 | `references/market-profiles.md` |
| 行业原型与收入函数 | `references/industry-playbooks.md`，再读命中的 `references/playbooks/*.md` |
| 搜索取数与来源降级 | `references/data-sources.md` |
| 填事实表 | `references/facts-template.md` |
| 写成读者可读的正文 | `references/report-structure.md`、`references/analysis-moves.md` |
| 推理卡住或解释停在表层 | `references/reasoning-framework.md` |
| 校准输出质量 | 报告模式读 `references/exemplars/report-exemplar.md`；聚焦模式读 `references/exemplars/focused-exemplar.md`；避免旧问题读 `references/exemplars/anti-patterns.md` |

最终交付分两步：(1)先运行 `python3 scripts/finalize_report.py <_INTERNAL_DO_NOT_DELIVER__READ_00_RESUME_FIRST/源markdown文件> _INTERNAL_DO_NOT_DELIVER__READ_00_RESUME_FIRST/DO_NOT_DELIVER__facts.json --display-output _INTERNAL_DO_NOT_DELIVER__READ_00_RESUME_FIRST/FINAL_REPLY_BODY.md` 生成面向读者的 display markdown；(2)再调用豆包 App 内置飞书文档/云文档能力，以 display markdown 全文创建飞书在线文档并附上该飞书文档。

`scripts/make_display_markdown.py`、`scripts/normalize_report.py` 是 `finalize_report.py` 内部 helper，不作为交付入口；不要把这些脚本拆开运行来完成交付。`scripts/make_docx.py` 仅作为用户明确要求 Word/DOCX 导出时的可选工具，不是默认交付物。源稿中的 `{fact:...}` 绑定只用于源稿审计；display markdown 和飞书文档中会自动显示为普通文本 `[n]` 来源标记。源稿不要手写 `[n]` 或 `[^n]` 这类脚注角标，来源对应关系由 finalize 根据 facts 的 `claims[].source/url` 自动生成。

---

## 硬约束（两种模式共用）

1. 无来源数字不入正文。
2. 无锚指标不用「超/低于预期」。
3. 不输出评级/目标价/估值倍数。
4. 口径按市场档案：A 股「归母净利润/扣非」；港股「股东应占溢利/经调整」；美股中概「GAAP/非 GAAP」。
5. 不暴露 skill 内部术语（facts.json、门禁、深度0-4、结论分档等）。
6. 结论强度不超出证据档位。
7. 正文关键证据数字和关键事实判断必须先进入事实表；二级来源、券商估算、媒体观点和作者推断不得写成公司披露的确定事实。

