关于 3-statement-model
用于填写并完善三表财务模型模板的技能,面向需要构建或检查财务预测模型的工作者。它强调用公式连接利润表、资产负债表和现金流量表,并分阶段向用户确认。
主要功能
- 01检查工作表结构与单元格用途
- 02用公式填充预测和报表链接
- 03按阶段请求用户确认
- 04检查资产负债平衡与现金勾稽
- 05支持情景分析与信用指标
适用场景
- 01完善三表模型模板
- 02基于历史数据构建预测
- 03检查不同情景下的模型勾稽
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ anthropics/ financial-services --skill 3-statement-model安装后在 Claude Code 中输入/3-statement-model确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/formatting.mdformulas.mdsec-filings.md详细介绍
三表财务模型模板填写
填写并补全集成的财务模型模板,并在利润表、资产负债表和现金流量表之间建立正确的联动关系。
⚠️ 关键原则 — 在填写任何模板之前请先阅读
环境 — Office JS 与 Python:
- 如果在 Excel 内运行(Office 加载项 / Office JS): 直接使用 Office JS。通过
range.formulas = [["=D14*(1+Assumptions!$B$5)"]]写入公式 — 派生单元格绝不要使用range.values。无需单独重算;Excel 会原生计算。使用context.workbook.worksheets.getItem(...)切换工作表标签。 - 如果生成独立的 .xlsx 文件: 使用 Python/openpyxl。写入
ws["D15"] = "=D14*(1+Assumptions!$B$5)",然后在交付前运行recalc.py。 - Office JS 合并单元格陷阱: 不要先调用
.merge()再在合并区域上设置.values— 这会抛出InvalidArgument,因为该区域仍报告其合并前的维度。应先将值写入左上角单元格,然后合并并格式化整个区域:ws.getRange("A1").values = [["INCOME STATEMENT"]]; const h = ws.getRange("A1:G1"); h.merge(); h.format.fill.color = "#1F4E79"; - 以下所有原则在任一环境中同样适用。
用公式而非硬编码(不可协商):
- 每个预测单元格、滚动结转、联动和分类汇总都必须是 Excel 公式 — 绝不是预先计算的值
- 使用 Python/openpyxl 时:写入公式字符串(
ws["D15"] = "=D14*(1+Assumptions!$B$5)"),而不是计算结果(ws["D15"] = 12500) - 唯一应包含硬编码数字的单元格是:(1) 历史实际值,(2) Assumptions 标签页中的假设驱动项
- 如果你发现自己在 Python 中计算某个值并把结果写入单元格 — 停下来。改为写入公式。
- 原因:当场景切换或假设变化时,模型必须能够灵活调整。硬编码会悄无声息地破坏每一项下游完整性检查。
与用户逐步验证:
- 映射模板之后 → 向用户展示你已识别的标签页/部分,并在改动任何单元格之前确认
- 填写历史数据之后 → 向用户展示历史数据块,并确认数值/期间与源数据一致
- 构建 IS 预测之后 → 运行分类汇总检查,向用户展示预测 IS,确认后再进入 BS
- 构建 BS 之后 → 对每个期间向用户展示平衡检查(Assets = L+E),确认后再进入 CF
- 构建 CF 之后 → 向用户展示现金勾稽(CF 期末现金 = BS 现金),确认后再定稿
- 不要端到端地填满整个模型并直接呈现完整成果 — 在每张报表处暂停,展示工作过程,尽早发现错误
格式 — 专业蓝/灰配色(除非模板/用户另有指定,否则为默认)
保持颜色极简。 单元格填充只使用蓝色和灰色。不要引入绿色、黄色、橙色或多种强调色 — 简洁的模型贵在克制。
| 元素 | 填充 | 字体 |
|---|---|---|
| 部分标题(IS / BS / CF 标题) | 深蓝色 #1F4E79 | 白色加粗 |
| 列标题(FY2024A、FY2025E 等) | 浅蓝色 #D9E1F2 | 黑色加粗 |
| 输入单元格(历史数据、假设驱动项) | 浅灰色 #F2F2F2 或白色 | 蓝色 #0000FF |
| 公式单元格 | 白色 | 黑色 |
| 跨标签页链接 | 白色 | 绿色 #008000 |
| 检查行 / 关键合计 | 中蓝色 #BDD7EE | 黑色加粗 |
这就是 3 种蓝色 + 1 种灰色 + 白色。 如果模板有自己的配色方案,则改为遵循模板。
字体颜色表示单元格是什么(输入/公式/链接)。填充颜色表示你身处何处(标题/数据/检查)。
模型结构
识别模板的工作表标签组织方式
不同模板的工作表标签命名习惯和组织方式各不相同。在填充之前,请查看所有工作表标签,以了解模板的结构。以下是常见的工作表标签名称及其通常包含的内容:
| 常见工作表标签名称 | 需查找的内容 |
|---|---|
| IS、P&L、利润表 | 利润表 |
| BS、资产负债表 | 资产负债表 |
| CF、CFS、现金流量 | 现金流量表 |
| WC、营运资本 | 营运资本明细表 |
| DA、D&A、折旧、PP&E | 折旧与摊销明细表 |
| Debt、债务明细表 | 债务明细表 |
| NOL、税项、DTA | 净经营亏损明细表 |
| Assumptions、输入项、驱动因素 | 驱动因素假设与输入项 |
| Checks、审计、验证 | 错误检查仪表板 |
模板检查清单
- 确认模板中存在哪些工作表标签(并非所有模板都包含每一张明细表)
- 记录上述清单未列出的、该模板特有的工作表标签
- 理解工作表标签之间的依赖关系(例如,哪些明细表为三大主表提供数据)
- 在每个工作表标签上定位输入单元格与公式单元格
理解模板结构
在填充模板之前,请先熟悉其现有布局,以确保数据填入正确位置且公式保持完整。
识别行结构
- 找到每个工作表标签顶部的模型标题
- 识别各部分标题及其视觉分隔
- 找到标明 $ millions、%、x 等的单位行
- 记录区分实际值与预测期列的列标题
- 确认期间标签(例如 FY2024A、FY2025E)
- 识别输入单元格与公式单元格(通常通过字体颜色区分)
识别列结构
- 确认最左侧列中的行项目标签
- 核实历史年份列排在预测年份列之前
- 记录分隔历史期与预测期的视觉边框
- 检查所有工作表标签的列顺序是否一致
使用命名区域 模板通常对关键输入项和输出项使用命名区域。在输入数据之前:
- 查看模板中现有的命名区域(Excel 中的"公式 → 名称管理器")
- 常见命名区域包括:收入增长率、成本百分比、关键输出项(净利润、EBITDA、总债务、现金)、情景选择器单元格
- 确保输入数据填入可传递至这些命名区域的单元格中
预测期
- 模板通常从最后一个历史年份起向前预测 5 年
- 核实历史(A)列与预测(E)列已明确分隔
- 确认各列采用财年标记法(例如 FY2024A、FY2025E)
利润率分析
注意:仅当用户要求或模板明确需要时,才应执行以下利润率分析。如未给出要求,请跳过本节。
在利润表(IS)工作表标签上计算并显示盈利能力利润率,以跟踪运营效率并支持同业比较。
应包含的核心利润率
| 利润率 | 公式 | 衡量内容 |
|---|---|---|
| 毛利率 | 毛利润 / 收入 | 定价能力、生产效率 |
| EBITDA 利润率 | EBITDA / 收入 | 核心运营盈利能力 |
| EBIT 利润率 | EBIT / 收入 | 扣除 D&A 后的运营盈利能力 |
| 净利润率 | 净利润 / 收入 | 底线盈利能力 |
带利润率的利润表布局
将利润率百分比直接显示在每个利润行项目下方:
- 毛利率 % 显示在毛利润下方
- EBIT 利润率 % 显示在 EBIT 下方
- EBITDA 利润率 % 显示在 EBITDA 下方
- 净利润率 % 显示在净利润下方
信用指标
注意:仅当用户要求或模板明确需要时,才应执行以下信用分析。如未给出要求,请跳过本节。
在资产负债表(BS)工作表标签上计算并显示信用/杠杆指标,以评估财务健康状况、债务承受能力和契约合规性。
应包含的核心信用指标
| 指标 | 公式 | 衡量内容 |
|---|---|---|
| 总债务 / EBITDA | 总债务 / LTM EBITDA | 杠杆倍数 |
| 净债务 / EBITDA | (总债务 - 现金)/ LTM EBITDA | 扣除现金后的净杠杆 |
| 利息保障倍数 | EBITDA / 利息费用 | 偿债能力 |
| 债务 / 总资本 | 总债务 /(总债务 + 权益) | 资本结构 |
| 债务 / 权益 | 总债务 / 总权益 | 财务杠杆 |
| 流动比率 | 流动资产 / 流动负债 | 短期流动性 |
| 速动比率 | (流动资产 - 存货)/ 流动负债 | 即时流动性 |
信用指标层级检查
验证 Upside 显示最强的信用状况:
- 杠杆:Upside < Base < Downside(越低越好)
- 覆盖:Upside > Base > Downside(越高越好)
- 流动性:Upside > Base > Downside(越高越好)
契约合规跟踪
如果已知债务契约,添加明确的合规检查,将实际指标与契约阈值进行比较。
情景分析(Base / Upside / Downside)
在 Assumptions 选项卡中使用场景切换(下拉菜单),配合 CHOOSE 或 INDEX/MATCH 公式。
| 场景 | 描述 |
|---|---|
| Base Case | 管理层指引或一致预期 |
| Upside Case | 高于指引的增长、利润率扩张 |
| Downside Case | 低于趋势的增长、利润率压缩 |
需要敏感性分析的关键驱动因素:收入增长、毛利率、SG&A %、DSO/DIO/DPO、CapEx %、利率、税率。
场景审计检查:切换开关会切换所有报表,BS 在所有场景中平衡,Cash 能够对平,层级关系成立(Upside > Base > Downside,适用于 NI、EBITDA、FCF、利润率)。
SEC 申报数据提取
如果模板特别要求从 SEC 申报文件(10-K、10-Q)中提取数据,请参阅 references/sec-filings.md 获取详细提取指导。仅在用监管申报文件中的上市公司数据填充模板时,才需要此参考文件。
完成模型模板
本节为完成任何三表财务模型模板提供通用指导,同时保留现有公式并确保数据完整性。
第 1 步:分析模板结构
在输入任何数据之前,彻底审查模板以了解其架构:
识别输入单元格与公式单元格
- 寻找用于区分输入单元格和公式单元格的视觉提示(字体颜色、单元格底纹)
- 常见约定:蓝色字体 = 输入,黑色字体 = 公式,绿色字体 = 指向其他工作表的链接
- 使用 Excel 的追踪引用单元格/从属单元格(公式 → 追踪引用单元格)来了解单元格关系
- 检查可能控制关键输入的命名区域(公式 → 名称管理器)
梳理模板的流转关系
- 确定哪些选项卡向其他选项卡提供数据(例如,Assumptions → IS → BS → CF)
- 记录任何辅助明细表及其与主报表的链接关系
- 在填充之前,记录模板的具体行项目和结构
第 2 步:在不破坏公式的前提下录入数据
数据录入的黄金法则
| 法则 | 说明 |
|---|---|
| 只编辑输入单元格 | 除非有意替换公式,否则切勿覆盖包含公式的单元格 |
| 保留单元格引用 | 复制数据时,使用“粘贴为值”(Ctrl+Shift+V),避免用源格式覆盖公式 |
| 与模板的单位保持一致 | 在录入数据前,确认模板使用的是千、百万还是实际数值 |
| 遵循符号约定 | 遵循模板现有的符号约定(例如,费用为正数或负数) |
| 检查循环引用 | 如果模板使用迭代计算,请确保已开启“启用迭代计算” |
安全的数据录入流程
- 确定专门用于输入的单元格(通常已高亮或标注)
- 先录入历史数据,然后验证公式对这些期间的计算是否正确
- 录入驱动预测计算的假设
- 检查计算输出,确认公式按预期运行
- 如果必须修改公式单元格,请在更改前记录原始公式
处理预置公式
- 如果公式引用了你尚未填充的单元格,在所有输入完成前会出现临时错误(#REF!、#DIV/0!)
- 当公式产生意外结果时,追踪引用单元格以找出缺失或错误的输入
- 未经检查所有工作表中的公式依赖关系,切勿删除行/列
第 3 步:验证公式
公式完整性检查
在依赖模板输出之前,先验证公式是否正常运行:
| 检查类型 | 方法 |
|---|---|
| 追踪引用单元格 | 选择公式单元格 → 公式 → 追踪引用单元格,以验证其引用了正确的输入 |
| 追踪从属单元格 | 验证关键输入是否流向预期的输出单元格 |
| 公式求值 | 使用 公式 → 公式求值 逐步检查复杂计算 |
| 检查硬编码 | 预测公式应引用假设,而不是包含硬编码值 |
| 用已知值测试 | 输入简单的测试值,验证公式是否产生预期结果 |
| 跨工作表一致性 | 确保相同的公式逻辑适用于所有预测期间 |
需要留意的常见公式问题
- 绝对/相对引用混用,导致跨期间复制时结果不正确
- 指向外部文件或已删除区域的链接断开(#REF! 错误)
- 在收入爬坡前的早期期间出现除以零(#DIV/0! 错误)
- 循环引用警告(对于利息计算可能是有意为之)
- 各预测列中的公式不一致(使用 Ctrl+\ 查找差异)
验证跨工作表链接
- 确认出现在多个工作表上的数值是通过链接(而非重复)得到的
- 验证明细表合计与主报表中对应的行项目相符
- 检查期间标签在所有工作表中是否对齐
第 4 步:按工作表进行质量检查
在填充模板后,对每个工作表执行这些验证检查:
利润表(IS)质量检查
- 各历史期间的收入数字与源数据一致
- 所有费用行项目加总等于报告的总计
- 小计项(毛利润、EBIT、EBT、净利润)计算正确
- 税务计算逻辑合理(正确处理亏损)
- 预测驱动因子引用假设标签页(无硬编码)
- 环比变化在方向上是合理的
资产负债表(BS)质量检查
- 每个期间资产 = 负债 + 权益(主要检查)
- 现金余额与现金流量表期末现金一致
- 营运资本账户与支持性明细表勾稽(如适用)
- 留存收益正确结转:期初留存收益 + 净利润 - 股利 +/- 调整 = 期末留存收益
- 债务余额与债务明细表勾稽(如适用)
- 所有资产负债表项目符号正确(资产为正,大多数负债为正)
现金流量表(CF)质量检查
- 经营活动现金流(CFO)顶部的净利润与利润表净利润一致
- 非现金加回项(折旧与摊销、股权激励等)与其源明细表/报表勾稽
- 营运资本变动符号正确(资产增加 = 现金使用 = 负数)
- 资本支出与 PP&E 明细表或固定资产结转勾稽
- 融资活动与 BS 上债务和权益账户的变动勾稽
- 期末现金与资产负债表现金一致
- 期初现金等于上期期末现金
支持性明细表质量检查
- 期初余额等于上期期末余额
- 结转逻辑完整(期初 + 增加 - 减少 = 期末)
- 明细表总计与主表行项目勾稽
- 计算中使用的假设与假设标签页一致
第 5 步:跨报表完整性检查
在验证单个工作表后,确认三大报表已正确集成:
| 检查 | 公式 | 预期结果 |
|---|---|---|
| 资产负债表平衡 | 资产 - 负债 - 权益 | = 0 |
| 现金勾稽 | CF 期末现金 - BS 现金 | = 0 |
| 净利润链接 | IS 净利润 - CF 期初净利润 | = 0 |
| 留存收益 | 期初 RE + 净利润 - 股利 - BS 期末 RE | = 0(根据股权激励/其他项目按需调整) |
第 6 步:最终审查
在认为模型完成之前:
- 切换所有情景(如适用)以验证每种情况下检查均通过
- 审查所有 #REF!、#DIV/0!、#VALUE! 和 #NAME? 错误并解决或记录
- 确认所有输入单元格均已填充(搜索占位符值)
- 验证所有标签页单位一致
- 在进行任何额外修改之前保存一个干净版本
模型验证与审计
本节汇总已完成模板的所有验证检查和审计程序。
核心链接(必须始终成立)
有关所有公式详情,请参见 references/formulas.md。
| 检查 | 公式 | 预期结果 |
|---|---|---|
| 资产负债表平衡 | 资产 - 负债 - 权益 | = 0 |
| 现金勾稽 | CF 期末现金 - BS 现金 | = 0 |
| 现金月度 vs 年度 | 期末现金(月度) - 期末现金(年度) | = 0 |
| 净利润链接 | IS 净利润 - CF 期初净利润 | = 0 |
| 留存收益 | 期初 RE + 净利润 + 股权激励 - 股利 - BS 期末 RE | = 0 |
| 权益融资 | Δ普通股/资本公积(BS) - 权益发行(CFF) | = 0 |
| 第 0 年权益 | 募集权益(第 0 年) - 期初权益资本(第 1 年) | = 0 |
符号约定参考
| 报表 | 项目 | 符号约定 |
|---|---|---|
| CFO | 折旧与摊销、股权激励 | 正数(加回) |
| CFO | ΔAR(增加) | 负数(现金使用) |
| CFO | ΔAP(增加) | 正数(现金来源) |
| CFI | 资本支出 | 负数 |
| CFF | 债务发行 | 正数 |
| CFF | 债务偿还 | 负数 |
| CFF | 股利 | 负数 |
循环引用处理
利息费用会造成循环:利息 → 净利润 → 现金 → 债务余额 → 利息
在 Excel 中启用迭代计算:文件 → 选项 → 公式 → 启用迭代计算。将最大迭代次数设为 100,最大误差设为 0.001。在 Assumptions 标签页中添加熔断开关。
检查类别
第 1 部分:货币一致性
- 货币已在 Assumptions 中识别并记录
- 所有标签页使用一致的货币符号和单位
- 单位行与模型货币匹配
第 2 部分:资产负债表完整性
- 资产 = 负债 + 权益(每个期间)
- 公式:资产 - 负债 - 权益(必须 = 0)
第 3 部分:现金流量表完整性
- 现金与 BS 勾稽(CF 期末现金 = BS 现金)
- 现金月度 vs 年度:期末现金(月度)= 期末现金(年度)
- 净利润与 IS 勾稽(CF 净利润 = IS 净利润)
- D&A 与明细表勾稽
- SBC 与 IS 勾稽
- ΔAR、ΔInventory、ΔAP 与 WC 明细表勾稽
- CapEx 与 DA 明细表勾稽
第 4 部分:留存收益
- RE 滚动检查:期初 RE + 净利润 + SBC - 股利 = 期末 RE
- 显示组成部分明细以便调试
第 5 部分:营运资本
- AR、Inventory、AP 与 BS 勾稽
- DSO、DIO、DPO 合理性检查(超出正常范围时标记)
第 6 部分:债务明细表
- 总债务与 BS 勾稽(流动 + 长期债务)
- 利息计算与 IS 勾稽
第 6b 部分:股权融资
- 股权发行所得与 BS 普通股/APIC 增加额勾稽
- 来自股权的现金增加 = 权益账户增加(必须平衡)
- 股权融资勾稽:Δ普通股/APIC(BS)= 股权发行(CFF)(必须 = 0)
- 第 0 年股权勾稽:募集的股权(第 0 年)= 期初权益资本(第 1 年)
第 6c 部分:NOL 明细表
- 期初 NOL(第 1 年 / 成立时)= 0(新业务以零 NOL 起步)
- NOL 仅在 EBT < 0 时增加(必须实现亏损才能产生 NOL)
- DTA 与 BS 勾稽(NOL 明细表 DTA = BS 递延所得税资产)
- NOL 使用 ≤ EBT 的 80%(2017 年后联邦限制)
- NOL 余额为非负数(不能使用超过可用额度)
- NOL 仅在 EBT < 0 时产生
- 当应税所得 ≤ 0 时,税费 = 0
第 7 部分:情景层级
- 绝对指标:上行 > 基准 > 下行(净利润、EBITDA、FCF)
- 利润率:上行 > 基准 > 下行(GM%、EBITDA%、净利润率)
- 信用指标:上行 < 基准 < 下行(杠杆反向)
第 8 部分:公式完整性
- COGS、S&M、G&A、R&D、SBC 由收入百分比驱动(无硬编码)
- 各预测年度公式一致
- 无 #REF!、#DIV/0!、#VALUE! 错误
第 9 部分:信用指标阈值
- 根据契约阈值将指标标记为绿色/黄色/红色
- 汇总所有红色标记
主检查公式
将所有部分的检查状态汇总为单个主检查:
- 如果所有部分通过 → "✓ 所有检查通过"
- 如果任何部分失败 → "✗ 检测到错误 - 请查看下方"
快速调试工作流
当主状态显示错误时:
- 滚动查找红色高亮的部分
- 确定哪个检查类别有失败项
- 导航到源标签页进行调查
- 修复根本问题
- 返回 Checks 标签页验证是否解决