726d35d1ac
* 新增台股FinMind数据源整合:twstock_data.py工具 + 各Skill台股取数规范 - tools/twstock_data.py:FinMind API取数工具(零依赖),支持行情/估值/近5年财务/月营收/股利/代码搜索,输出自带市值验算 - skills/financial-data.md:新增台股数据源优先级(FinMind主+Goodinfo副+MOPS原始),含月营收披露、单季加总、ADR存托比率等台股特别规则 - earnings-review/investment-team:标准数据源清单加入台股(FinMind+Goodinfo) - bottleneck-hunter:估值检查章节指明台股标的统一用twstock_data.py取数 - CLAUDE.md:注意事项补充新台币单位与台股取数入口 - codex-skills 同步再生成 * FinMind token 只存本机:支持 local/finmind_token.txt 读取,gitignore 排除密钥文件 - twstock_data.py 读取 token 优先级:环境变量 FINMIND_TOKEN > local/finmind_token.txt(local/ 已被 gitignore 永久排除),都没有则匿名访问 - .gitignore 新增密钥类通配规则(.env、*_token.txt、*.token),任何位置一律不入库 - financial-data.md 写明 token 只存本机、严禁出现在报告/skill/commit 中 - 已核查:repo 与 git 全部历史中无任何真实 token * twstock_data.py 健壮性修复:无效token给出明确提示,管道截断静默退出 - token 无效/过期时(HTTP 400/401/402/403)不再抛原始 traceback,改为提示检查 FINMIND_TOKEN 或 local/finmind_token.txt - 网络错误统一转为可读的 ConnectionError 信息 - 输出被管道截断(如 | head)时静默退出;BrokenPipeError 是 ConnectionError 子类,处理顺序须在前 --------- Co-authored-by: Claude <noreply@anthropic.com>
219 lines
8.6 KiB
Markdown
219 lines
8.6 KiB
Markdown
# 财报精读:一手资料深度解读
|
||
|
||
对 $ARGUMENTS 进行财报精读分析。
|
||
|
||
**支持输入格式**:`公司名 季度`,例如:`腾讯 2025Q4`、`PDD 2025年报`、`美团 最新`(默认读取最近一期)
|
||
|
||
> "我从不看卖方研报,只读原始财报。" —— 李录
|
||
>
|
||
> "我每天读500页。知识就是这样积累的,像复利一样。" —— 巴菲特
|
||
|
||
## 设计理念
|
||
|
||
大多数AI投研工具依赖二手信息(新闻、研报摘要、数据网站)。但巴菲特和李录的核心能力是**读一手资料**——年报、季报、电话会纪要。
|
||
|
||
二手信息的问题:
|
||
- 被筛选过——分析师选择性呈现对其观点有利的数据
|
||
- 有时滞——等别人消化完,alpha已经没了
|
||
- 缺乏语境——"收入增长15%"脱离了管理层对增长质量的讨论
|
||
|
||
本Skill直接解读一手资料,关注巴菲特和李录真正会看的内容。
|
||
|
||
## 执行流程
|
||
|
||
### 前置步骤:资料可得性评级
|
||
|
||
| 等级 | 特征 | 影响 |
|
||
|------|------|------|
|
||
| A级 | 获取到完整原文(10-K/年报/电话会纪要) | 正常执行全部步骤 |
|
||
| B级 | 仅获取到部分原文或第三方汇总 | 标注"非原始来源",降低附注分析权重 |
|
||
| C级 | 仅有新闻报道和数据网站摘要 | 聚焦核心财务数据变化,跳过附注挖掘,标注"一手资料不足" |
|
||
|
||
### 第一步:获取一手资料
|
||
|
||
使用 Task 工具启动多个后台 Agent **并行**获取以下原始材料:
|
||
|
||
1. **财报原文**:从公司IR页面、SEC EDGAR(美股10-K/10-Q)、港交所披露易(港股)、巨潮资讯网(A股)获取
|
||
2. **业绩电话会纪要/录音**:从 Seeking Alpha、公司IR页面、雪球等获取
|
||
3. **管理层致股东信**(如有年报):完整阅读
|
||
4. **投资者日/分析师日材料**(如近期有)
|
||
|
||
如果无法获取完整原文,按 `skills/financial-data.md` 规范使用标准数据源拼凑(美股:macrotrends+stockanalysis;港股:aastocks+macrotrends;A股:东方财富+巨潮资讯;台股:FinMind `tools/twstock_data.py`+Goodinfo),但必须标注"非原始财报,来自第三方汇总",且关键数据两源误差>1%须标记。
|
||
|
||
### 第二步:核心财务数据提取与验证
|
||
|
||
#### 2.1 收入与利润表
|
||
|
||
| 指标 | 本期 | 上期 | YoY变化 | 管理层指引 | 是否达标 |
|
||
|------|------|------|---------|-----------|---------|
|
||
|
||
必须覆盖:
|
||
- 总收入及分业务/分地区收入拆解
|
||
- 毛利润、毛利率变化
|
||
- 经营利润、经营利润率变化(区分GAAP和Non-GAAP)
|
||
- 净利润(注意非经常性损益的影响)
|
||
- EPS(基本 vs 稀释)
|
||
|
||
#### 2.2 现金流表(巴菲特最看重)
|
||
|
||
| 指标 | 本期 | 上期 | 变化 | 关注点 |
|
||
|------|------|------|------|--------|
|
||
|
||
必须覆盖:
|
||
- 经营性现金流 vs 净利润的比率(>100%为佳,<80%需警惕)
|
||
- 资本开支及其构成(维护性 vs 扩张性)
|
||
- 自由现金流 = 经营现金流 - 资本开支
|
||
- 回购金额、分红金额
|
||
- 现金及等价物期末余额
|
||
|
||
#### 2.3 资产负债表健康度
|
||
|
||
必须覆盖:
|
||
- 现金+短期投资 vs 有息负债
|
||
- 净现金/净负债变化趋势
|
||
- 应收账款周转天数变化(是否在放松信用条件冲收入?)
|
||
- 存货周转天数变化(是否在积压?)
|
||
- 商誉及无形资产占比(是否有减值风险?)
|
||
|
||
**数据验证**:使用 `tools/financial_rigor.py` 对关键数据进行校验:
|
||
|
||
```bash
|
||
# 收入和净利润交叉验证(至少2个来源)
|
||
python3 tools/financial_rigor.py cross-validate \
|
||
--metric "revenue" --values 108.3e9 107.9e9 --sources "公司财报" "Yahoo Finance"
|
||
|
||
# 市值校验
|
||
python3 tools/financial_rigor.py verify-market-cap \
|
||
--price 101 --shares 1.488e9 --reported 1.44e11 --currency USD
|
||
|
||
# 估值指标验算
|
||
python3 tools/financial_rigor.py verify-valuation \
|
||
--price 101 --eps 9.6 --bvps 26.5 --fcf-per-share 10.2
|
||
```
|
||
|
||
### 第三步:管理层讨论精读(MD&A)
|
||
|
||
这是巴菲特和李录花最多时间的部分。不是看数字,是**听管理层怎么说**。
|
||
|
||
#### 3.1 管理层语气分析
|
||
|
||
逐段阅读管理层讨论/电话会发言,标注以下信号:
|
||
|
||
| 信号类型 | 具体表现 | 示例 |
|
||
|---------|---------|------|
|
||
| 🟢 **坦诚信号** | 主动承认问题、给出具体原因 | "本季度利润率下降主要因为我们在X领域的投入超出预期" |
|
||
| 🟢 **清晰信号** | 战略表述具体、有量化目标 | "我们计划在未来12个月将X业务的市场份额从15%提升到20%" |
|
||
| 🔴 **模糊信号** | 大量使用"我们相信"、"长期来看"等没有实质内容的话 | "我们对未来充满信心" |
|
||
| 🔴 **转移信号** | 回避直接问题、用其他话题带过 | 被问利润率时转谈收入增速 |
|
||
| 🔴 **归因外部化** | 把问题全归咎于宏观/行业/竞争对手 | "由于宏观环境影响..." |
|
||
|
||
#### 3.2 承诺追踪
|
||
|
||
从上一期财报/电话会中提取管理层的具体承诺,与本期实际情况对比:
|
||
|
||
| 上期承诺 | 本期兑现情况 | 评价 |
|
||
|---------|------------|------|
|
||
| "下半年利润率将恢复到X%" | 实际Y% | ✅达标 / ❌未达标 / ⚠️部分达标 |
|
||
|
||
**段永平**:"看一个管理层靠不靠谱,最简单的方法就是看他以前说的话做到了没有。"
|
||
|
||
#### 3.3 关键问题识别
|
||
|
||
从电话会Q&A环节提取分析师最尖锐的问题,以及管理层的回答质量:
|
||
|
||
| 分析师问题 | 管理层回答 | 回答质量(1-5) | 是否回避 |
|
||
|-----------|-----------|:------------:|:-------:|
|
||
|
||
### 第四步:附注与隐藏信息挖掘
|
||
|
||
财报附注里藏着管理层不想让你轻易看到的信息:
|
||
|
||
#### 4.1 必查附注项
|
||
|
||
- [ ] **关联交易**:与大股东/关联方的交易条款是否公允?
|
||
- [ ] **股权激励**:期权/RSU的稀释效应有多大?行权价是多少?
|
||
- [ ] **或有负债**:诉讼、担保、承诺等表外风险
|
||
- [ ] **会计政策变更**:是否改变了收入确认方式、折旧年限等?
|
||
- [ ] **分部信息**:不同业务的利润率差异,是否有"好业务补贴坏业务"
|
||
- [ ] **客户/供应商集中度**:前五大客户/供应商占比
|
||
|
||
#### 4.2 异常信号检测
|
||
|
||
- [ ] 应收账款增速 > 收入增速(可能在塞渠道)
|
||
- [ ] 存货增速 > 收入增速(可能在积压)
|
||
- [ ] 经营现金流 < 净利润且差距扩大(利润质量存疑)
|
||
- [ ] 资本化开支突然增加(可能在美化利润)
|
||
- [ ] 非经常性收益占比突然上升
|
||
|
||
### 第五步:与历史数据对比
|
||
|
||
#### 5.1 趋势分析
|
||
|
||
将本期关键指标放入至少4个季度(或3年年报)的时间序列中:
|
||
|
||
| 指标 | Q-4 | Q-3 | Q-2 | Q-1 | 本期 | 趋势判断 |
|
||
|------|-----|-----|-----|-----|------|---------|
|
||
|
||
重点关注:
|
||
- 利润率是在改善还是恶化?
|
||
- 收入增速是在加速还是减速?
|
||
- 现金流质量是在提升还是下降?
|
||
- 资本开支强度是在增加还是减少?
|
||
|
||
#### 5.2 与管理层指引对比
|
||
|
||
| 指标 | 管理层此前指引 | 实际结果 | 偏差 | 解读 |
|
||
|------|--------------|---------|------|------|
|
||
|
||
### 第六步:输出精读报告
|
||
|
||
#### 报告结构
|
||
|
||
```
|
||
一、核心数据速览(一页表格)
|
||
二、本期最重要的3个变化(不超过500字)
|
||
三、管理层语气与承诺追踪
|
||
四、附注中的隐藏信息
|
||
五、关键问题(电话会Q&A精选)
|
||
六、与投资论文的关系(如有持仓)
|
||
七、结论:这份财报改变了什么?
|
||
```
|
||
|
||
#### 结论必须明确回答
|
||
|
||
1. **这份财报是超预期、符合预期、还是低于预期?**(不能说"基本符合"然后列一堆两面话)
|
||
2. **对投资论文的影响**:强化 / 无影响 / 削弱 / 破裂
|
||
3. **需要关注的下一个催化剂是什么?**
|
||
4. **如果你已持有,该加仓/持有/减仓?**
|
||
|
||
### 第七步:保存报告
|
||
|
||
将报告写入 `reports/{公司名}-earnings-{期间}.md`,例如 `reports/腾讯-earnings-2025Q4.md`
|
||
|
||
### 第八步:数据抽检(准出流程)
|
||
|
||
报告写入后,执行数据抽检,通过方可发布:
|
||
|
||
```bash
|
||
# Step 1 — 提取抽检清单
|
||
python3 tools/report_audit.py extract \
|
||
--report reports/{公司名}-earnings-{期间}.md
|
||
|
||
# Step 2 — 对清单每项从可靠信源取数(参见 skills/financial-data.md)
|
||
|
||
# Step 3 — 输出准出/打回判决
|
||
python3 tools/report_audit.py verdict \
|
||
--results '<填好的JSON>' \
|
||
--report {报告文件名}
|
||
```
|
||
|
||
**【准出】** 全部通过 → 发布;**【打回】** 有不通过 → 修正后重审。
|
||
|
||
## 关键原则
|
||
|
||
- **读原文,不读摘要**:尽一切可能获取一手资料
|
||
- **看变化,不看绝对值**:趋势比数字本身重要
|
||
- **听语气,不只听内容**:管理层怎么说和说了什么一样重要
|
||
- **查附注,不只看正文**:魔鬼藏在细节里
|
||
- **给结论,不做汇总**:精读的目的是形成判断,不是复述财报
|