跳到主要内容

三表模型

在 Excel 中构建完全集成的三表模型(利润表、资产负债表、现金流量表),包含营运资本日程、折旧摊销滚动、债务日程以及使现金和留存收益平衡的填充项。配合 excel-author 使用。

技能元数据

来源可选 — 通过 hermes skills install official/finance/3-statement-model 安装
路径optional-skills/finance/3-statement-model
版本1.0.0
作者Anthropic(由 Nous Research 适配)
许可证Apache-2.0
平台linux, macos, windows
标签finance, three-statement, income-statement, balance-sheet, cash-flow, excel, openpyxl, modeling
相关技能excel-author, pptx-author, dcf-model, lbo-model

参考:完整 SKILL.md

信息

以下是当此技能被触发时 Hermes 加载的完整技能定义。这是 Agent 在技能激活时看到的指令。

环境

此技能假定无头 openpyxl — 你将在磁盘上生成一个 .xlsx 文件。 遵循 excel-author 技能关于单元格着色、公式、命名范围和敏感性表格的约定。 在交付前重新计算:python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx

三表财务模型模板完成

完成并填充集成的财务模型模板,确保利润表、资产负债表和现金流量表之间的正确链接。

⚠️ 关键原则 — 在填充任何模板之前请阅读

公式而非硬编码(不可协商):

  • 每个预测单元格、滚动、链接和小计都必须是 Excel 公式——绝不能是预先计算的值
  • 使用 Python/openpyxl 时:写入公式字符串(ws["D15"] = "=D14*(1+Assumptions!$B$5)"),而不是计算结果(ws["D15"] = 12500
  • 唯一应该包含硬编码数字的单元格是:(1) 历史实际值,(2) 假设标签中的假设驱动因素
  • 如果你发现自己用 Python 计算值并写结果到单元格——停止。请改为写入公式。
  • 原因:当场景切换或假设变化时,模型必须能够灵活调整。硬编码会静默破坏所有下游完整性检查。

逐步与用户核对:

  1. 在映射模板后 → 向用户展示你识别出的标签/章节,并在触及任何单元格前确认
  2. 在填充历史数据后 → 向用户展示历史数据块并确认数值/期间与源数据一致
  3. 在构建利润表预测后 → 运行小计检查,向用户展示预测的利润表,确认后再进入资产负债表
  4. 在构建资产负债表后 → 向用户展示每个期间的平衡检查(资产 = 负债 + 权益),确认后再进入现金流量表
  5. 在构建现金流量表后 → 向用户展示现金核对(现金流量表期末现金 = 资产负债表现金),确认后再完成最终模型
  6. 不要一次性从头到尾填充整个模型然后直接展示 — 在每个表处停顿,展示工作过程,尽早发现错误

格式规范 — 专业蓝色/灰色调色板(默认,除非模板或用户另有指定)

保持颜色简洁。仅使用蓝色和灰色填充单元格。不要引入绿色、黄色、橙色或多种强调色——整洁的模型使用克制。

元素填充色字体
板块标题(利润表/资产负债表/现金流量表标题)深蓝色 #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净营业亏损明细表
假设、输入、驱动因素假设驱动因素和输入
检查、审计、验证错误检查面板

模板审查清单

  • 确定模板中存在的各个工作表(并非所有模板都包含每张明细表)
  • 记录不在上述列表中、但模板特有的工作表
  • 理解工作表之间的依赖关系(例如,哪些明细表流入主要报表)
  • 在每张工作表上定位输入单元格与公式单元格

理解模板结构

填充模板前,请先熟悉其现有的布局,确保数据填入正确位置且公式保持完整。

识别行结构

  • 找到每张工作表顶部的模型标题
  • 识别板块标题及其视觉分隔方式
  • 找到标明单位行(如百万美元、%、倍等)
  • 注意区分实际数与预估期的列标题
  • 确认期间标签(例如 FY2024A、FY2025E)
  • 识别输入单元格与公式单元格(通常通过字体颜色区分)

识别列结构

  • 确认最左列的明细项标签
  • 验证历史年份在预估年份之前
  • 注意分隔历史期与预估期的视觉边框
  • 检查所有工作表的列顺序是否一致

处理命名区域 模板通常为关键输入和输出使用命名区域。在输入数据前:

  • 检查模板中现有的命名区域(Excel 中:公式 → 名称管理器)
  • 常见的命名区域包括:收入增长率、成本百分比、关键输出(净利润、EBITDA、总债务、现金)、方案选择器单元格
  • 确保输入数据填入那些能供给这些命名区域的单元格中

预测期间

  • 模板通常从最后一个历史年份起预测未来 5 年
  • 确认历史(A)与预测(E)列已清晰分隔
  • 确认列使用财年标记(例如 FY2024A、FY2025E)

利润率分析

注意:仅当用户提示或模板明确要求时,才应执行以下利润率分析。若无提示,请跳过此部分。

在利润表(IS)标签页中计算并显示盈利利润率,以跟踪运营效率并支持同行比较。

需包含的核心利润率

利润率公式衡量指标
毛利率毛利润 / 收入定价能力、生产效率
EBITDA 利润率EBITDA / 收入核心运营盈利能力
EBIT 利润率EBIT / 收入折旧摊销后的运营盈利能力
净利润率净利润 / 收入最终盈利水平

含利润率的利润表布局

在每个利润项目下方直接显示利润率百分比:

  • 毛利率 % 显示在毛利润下方
  • EBIT 利润率 % 显示在 EBIT 下方
  • EBITDA 利润率 % 显示在 EBITDA 下方
  • 净利润率 % 显示在净利润下方

信用指标

注意:仅当用户提示或模板明确要求时,才应执行以下信用分析。若无提示,请跳过此部分。

在资产负债表(BS)标签页中计算并显示信用/杠杆指标,以评估财务健康状况、债务容量及契约合规性。

需包含的核心信用指标

指标公式衡量指标
总债务 / EBITDA总债务 / LTM EBITDA杠杆倍数
净债务 / EBITDA(总债务 - 现金) / LTM EBITDA扣除现金后的杠杆
利息覆盖倍数EBITDA / 利息费用偿债能力
债务 / 总资本总债务 / (总债务 + 权益)资本结构
债务 / 权益总债务 / 总权益财务杠杆
流动比率流动资产 / 流动负债短期流动性
速动比率(流动资产 - 存货) / 流动负债即时流动性

信用指标层级检查

验证乐观情景显示最强信用状况:

  • 杠杆:乐观 < 基准 < 悲观(越低越好)
  • 覆盖倍数:乐观 > 基准 > 悲观(越高越好)
  • 流动性:乐观 > 基准 > 悲观(越高越好)

债务契约合规跟踪

如果已知债务契约,添加明确的合规检查,将实际指标与契约阈值进行比较。

情景分析(基准 / 乐观 / 悲观)

在假设标签页中使用情景切换(下拉菜单),配合 CHOOSE 或 INDEX/MATCH 公式。

情景描述
基准情景管理层指引或一致预期
乐观情景超指引增长、利润率扩张
悲观情景低于趋势增长、利润率压缩

需敏感化的关键驱动因素:收入增长、毛利率、销售管理费用占比、DSO/DIO/DPO、资本支出占比、利率、税率。 场景审计检查:所有场景的切换开关、所有场景下的资产负债表平衡、现金对账、层级关系成立(净利润、EBITDA、自由现金流、利润率:乐观 > 基准 > 悲观)。

SEC 文件数据提取

如果模板专门需要从 SEC 文件(10-K、10-Q)中提取数据,请参阅 references/sec-filings.md 获取详细的提取指南。仅当需要使用上市公司监管文件中的数据填充模板时才需要此参考。

完成模型模板

本节提供完成任何三表财务模型模板的一般指导,同时保留现有公式并确保数据完整性。

第一步:分析模板结构

在输入任何数据之前,彻底审查模板以了解其架构:

识别输入单元格与公式单元格

  • 寻找视觉线索(字体颜色、单元格底纹)来区分输入单元格和公式单元格
  • 常见惯例:蓝色字体 = 输入,黑色字体 = 公式,绿色字体 = 指向其他工作表的链接
  • 使用 Excel 的追踪引用单元格/从属单元格(公式 → 追踪引用单元格)来理解单元格关系
  • 检查可能控制关键输入的命名范围(公式 → 名称管理器)

映射模板的数据流

  • 识别哪些选项卡为其他选项卡提供数据(例如,假设 → 利润表 → 资产负债表 → 现金流量表)
  • 注意任何辅助明细表及其与主要报表的关联
  • 在填充之前记录模板的特定行项目和结构

第二步:在不破坏公式的情况下填充数据

数据输入黄金法则

规则描述
仅编辑输入单元格除非故意替换公式,否则切勿覆盖包含公式的单元格
保留单元格引用复制数据时,使用“粘贴数值”(Ctrl+Shift+V)以避免将源格式的公式覆盖掉
匹配模板的单位在输入数据之前,确认模板使用的是千、百万还是实际值
遵循符号约定遵循模板现有的符号约定(例如,费用为正还是负)
检查循环引用如果模板使用迭代计算,请确保已启用“启用迭代计算”

安全数据输入流程

  1. 识别专门用于输入的精确单元格(通常已高亮或标记)
  2. 首先输入历史数据,然后验证这些期间的公式是否正确计算
  3. 输入驱动预测计算的假设参数
  4. 检查计算出的输出结果,确认公式按预期工作
  5. 如果必须修改公式单元格,请在进行更改前记录原始公式

处理预建公式

  • 如果公式引用了尚未填充的单元格,请预计会出现临时错误(#REF!、#DIV/0!),直到所有输入完成
  • 当公式产生意外结果时,使用追踪引用单元格来识别缺失或错误的输入
  • 在未检查所有选项卡中的公式依赖关系之前,切勿删除行/列

第 3 步:验证公式

公式完整性检查

在依赖模板输出之前,请验证公式是否正常运行:

检查类型方法
追踪引用单元格选中公式单元格 → 公式 → 追踪引用单元格,验证其引用了正确的输入
追踪从属单元格验证关键输入是否流向预期的输出单元格
公式求值使用“公式 → 公式求值”逐步检查复杂计算过程
检查硬编码预测公式应引用假设,不应包含硬编码值
用已知值测试输入简单的测试值,验证公式是否产生预期结果
跨表一致性确保所有预测期间应用相同的公式逻辑

需要注意的常见公式问题

  • 混合使用绝对/相对引用导致跨期间复制时结果错误
  • 链接到外部文件或已删除区域的中断链接(#REF! 错误)
  • 在收入增长前的早期阶段出现除零错误(#DIV/0! 错误)
  • 循环引用警告(利息计算中可能是有意为之)
  • 预测列之间的公式不一致(使用 Ctrl+\ 查找差异)

验证跨表链接

  • 确认出现在多个工作表上的值是链接的(而非重复)
  • 验证附表合计与主报表上的对应行项目一致
  • 检查所有工作表的期间标签是否对齐

第 4 步:按工作表进行质量检查

填充模板后,对每个工作表执行以下验证检查:

利润表(IS)质量检查

  • 历史期间的收入数据与源数据匹配
  • 所有费用行项目合计等于报告总额
  • 小计(毛利润、EBIT、EBT、净利润)计算正确
  • 税款计算逻辑合理(正确处理亏损情况)
  • 预测驱动因素引用假设表(无硬编码)
  • 期间变化的方向性合理

资产负债表(BS)质量检查

  • 每个期间资产 = 负债 + 权益(主要检查项)
  • 现金余额与现金流量表期末现金一致
  • 营运资本项目与支持性附表一致(如适用)
  • 留存收益正确滚动:期初留存收益 + 净利润 - 股息 +/- 调整 = 期末留存收益
  • 债务余额与债务附表一致(如适用)
  • 所有资产负债表项目符号正确(资产为正,大多数负债为正)

现金流量表(CF)质量检查

  • 经营活动现金流顶部的净利润与利润表净利润一致
  • 非现金加回项(折旧摊销、股权激励等)与其来源附表/报表一致
  • 营运资本变动符号正确(资产增加 = 现金使用 = 负值)
  • 资本支出与固定资产附表或固定资产滚动表一致
  • 融资活动与资产负债表上债务和权益账户的变动一致
  • 期末现金与资产负债表现金一致
  • 期初现金等于上一期期末现金

支持性附表质量检查

  • 期初余额等于上一期期末余额
  • 滚动逻辑完整(期初 + 增加 - 减少 = 期末)
  • 附表合计与主报表行项目一致
  • 计算中使用的假设与假设表一致

步骤 5:跨报表完整性检查

验证完各个工作表后,确认三张报表已正确整合:

检查项公式预期结果
资产负债表平衡资产 - 负债 - 所有者权益= 0
现金勾稽现金流量表期末现金 - 资产负债表现金= 0
净利润链接利润表净利润 - 现金流量表期初净利润= 0
留存收益期初留存收益 + 净利润 - 股利 - 资产负债表期末留存收益= 0(根据需要调整股份支付/其他项目)

步骤 6:最终审查

在认为模型完成之前:

  • 切换所有场景(如适用),验证每个场景下的检查项是否通过
  • 检查所有 #REF!、#DIV/0!、#VALUE! 和 #NAME? 错误,并解决或记录
  • 确认所有输入单元格已填写(搜索占位值)
  • 验证所有标签页的单位一致
  • 在进行任何额外修改前,保存一个干净的版本

模型验证与审计

本节汇总了已完成模板的所有验证检查和审计流程。

核心勾稽关系(必须始终成立)

所有公式详情请参见 references/formulas.md

检查项公式预期结果
资产负债表平衡资产 - 负债 - 所有者权益= 0
现金勾稽现金流量表期末现金 - 资产负债表现金= 0
现金月度与年度期末现金(月度)- 期末现金(年度)= 0
净利润链接利润表净利润 - 现金流量表期初净利润= 0
留存收益期初留存收益 + 净利润 + 股份支付 - 股利 - 资产负债表期末留存收益= 0
权益融资普通股/额外实缴资本变动(资产负债表)- 权益发行(筹资活动现金流量)= 0
第 0 年权益第 0 年筹集的权益 - 第 1 年期初权益资本= 0

符号约定参考

报表项目符号约定
经营活动现金流量折旧摊销、股份支付正数(加回)
经营活动现金流量应收账款增加负数(现金使用)
经营活动现金流量应付账款增加正数(现金来源)
投资活动现金流量资本支出负数
筹资活动现金流量债务发行正数
筹资活动现金流量债务偿还负数
筹资活动现金流量股利负数

循环引用处理

利息费用会产生循环:利息 → 净利润 → 现金 → 债务余额 → 利息

在 Excel 中启用迭代计算:文件 → 选项 → 公式 → 启用迭代计算。将最大迭代次数设置为 100,最大误差设置为 0.001。在假设标签页中添加一个断路器开关。

检查类别

第 1 节:货币一致性

  • 在假设中识别并记录货币
  • 所有标签页使用一致的货币符号和量级
  • 单位行与模型货币匹配

第 2 节:资产负债表完整性

  • 资产 = 负债 + 所有者权益(每个期间)
  • 公式:资产 - 负债 - 所有者权益(必须 = 0)

第 3 节:现金流量表完整性

  • 现金与资产负债表勾稽(现金流量表期末现金 = 资产负债表现金)
  • 现金月度与年度:期末现金(月度)= 期末现金(年度)
  • 净利润与利润表勾稽(现金流量表净利润 = 利润表净利润)
  • 折旧摊销与折旧摊销表勾稽
  • 股份支付与利润表勾稽
  • 应收账款变动、存货变动、应付账款变动与营运资本表勾稽
  • 资本支出与折旧摊销表勾稽 第 4 节:留存收益
  • RE 滚动检查:期初 RE + 净利润 + 股份薪酬 - 股息 = 期末 RE
  • 展示各组成部分的明细以便调试

第 5 节:营运资本

  • AR、存货、AP 与 BS 保持一致
  • DSO、DIO、DPO 合理性检查(若超出正常范围则标记)

第 6 节:债务计划表

  • 总负债与 BS 保持一致(流动负债 + 长期负债)
  • 利息计算与 IS 保持一致

第 6b 节:股权融资

  • 股权发行收入与 BS 中普通股/APIC 的增加保持一致
  • 股权带来的现金增加 = 权益账户增加(必须平衡)
  • 股权募集对账:Δ普通股/APIC(BS)= 股权发行(CFF)(必须为 0)
  • 第 0 年股权对账:第 0 年募集权益 = 第 1 年期初权益资本

第 6c 节:NOL 计划表

  • 期初 NOL(第 1 年/成立时)= 0(新企业初始 NOL 为零)
  • 只有 EBT < 0 时 NOL 才会增加(必须实现亏损才能产生 NOL)
  • DTA 与 BS 保持一致(NOL 计划表 DTA = BS 递延所得税资产)
  • NOL 使用 ≤ EBT 的 80%(2017 年后的联邦限制)
  • NOL 余额非负(不能使用超过可用部分)
  • 仅当 EBT < 0 时才产生 NOL
  • 当应税收入 ≤ 0 时,所得税费用 = 0

第 7 节:场景层级

  • 绝对值指标:乐观 > 基准 > 悲观(净利润、EBITDA、自由现金流)
  • 比率指标:乐观 > 基准 > 悲观(毛利率%、EBITDA%、净利率%)
  • 信用指标:乐观 < 基准 < 悲观(杠杆率反比)

第 8 节:公式完整性

  • COGS、S&M、G&A、R&D、SBC 由收入百分比驱动(无硬编码)
  • 预测年份间的公式一致
  • 无 #REF!、#DIV/0!、#VALUE! 错误

第 9 节:信用指标阈值

  • 根据契约阈值将指标标记为绿色/黄色/红色
  • 汇总所有红色预警

主检查公式

将所有板块的状态聚合为一个总检查:

  • 若所有板块通过 → "✓ 所有检查通过"
  • 若任一板块失败 → "✗ 检测到错误 - 请在下方查看"

快速调试工作流

当主状态显示错误时:

  1. 滚动到红色高亮板块
  2. 识别哪个检查类别出问题
  3. 跳转到源标签页进行调查
  4. 修复根本问题
  5. 返回检查标签页验证修复

数据源 — 优先使用 MCP,后备使用 Web

下方许多段落提到"使用 S&P Kensho MCP / Daloopa MCP / FactSet MCP"。这些是原 Cowork 插件环境中的商业金融数据 MCP。在 Hermes 中:

  • 如果你配置了任何结构化金融数据 MCP(Hermes 支持 MCP — 参见 native-mcp 技能),对于时点可比公司、先例交易及申报文件,优先使用它。
  • 否则,降级为:
    • 针对美国申报文件,使用 web_search / web_extract 查询 SEC EDGAR(https://www.sec.gov/cgi-bin/browse-edgar
    • 针对新闻稿、财报演示,使用公司投资者关系页面
    • 使用 browser_navigate 访问交互式数据门户
    • 用户提供的数据(当上下文中没有时明确询问)
  • 绝不编造。如果某个市盈率、先例交易或申报编号无法获取,将该单元格标记为 [UNSOURCED] 并告知用户。

归属

本技能改编自 Anthropic 的 Claude for Financial Services 插件套件(Apache-2.0)。已移除 Office-JS / Cowork 实时 Excel 路径;此版本通过 excel-author 技能的约定面向无头 openpyxl。原始链接:https://github.com/anthropics/financial-services