三表模型
在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 |
以下是 Hermes 加载此技能时看到的完整技能定义。这是智能体在技能激活时看到的指令。
环境
本技能假设为无头 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 中计算值并将结果写入单元格 — 请停止。改为写入公式。
- 原因:模型必须在方案切换或假设变化时保持灵活。硬编码会悄无声息地破坏所有下游完整性检查。
与用户逐步验证:
- 映射模板后 → 向用户展示您识别出的标签页/部分,在修改任何单元格前确认
- 填充历史数据后 → 向用户展示历史数据块,确认值/期间与源数据匹配
- 构建利润表预测后 → 运行小计检查,向用户展示预测的利润表,确认后再继续到资产负债表
- 构建资产负债表后 → 向用户展示每个期间的资产负债表平衡检查(资产 = 负债 + 权益),确认后再继续到现金流量表
- 构建现金流量表后 → 向用户展示现金核对(现金流量表期末现金 = 资产负债表现金),确认后再最终定稿
- 切勿端到端填充整个模型并展示完整结果 — 在每张报表处中断,展示工作,尽早发现错误
格式 — 专业蓝色/灰色调色板(默认,除非模板/用户另有说明)
颜色尽量简洁。 仅使用蓝色和灰色作为单元格填充色。不要引入绿色、黄色、橙色或多种强调色 — 简洁的模型需要克制。
| 元素 | 填充色 | 字体 |
|---|---|---|
| 节标题(IS / BS / CF 标题) | 深蓝 #1F4E79 | 白色粗体 |
| 列标题(FY2024A、FY2025E 等) | 浅蓝 #D9E1F2 | 黑色粗体 |
| 输入单元格(历史数据、假设驱动因子) | 浅灰 #F2F2F2 或白色 | 蓝色 #0000FF |
| 公式单元格 | 白色 | 黑色 |
| 跨表关联 | 白色 | 绿色 #008000 |
| 检查行 / 关键合计 | 中蓝 #BDD7EE | 黑色粗体 |
这就是 3 种蓝色 + 1 种灰色 + 白色。 如果模板有自己的配色方案,请改为遵循模板。
字体颜色表示单元格是什么(输入/公式/链接)。填充颜色表示您在哪里(标题/数据/检查)。
模型结构
识别模板标签页组织
模板的标签页命名和组织各不相同。在填充之前,请查看所有标签页以了解模板结构。以下是常见的标签页名称及其典型内容:
| 常见标签页名称 | 需查找的内容 |
|---|---|
| IS、P&L、Income Statement | 利润表 |
| BS、Balance Sheet | 资产负债表 |
| CF、CFS、Cash Flow | 现金流量表 |
| WC、Working Capital | 营运资金计划表 |
| DA、D&A、Depreciation、PP&E | 折旧摊销计划表 |
| Debt、Debt Schedule | 债务计划表 |
| NOL、Tax、DTA | 经营亏损计划表 |
| Assumptions、Inputs、Drivers | 驱动因子假设和输入 |
| Checks、Audit、Validation | 错误检查仪表板 |
模板检查清单
- 识别模板中存在哪些标签页(并非所有模板都包含所有计划表)
- 注意任何未在上面列出的模板特定标签页
- 了解标签页依赖关系(例如,哪些计划表汇入主报表)
- 在每个标签页上定位输入单元格与公式单元格
理解模板结构
在填充模板之前,请熟悉其现有布局,以确保数据输入到正确位置且公式保持完整。
识别行结构
- 定位每个标签页顶部的模型标题
- 识别节标题及其视觉分隔
- 找到表示百万美元、百分比、倍数等的单位行
- 注意区分实际值与估计值期间的列标题
- 确认期间标签(例如 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 公式。
| 情景 | 描述 |
|---|---|
| 基准情景 | 管理层指引或一致预期 |
| 乐观情景 | 高于指引的增长、利润率扩张 |
| 悲观情景 | 低于趋势的增长、利润率压缩 |
需进行敏感性分析的关键驱动因子:收入增长率、毛利率、销售及管理费用占比、应收账款周转天数/存货周转天数/应付账款周转天数、资本支出占比、利率、税率。
情景审计检查:切换所有报表、所有情景下资产负债表平衡、现金核对、层级成立(乐观 > 基准 > 悲观,适用于净利润、EBITDA、自由现金流、利润率)。
SEC 文件数据提取
如果模板特别需要从 SEC 文件(10-K、10-Q)中提取数据,请参阅 references/sec-filings.md 获取详细的提取指南。仅当需要使用来自监管文件的上市公司数据填充模板时,才需要此参考文献。
完成模型模板
本节提供完成任何三报表财务模型模板的一般指南,同时保留现有公式并确保数据完整性。
步骤 1:分析模板结构
在输入任何数据之前,请彻底检查模板以理解其架构:
识别输入单元格与公式单元格
- 寻找视觉提示(字体颜色、单元格底纹)来区分输入单元格和公式单元格
- 常见约定:蓝色字体 = 输入项,黑色字体 = 公式,绿色字体 = 链接到其他工作表的单元格
- 使用 Excel 的追踪前置/从属单元格(公式 → 追踪前置单元格)来理解单元格关系
- 检查可能控制关键输入的命名范围(公式 → 名称管理器)
规划模板流程
- 确定哪些工作表为其他工作表提供数据(例如,假设 → 利润表 → 资产负债表 → 现金流量表)
- 注意所有辅助明细表及其与主报表的链接关系
- 在填充数据前,记录模板具体的行项目和结构
步骤 2:在不破坏公式的前提下填写数据
数据录入黄金规则
| 规则 | 描述 |
|---|---|
| 仅编辑输入单元格 | 除非有意替换公式,否则切勿覆盖包含公式的单元格 |
| 保留单元格引用 | 复制数据时,使用“粘贴值”(Ctrl+Shift+V),避免用源格式覆盖公式 |
| 匹配模板单位 | 在输入数据前,核实模板使用的是千元、百万还是实际值 |
| 遵循正负号惯例 | 遵循模板现有的正负号惯例(例如,费用为正数或负数) |
| 检查循环引用 | 如果模板使用迭代计算,请确保已启用迭代计算(Enable Iterative Calculation) |
安全的数据录入流程
- 确定指定用于输入的精确单元格(通常高亮显示或已标注)
- 首先输入历史数据,然后验证这些期间的公式是否计算正确
- 输入驱动预测计算的假设驱动因素
- 审查计算输出,确认公式按预期运行
- 如果必须修改公式单元格,在进行更改前记录原始公式
处理预置公式
- 如果公式引用了你尚未填充的单元格,在输入完成前可能会出现临时错误(#REF!、#DIV/0!)
- 当公式产生意外结果时,追踪前置单元格以识别缺失或错误的输入
- 在检查所有工作表中的公式依赖关系之前,切勿删除行/列
步骤 3:验证公式
公式完整性检查
在依赖模板输出之前,请验证公式是否运行正确:
| 检查类型 | 方法 |
|---|---|
| 追踪前置单元格 | 选择一个公式单元格 → 公式 → 追踪前置单元格,以验证其引用的输入是否正确 |
| 追踪从属单元格 | 验证关键输入是否流向预期的输出单元格 |
| 求值公式 | 使用 公式 → 求值公式 来逐步执行复杂计算 |
| 检查硬编码值 | 预测公式应引用假设,而非包含硬编码值 |
| 用已知值测试 | 输入简单的测试值以验证公式是否产生预期结果 |
| 跨工作表一致性 | 确保所有预测期间都应用相同的公式逻辑 |
需留意的常见公式问题
- 绝对引用与相对引用混合使用,导致跨期间复制时结果错误
- 外部文件链接失效或已删除区域导致的链接中断(#REF! 错误)
- 收入爬升初期因除以零而产生的错误(#DIV/0! 错误)
- 循环引用警告(用于利息计算时可能是有意为之)
- 跨预测列的公式不一致(使用 Ctrl+\ 查找差异)
验证跨工作表链接关系
- 确认出现在多个工作表上的数值是链接的(而非重复)
- 验证明细表总计与主报表上对应的行项目相符
- 检查所有工作表的期间标签是否对齐
步骤 4:按工作表进行质量检查
在填充模板后,对每个工作表执行以下验证检查:
利润表(IS)质量检查
- 历史期间的收入数据与源数据相符
- 所有费用行项目合计为报告总额
- 小计(毛利润、息税前利润、税前利润、净利润)计算正确
- 税金计算逻辑合理(能正确处理亏损)
- 预测驱动因素引用了假设工作表(无硬编码值)
- 期间变化在方向上合理
资产负债表(BS)质量检查
- 每个期间都满足 资产 = 负债 + 所有者权益(首要检查)
- 现金余额与现金流量表中的期末现金相符
- 营运资本账户与辅助明细表(如适用)相符
- 留存收益正确结转:期初留存收益 + 净利润 - 股利 +/- 调整项 = 期末留存收益
- 债务余额与债务明细表(如适用)相符
- 所有资产负债表项目都有适当的正负号(资产为正,大多数负债为正)
现金流量表(CF)质量检查
- 经营活动现金流(CFO)顶部的净利润与利润表的净利润相符
- 非现金加回项(折旧摊销、股权激励等)与其源明细表/报表相符
- 营运资本变动具有正确的正负号(资产增加 = 现金使用 = 负数)
- 资本支出与财产、厂房和设备明细表或固定资产滚动计算表相符
- 筹资活动与资产负债表上债务和权益账户的变动相符
- 期末现金与资产负债表现金相符
- 期初现金等于上一期的期末现金
辅助明细表质量检查
- 期初余额等于上一期的期末余额
- 结转逻辑完整(期初 + 增加 - 减少 = 期末)
- 明细表总计与主报表行项目相符
- 计算中使用的假设与假设工作表一致
步骤 5:跨报表完整性检查
在验证单个工作表后,确认三张报表已正确集成:
| 检查项 | 公式 | 预期结果 |
|---|---|---|
| 资产负债表平衡 | 资产 - 负债 - 所有者权益 | = 0 |
| 现金勾稽 | 现金流量表期末现金 - 资产负债表现金 | = 0 |
| 净利润链接 | 利润表净利润 - 现金流量表期初净利润 | = 0 |
| 留存收益 | 期初留存收益 + 净利润 - 股利 - 资产负债表期末留存收益 | = 0(根据需要调整股权激励/其他项目) |
步骤 6:最终审查
在认为模型完成之前:
- 切换所有情景(如适用),以验证在每种情况下检查均通过
- 审查所有 #REF!、#DIV/0!、#VALUE! 和 #NAME? 错误,并解决或记录
- 确认所有输入单元格均已填充(搜索占位符值)
- 验证所有工作表的单位一致
- 在进行任何额外修改之前,保存一个干净的版本
模型验证与审计
本节汇总已完成模板的所有验证检查和审计程序。
核心关联关系(必须始终成立)
所有公式详情请参见 references/formulas.md。
| 检查项 | 公式 | 预期结果 |
|---|---|---|
| 资产负债表平衡 | 资产 - 负债 - 权益 | = 0 |
| 现金核对 | 现金流量表期末现金 - 资产负债表现金 | = 0 |
| 月度 vs 年度现金 | 期末现金(月度) - 期末现金(年度) | = 0 |
| 净利润关联 | 利润表净利润 - 现金流量表期初净利润 | = 0 |
| 留存收益 | 期初留存收益 + 净利润 + 股份支付 - 股息 - 资产负债表期末留存收益 | = 0 |
| 股权融资 | 普通股/APIC 变动(资产负债表) - 股权发行(融资活动现金流) | = 0 |
| 第0年权益 | 已募集权益(第0年) - 起始权益资本(第1年) | = 0 |
符号惯例参考
| 报表 | 项目 | 符号惯例 |
|---|---|---|
| 经营活动现金流 | 折旧摊销、股份支付 | 正值(加回) |
| 经营活动现金流 | 应收账款变动(增加) | 负值(现金使用) |
| 经营活动现金流 | 应付账款变动(增加) | 正值(现金来源) |
| 投资活动现金流 | 资本支出 | 负值 |
| 融资活动现金流 | 债务发行 | 正值 |
| 融资活动现金流 | 债务偿还 | 负值 |
| 融资活动现金流 | 股息 | 负值 |
循环引用处理
利息费用会造成循环:利息 → 净利润 → 现金 → 债务余额 → 利息
在 Excel 中启用迭代计算:文件 → 选项 → 公式 → 启用迭代计算。设置最大迭代次数为 100,最大变化为 0.001。在假设条件选项卡中添加一个循环中断开关。
检查类别
第 1 节:货币一致性
- 在假设条件中识别并记录货币
- 所有选项卡使用一致的货币符号和单位
- 单位行与模型货币匹配
第 2 节:资产负债表完整性
- 资产 = 负债 + 权益(适用于每个期间)
- 公式:资产 - 负债 - 权益(必须 = 0)
第 3 节:现金流量完整性
- 现金与资产负债表核对(现金流量表期末现金 = 资产负债表现金)
- 月度 vs 年度现金:期末现金(月度) = 期末现金(年度)
- 净利润与利润表核对(现金流量表净利润 = 利润表净利润)
- 折旧摊销与折旧摊销计划表核对
- 股份支付与利润表核对
- 应收账款、存货、应付账款变动与营运资金计划表核对
- 资本支出与折旧摊销计划表核对
第 4 节:留存收益
- 留存收益滚动核对:期初留存收益 + 净利润 + 股份支付 - 股息 = 期末留存收益
- 显示组成部分分解以便调试
第 5 节:营运资金
- 应收账款、存货、应付账款与资产负债表核对
- 应收账款周转天数、存货周转天数、应付账款周转天数合理性检查(超出正常范围时标记)
第 6 节:债务计划表
- 总债务与资产负债表核对(流动负债 + 长期负债)
- 利息计算与利润表核对
第 6b 节:股权融资
- 股权发行所得与资产负债表普通股/APIC 增加核对
- 股权带来的现金增加 = 权益账户增加(必须平衡)
- 权益募集核对:普通股/APIC 变动(资产负债表) = 股权发行(融资活动现金流)(必须 = 0)
- 第0年权益核对:已募集权益(第0年) = 起始权益资本(第1年)
第 6c 节:税务亏损计划表
- 期初税务亏损(第1年 / 成立时) = 0(新业务税务亏损从零开始)
- 税务亏损仅在税前利润 < 0 时增加(亏损必须实际发生才能产生税务亏损)
- 递延所得税资产与资产负债表核对(税务亏损计划表递延所得税资产 = 资产负债表递延所得税资产)
- 税务亏损使用 ≤ 80% 的税前利润(2017年后联邦限制)
- 税务亏损余额非负(不能使用超过可用额度)
- 仅在税前利润 < 0 时产生税务亏损
- 应税所得 ≤ 0 时,所得税费用 = 0
第 7 节:情景层级
- 绝对指标:乐观 > 基准 > 悲观(净利润、EBITDA、自由现金流)
- 利润率:乐观 > 基准 > 悲观(毛利率%、EBITDA 利润率%、净利润率%)
- 信用指标:杠杆率乐观 < 基准 < 悲观(反向)
第 8 节:公式完整性
- 销售成本、销售与市场费用、一般及行政费用、研发费用、股份支付由收入百分比驱动(无硬编码)
- 各预测年份公式一致
- 无 #REF!、#DIV/0!、#VALUE! 错误
第 9 节:信用指标阈值
- 根据契约阈值将指标标记为绿色/黄色/红色
- 总结所有警示信号
主检查公式
将所有部分状态汇总为单一主检查:
- 如果所有部分通过 → "✓ 所有检查通过"
- 如果任何部分失败 → "✗ 检测到错误 - 请查看以下内容"
快速调试工作流
当主状态显示错误时:
- 滚动查找红色高亮部分
- 识别哪个检查类别存在失败项
- 导航到源选项卡进行调查
- 修复根本问题
- 返回检查选项卡验证解决情况
数据来源 — MCP 优先,网络回退
以下段落多处提到“使用 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