历年年报复盘 v1.0.0
一、定位与边界
| | financial-report-teardown | 本 skill |
|---|---|---|
| 对象 | 单期财报(季/半年/年报) | 连续 N 年年报 |
| 视角 | 横向切片:这一期怎么样 | 纵向序列:N 年结构怎么变、为什么变 |
| 章节 | 固定 12 节 | 固定 13 章(见下) |
| 关系 | 评「当期」 | 评「周期与结构变迁」,数据可与 teardown 复用避免重复取数 |
不做的事:不给买入/卖出建议、不给目标价;不输出季报/半年报作为主表(用户要求跳过时,最新中报仅用于 TTM 勾稽说明); 不用媒体转述或 AI 摘要替代年报原文。
二、七步工作流
步骤 0 · 加载常驻规则(强制)
涉及投研/财报分析,先加载 investment-research-resident-rules 并执行其 20 条规则,
重点:D1 一手源优先、D2 双源验证、D3 快照当日实取、D5 零值分类、A5 计算脚本化保留算式、A6 TTM 勾稽、V2 交付自检四问、V4 盲区交代、V5 指令拆解。
步骤 1 · 确定取数边界
- 查上市日 → 可获取年报份数 N(例如 2020-09-08 上市 → FY2020–FY2025 共 6 份)。
- 用最早那份年报的「財務摘要 / Financial Summary」追溯列向前扩展——港股/ A 股年报摘要常含上市前 3–4 年, 这是把「上市至今 6 年」扩成「9 年序列」的合法一手来源(须注明来自哪份年报第几页、单位为百万)。
- 明确最终年度序列
Y = [...]与「完整三表年度」「仅有摘要年度」两部分,后者在报告中标注不可得字段。
步骤 2 · 获取年报 PDF(一手)
python scripts/ar_pdf.py fetch --market hkex --code 09633 --years 2020-2025 --out <workdir>/ar
# 或手工:脚本只做下载与校验(%PDF 头 + 字节数),URL 由 ar_pdf.py 内置候选或 --url 传入
取数路径与已知失效点见 references/pdf-acquisition.md(HKEXnews 的 prefix.do 已失效,需改用搜索定位直链)。
步骤 3 · 页码定位 + 带页码抽取
python scripts/ar_pdf.py locate --dir <workdir>/ar # → locate.json(各章节页码)
python scripts/ar_pdf.py extract --dir <workdir>/ar --out <workdir>/txt # → AR2025.txt(带 ===== PAGE n =====)
python scripts/ar_pdf.py show --year 2025 --from 115 --to 122 # 按页取证
所有写进报告的数字必须能回溯到「AR20XX PAGE n」,溯源表逐条登记。
步骤 4 · 填数据契约
cp assets/data_template.py <workdir>/data.py # 然后按年报原文逐字段填
python scripts/validate.py --data <workdir>/data.py # 字段完整性 + 36 项勾稽,失败不许出稿
契约字段字典、缺失表示法(None vs 真零)、单位约定见 references/data-contract.md。
步骤 5 · 派生计算
python scripts/compute.py --data <workdir>/data.py --out <workdir>/metrics.json
脚本化计算全部增速/CAGR/利润率/ROE/周转天数/FCF/净利现金含量/分部占比与利润率/估值指标,
勾稽清单必须 0 失败才继续。派生算式在 metrics.json 的 formulas 字段留痕。
步骤 6 · 写 13 章并装配
cp assets/chapters_skeleton.py <workdir>/chapters.py
# 按 references/chapter-spec.md 逐章填写(每章:lead 一句话结论 → 数据表 → 内联 SVG 图 → 结论框 → 成因解释)
python main.py # 用 build.page(title, body, toc, cover) 装配,见 assets/main_template.py
可复用归因组件在 scripts/analytics.py:seg_attribution(分部增量归因)、margin_bridge(净利率变动桥)、
cfo_allocation(经营现金流去向)、core_earnings(剔非经常项核心盈利)、pe_percentile(估值分位)。
步骤 7 · 自检 + 交付
自检清单见第五节。产物落工作区根目录(不放 _work/),present_files 预览。
三、13 章框架(顺序与标题固定)
| # | 章节 | 一句话要点 | |---|---|---| | 1 | 核心财务摘要(历年全景速览) | 收入/净利/CAGR/ROE 全景表 + 一句话定性 | | 2 | 核心财务数据历年对比分析 | 三表逐项九年对比,每行解释成因 | | 3 | 可视化趋势解读 | 4–6 张内联 SVG,每张配文字结论(不是只贴图) | | 4 | 业务板块收入结构分析 | 分部收入占比迁移 + 增量归因(谁贡献了增量) | | 5 | 业务板块利润结构分析 | 分部业绩口径澄清 + 利润贡献迁移 + 分水岭年份 | | 6 | 利润率与盈利驱动因素深度拆解 | 毛利率/费用率/税率/剔非经常项核心盈利 | | 7 | 资产负债表与现金流质量分析 | 货币资金、有息负债、商誉、在建工程、周转、现金含量 | | 8 | 资本配置与股东回报分析 | CFO 去向分配、capex、分红、回购、募资使用 | | 9 | 历年关键事件与战略里程碑复盘 | 分期(阶段命名 + 每期特征数据) | | 10 | 行业同业对标分析 | 3–6 家可比,量化指标横向 + 估值溢价归因 | | 11 | 核心风险因素汇总分析 | 三级分类:已发生可量化 / 未发生可估算 / 存在难量化 | | 12 | 估值与业绩匹配度分析 | PE/PB 历史分位、PEG、EV/EBIT,匹配度结论 | | 13 | 核心投资逻辑总结与待验证指标 | 逻辑三句 + 支柱 + 待验证指标(含阈值与触发后结论变化) |
附录(必附):A 数据溯源表(每项数字 → AR20XX PAGE n);B 口径说明;C 勾稽校验记录;D 冲突处置(丢弃了什么、为什么);E 数据盲区清单。
逐章必答问题、数据字段、常见坑见 references/chapter-spec.md。
四、硬约束(违反即返工)
- 一手优先:年报 PDF 原文 > 结构化接口 > 媒体转述 > AI 摘要。冲突按此取信并登记处置,禁止「两说并陈」。
- 量化到底:趋势/对比/占比一律给数,禁止「明显提升」「大幅下降」这类无数字表述。
- 涨跌必解释成因,且优先引年报原文归因(写清 AR20XX 的哪一段);年报没解释的,明确写「年报未提供成因,本报告不改口」,并列入盲区。
- 0 值三分类:真零(如无商誉、研发全费用化)/ 未披露 / 不适用。不许把未披露写成 0。
- 三表兼顾 + 勾稽:损益逐级、税前−税=净利、分部合计=收入、资产=负债+权益、分部业绩对账,全部脚本校验,0 失败才出稿。
- 计算脚本化:不心算,保留算式。
- 快照当日实取:现价/市值/PE/PB/股息率标注取数日期,双源交叉(Wind + 自选股)。
- 不灌水:不写客套话、过渡句、无关铺垫;每章每段要么推进结论要么提供新信息。
- 不用情绪词与感叹号,不下买卖结论与目标价。
- HTML 交付:light 主题、中国配色(涨红
#c0392b/跌绿#1e8449)、内联 SVG(禁 CDN 与 JS 图表库)、封面含行情快照。
五、交付自检(V2 四问 + 本 skill 三项)
- [ ] 每个关键数字标了来源(AR20XX PAGE n 或接口名+日期)?
- [ ] 0 值做了三分类?
- [ ] 快照数字是当日实取的?
- [ ] 数据缺口明确列出(没静默跳过、没用旧数字填空)?
- [ ] 13 章 + 附录齐全、顺序正确、无空白无「待补」?
- [ ] 勾稽 0 失败,且勾稽表进了附录?
- [ ] 每张图下面有文字结论(不是只贴图)?
六、目录
SKILL.md
scripts/ar_pdf.py 年报 PDF 下载 / 页码定位 / 带页码抽取 / 按页取证
scripts/validate.py 数据契约完整性 + 勾稽校验(失败即拦)
scripts/compute.py 通用派生指标(按 Y 与分部数自动泛化)
scripts/analytics.py 归因组件:分部增量、利润率桥、CFO 去向、核心盈利、PE 分位
scripts/build.py SVG(柱/线/堆叠)+ 表格 + 结论框 + CSS + 页面装配
references/chapter-spec.md 13 章逐章规范(必答问题/字段/坑)
references/data-contract.md 数据契约字段字典与缺失表示
references/pdf-acquisition.md 各市场年报取数路径与失效点
references/recon-rules.md 勾稽项清单 + 分部/现金流口径陷阱
assets/data_template.py 空数据契约
assets/chapters_skeleton.py 13 章函数骨架
assets/main_template.py 装配入口
2026-09-10 由农夫山泉 FY2017–FY2025 复盘实战沉淀(该次交付:221KB HTML、13 章 + 附录、40 表、11 图、36 项勾稽 0 失败)。
Scan to join WeChat group