Install any skill in seconds. Free to start, no credit card required.
Get Started Free →AI Berkshire skill: 财报精读:一手资料深度解读. Source: skills/earnings-review.md.
.claude/skills/xbtlin-earnings-review/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 158% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 129% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 105% | 0% |
This skill is generated from skills/earnings-review.md so Claude Code and Codex users share one canonical workflow.
$ARGUMENTS as the user's request in the current Codex thread.tools/ in this repository. Prefer running commands from the repository root with paths like python3 tools/financial_rigor.py ...; if the current thread starts outside the repo, locate the actual checkout path first instead of assuming a fixed home-directory path.date command to confirm today's date; treat it as the baseline for "latest" data and state the data cutoff date in the report header. Never assume the current date from training data.AGENTS.md: cross-check financial data, use exact arithmetic tools for valuation/math, and clearly label uncertainty and source gaps.对 $ARGUMENTS 进行财报精读分析。
支持输入格式:公司名 季度,例如:腾讯 2025Q4、PDD 2025年报、美团 最新(默认读取最近一期)
> "我从不看卖方研报,只读原始财报。" —— 李录 > > "我每天读500页。知识就是这样积累的,像复利一样。" —— 巴菲特
大多数AI投研工具依赖二手信息(新闻、研报摘要、数据网站)。但巴菲特和李录的核心能力是读一手资料——年报、季报、电话会纪要。
二手信息的问题:
本Skill直接解读一手资料,关注巴菲特和李录真正会看的内容。
| 等级 | 特征 | 影响 | |------|------|------| | A级 | 获取到完整原文(10-K/年报/电话会纪要) | 正常执行全部步骤 | | B级 | 仅获取到部分原文或第三方汇总 | 标注"非原始来源",降低附注分析权重 | | C级 | 仅有新闻报道和数据网站摘要 | 聚焦核心财务数据变化,跳过附注挖掘,标注"一手资料不足" |
使用 Task 工具启动多个后台 Agent 并行获取以下原始材料:
如果无法获取完整原文,按 skills/financial-data.md 规范使用标准数据源拼凑(美股:macrotrends+stockanalysis;港股:aastocks+macrotrends;A股:东方财富+巨潮资讯;台股:FinMind tools/twstock_data.py+Goodinfo),但必须标注"非原始财报,来自第三方汇总",且关键数据两源误差>1%须标记。
| 指标 | 本期 | 上期 | YoY变化 | 管理层指引 | 是否达标 | |------|------|------|---------|-----------|---------|
必须覆盖:
| 指标 | 本期 | 上期 | 变化 | 关注点 | |------|------|------|------|--------|
必须覆盖:
必须覆盖:
数据验证:使用 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
这是巴菲特和李录花最多时间的部分。不是看数字,是听管理层怎么说。
逐段阅读管理层讨论/电话会发言,标注以下信号:
| 信号类型 | 具体表现 | 示例 | |---------|---------|------| | 🟢 坦诚信号 | 主动承认问题、给出具体原因 | "本季度利润率下降主要因为我们在X领域的投入超出预期" | | 🟢 清晰信号 | 战略表述具体、有量化目标 | "我们计划在未来12个月将X业务的市场份额从15%提升到20%" | | 🔴 模糊信号 | 大量使用"我们相信"、"长期来看"等没有实质内容的话 | "我们对未来充满信心" | | 🔴 转移信号 | 回避直接问题、用其他话题带过 | 被问利润率时转谈收入增速 | | 🔴 归因外部化 | 把问题全归咎于宏观/行业/竞争对手 | "由于宏观环境影响..." |
从上一期财报/电话会中提取管理层的具体承诺,与本期实际情况对比:
| 上期承诺 | 本期兑现情况 | 评价 | |---------|------------|------| | "下半年利润率将恢复到X%" | 实际Y% | ✅达标 / ❌未达标 / ⚠️部分达标 |
段永平:"看一个管理层靠不靠谱,最简单的方法就是看他以前说的话做到了没有。"
从电话会Q&A环节提取分析师最尖锐的问题,以及管理层的回答质量:
| 分析师问题 | 管理层回答 | 回答质量(1-5) | 是否回避 | |-----------|-----------|:------------:|:-------:|
财报附注里藏着管理层不想让你轻易看到的信息:
将本期关键指标放入至少4个季度(或3年年报)的时间序列中:
| 指标 | Q-4 | Q-3 | Q-2 | Q-1 | 本期 | 趋势判断 | |------|-----|-----|-----|-----|------|---------|
重点关注:
| 指标 | 管理层此前指引 | 实际结果 | 偏差 | 解读 | |------|--------------|---------|------|------|
一、核心数据速览(一页表格)
二、本期最重要的3个变化(不超过500字)
三、管理层语气与承诺追踪
四、附注中的隐藏信息
五、关键问题(电话会Q&A精选)
六、与投资论文的关系(如有持仓)
七、结论:这份财报改变了什么?将报告写入 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 {报告文件名}
【准出】 全部通过 → 发布;【打回】 有不通过 → 修正后重审。
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 33,249 | 5,370 | -84% | 1 | 1 | 0% | 4,477 | 3,089 | -31% | 0 | 0 | — |
case-02 | fail→fail | 37,577 | 5,049 | -87% | 1 | 1 | 0% | 6,209 | 3,088 | -50% | 0 | 0 | — |
case-03 | fail→fail | 31,488 | 5,909 | -81% | 1 | 1 | 0% | 5,214 | 3,120 | -40% | 0 | 0 | — |
case-04 | fail→pass | 14,304 | 8,518 | -40% | 1 | 1 | 0% | 2,221 | 4,077 | +84% | 0 | 0 | — |
case-05 | pass→pass | 15,447 | 16,664 | +8% | 1 | 1 | 0% | 2,468 | 5,065 | +105% | 0 | 0 | — |
case-06 | fail→pass | 15,561 | 5,620 | -64% | 1 | 1 | 0% | 2,613 | 3,401 | +30% | 0 | 0 | — |
case-07 | pass→fail | 20,871 | 10,687 | -49% | 1 | 1 | 0% | 2,743 | 3,194 | +16% | 0 | 0 | — |
case-08 | pass→pass | 11,834 | 7,908 | -33% | 1 | 1 | 0% | 1,817 | 4,039 | +122% | 0 | 0 | — |
case-09 | pass→pass | 8,094 | 10,646 | +32% | 1 | 1 | 0% | 1,180 | 4,398 | +273% | 0 | 0 | — |
case-10 | fail→fail | 15,118 | 8,978 | -41% | 1 | 1 | 0% | 2,157 | 4,110 | +91% | 0 | 0 | — |
case-11 | fail→pass | 7,428 | 2,863 | -61% | 1 | 1 | 0% | 1,259 | 3,246 | +158% | 0 | 0 | — |
case-12 | fail→pass | 11,668 | 4,195 | -64% | 1 | 1 | 0% | 1,526 | 3,488 | +129% | 0 | 0 | — |
case-13 | fail→pass | 9,898 | 2,938 | -70% | 1 | 1 | 0% | 1,588 | 3,254 | +105% | 0 | 0 | — |
case-14 | fail→fail | 5,234 | 3,025 | -42% | 1 | 1 | 0% | 853 | 3,050 | +258% | 0 | 0 | — |
case-15 | pass→fail | 16,538 | 3,384 | -80% | 1 | 1 | 0% | 2,517 | 3,250 | +29% | 0 | 0 | — |
case-16 | pass→pass | 12,797 | 13,384 | +5% | 1 | 1 | 0% | 1,896 | 4,290 | +126% | 0 | 0 | — |
case-17 | pass→pass | 5,303 | 3,330 | -37% | 1 | 1 | 0% | 759 | 3,172 | +318% | 0 | 0 | — |
case-18 | pass→pass | 13,968 | 18,880 | +35% | 1 | 1 | 0% | 2,167 | 5,701 | +163% | 0 | 0 | — |
case-19 | pass→fail | 10,209 | 5,374 | -47% | 1 | 1 | 0% | 1,708 | 3,041 | +78% | 0 | 0 | — |
case-20 | fail→fail | 14,196 | 4,680 | -67% | 1 | 1 | 0% | 2,523 | 2,977 | +18% | 0 | 0 | — |
case-21 | fail→fail | 13,185 | 5,258 | -60% | 1 | 1 | 0% | 2,490 | 3,210 | +29% | 0 | 0 | — |
case-22 | fail→fail | 17,710 | 6,191 | -65% | 1 | 1 | 0% | 3,316 | 3,122 | -6% | 0 | 0 | — |
case-23 | fail→pass | 5,291 | 3,275 | -38% | 1 | 1 | 0% | 1,111 | 3,496 | +215% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 15 counted toward the lift figure. The other 8 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +13 percentage points is the difference between those two pass rates over the 15 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.