← 返回 Skill 列表
extension
分类: 数据与分析无需 API Key

历年年报复盘

历年年报复盘:对一家公司连续 N 年(默认 10 年,上市不足 10 年取上市至今)的**年报原文**做纵向深度复盘, 按固定 **13 章框架**输出一份可直接落地的 HTML 单页报告。 核心是「纵向」——看结构怎么变、变化由哪个业务/科目驱动、盈利质量与财报真实性是否经得起三表交叉。 与 `financial-report-teardown`(单期财报横向切片、12 节)互补:teardown 评「当期」,本 skill 评「周期与结构变迁」。 硬约束:数字全部溯源年报原文(PDF→带页码 txt→可回查到「AR2025 PAGE 168」级);所有趋势涨跌必须给出经营成因(引年报原文归因); 趋势/对比/占比全部量化;三表兼顾并做勾稽(勾稽失败不许出稿);0 值分「真零/未披露/不适用」三类; 交付 HTML 单页(light 主题、内联 SVG、涨红跌绿),附溯源表/口径说明/勾稽记录/冲突处置/盲区清单。 提供脚本链:年报 PDF 下载、页码定位、带页码抽取、数据契约校验、派生指标计算、归因组件、SVG/表格渲染、页面装配。 触发词:历年年报复盘、历年年报分析、多年财报复盘、年报纵向对比、十年财报复盘、annual report retrospective、 multi-year review、年报回溯、历史财报梳理、连续年报分析。

person作者: user_61295a23hubcommunity

历年年报复盘 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 · 确定取数边界

  1. 查上市日 → 可获取年报份数 N(例如 2020-09-08 上市 → FY2020–FY2025 共 6 份)。
  2. 用最早那份年报的「財務摘要 / Financial Summary」追溯列向前扩展——港股/ A 股年报摘要常含上市前 3–4 年, 这是把「上市至今 6 年」扩成「9 年序列」的合法一手来源(须注明来自哪份年报第几页、单位为百万)。
  3. 明确最终年度序列 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。

四、硬约束(违反即返工)

  1. 一手优先:年报 PDF 原文 > 结构化接口 > 媒体转述 > AI 摘要。冲突按此取信并登记处置,禁止「两说并陈」。
  2. 量化到底:趋势/对比/占比一律给数,禁止「明显提升」「大幅下降」这类无数字表述。
  3. 涨跌必解释成因,且优先引年报原文归因(写清 AR20XX 的哪一段);年报没解释的,明确写「年报未提供成因,本报告不改口」,并列入盲区。
  4. 0 值三分类:真零(如无商誉、研发全费用化)/ 未披露 / 不适用。不许把未披露写成 0。
  5. 三表兼顾 + 勾稽:损益逐级、税前−税=净利、分部合计=收入、资产=负债+权益、分部业绩对账,全部脚本校验,0 失败才出稿。
  6. 计算脚本化:不心算,保留算式。
  7. 快照当日实取:现价/市值/PE/PB/股息率标注取数日期,双源交叉(Wind + 自选股)。
  8. 不灌水:不写客套话、过渡句、无关铺垫;每章每段要么推进结论要么提供新信息。
  9. 不用情绪词与感叹号,不下买卖结论与目标价。
  10. 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 失败)。