{/* 此页面由 website/scripts/generate-skill-docs.py 从技能的 SKILL.md 自动生成。请编辑源文件 SKILL.md,而非此页面。 */}

DCF 模型

在 Excel 中构建机构级 DCF 估值模型 —— 营收预测、FCF 构建、WACC、终值、悲观/基准/乐观情景、5x5 敏感性表格。与 excel-author 配合使用。适用于内在价值权益分析。

技能元数据

来源可选 —— 使用 hermes skills install official/finance/dcf-model 安装
路径optional-skills/finance/dcf-model
版本1.0.0
作者Anthropic(由 Nous Research 改编)
许可证Apache-2.0
平台linux, macos, windows
标签finance, valuation, dcf, excel, openpyxl, modeling, investment-banking
相关技能excel-author, pptx-author, comps-analysis, lbo-model, 3-statement-model

参考:完整 SKILL.md

:::info 以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时代理所看到的指令。 :::

环境

此技能假定无头 openpyxl —— 您正在磁盘上生成 .xlsx 文件。 遵循 excel-author 技能的颜色约定(单元格着色、公式、命名区域和敏感性表格)。 交付前重新计算:python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx

DCF 模型构建器

概述

此技能根据投资银行标准创建机构级 DCF 模型用于权益估值。每次分析生成一个详细的 Excel 模型(敏感性分析包含在 DCF 工作表底部)。

工具

  • 默认使用用户提供的所有信息以及可用的 MCP 服务器进行数据获取。

关键约束 —— 先阅读

这些约束适用于所有 DCF 模型构建。开始前请先审阅:

公式优先于硬编码(不可商议):

  • 每个预测、利润率、折现因子、PV 和敏感性单元格必须是实时的 Excel 公式 —— 绝不能是在 Python 中计算后写入的数字
  • 使用 openpyxl 时:ws["D20"] = "=D19*(1+$B$8)" 是正确的;ws["D20"] = calculated_revenue 是错误的
  • 唯一允许的硬编码数字:(1) 原始历史输入,(2) 假设驱动因素(增长率、WACC 输入、终值 g),(3) 当前市场数据(股价、债务余额)
  • 如果您发现自己用 Python 计算某些东西并写入结果 —— 停止。模型必须在用户更改假设时自动调整。

与用户逐节验证(不要构建端到端模型):

  • 数据检索后 → 向用户展示原始输入块(营收、利润率、股份、净债务)并在预测前确认
  • 营收预测后 → 展示预测的顶线和增长率,在构建利润率前确认
  • FCF 构建后 → 展示完整的 FCF 计划,在计算 WACC 前确认逻辑
  • WACC 后 → 展示计算和输入,在折现前确认
  • 终值 + PV 后 → 展示股权桥梁(EV → 权益价值 → 每股),在敏感性表格前确认
  • 在每个阶段捕获错误 —— 在敏感性表格构建后发现错误的利润率假设意味着重建所有下游内容

敏感性表格:

  • 使用奇数行和列(标准:5×5,有时 7×7)—— 这保证有真实的中心单元格
  • 中心单元格 = 基准情况。 构建轴值使中间行标题和中间列标题恰好等于模型的实际假设(例如,如果基准 WACC = 9.0%,中间行为 9.0%;如果终值 g = 3.0%,中间列为 3.0%)。中心单元格的输出必须等于模型的实际隐含股价 —— 这是表格构建正确的合理性检查。
  • 突出显示中心单元格,使用中蓝色填充(#BDD7EE)+ 粗体字体,使其作为基准情况立即可见
  • 填充所有单元格(通常 3 个表 × 25 个单元格 = 75 个)使用完整的 DCF 重新计算公式
  • 使用 openpyxl 循环编程写入公式
  • 无占位符文本,无非线性近似,无需手动步骤
  • 每个单元格必须为该假设组合重新计算完整 DCF

单元格注释:

  • 在每次创建硬编码值时添加单元格注释
  • 格式:“来源:[系统/文档],[日期],[引用],[URL 如适用]”
  • 每个蓝色输入在进入下一节前必须有注释
  • 不要拖到末尾或写 “TODO: add source”

模型布局规划:

  • 在编写任何公式前定义所有部分的起始行位置
  • 先写入所有标题和标签
  • 第二步写入所有部分分隔符和空白行
  • 然后使用固定的行位置写入公式
  • 创建后立即测试公式

公式重新计算:

  • 交付前运行 python recalc.py model.xlsx 30
  • 修复所有错误直到状态为 “success”
  • 零公式错误要求(#REF!,0!,VALUE! 等)

情景块:

  • 为悲观/基准/乐观情况创建独立的块
  • 在每个块内横跨预测年显示假设
  • 使用 IF 公式:=IF($B$6=1,[悲观单元格],IF($B$6=2,[基准单元格],[乐观单元格]))
  • 验证公式引用正确的情景块单元格

DCF 处理工作流

第 1 步:数据检索和验证

从 MCP 服务器、用户提供的数据和网络获取数据。

数据来源优先级:

  1. MCP 服务器(如已配置)—— 来自 Daloopa 等提供者的结构化财务数据
  2. 用户提供的数据 —— 来自其调研的历史财务报表
  3. 网页搜索/获取 —— 需要时的当前价格、Beta、债务和现金

验证检查清单:

  • 验证净债务 vs 净现金(对估值至关重要)
  • 确认稀释后流通股数(检查近期回购/发行)
  • 验证历史利润率与商业模式一致
  • 交叉检查营收增长率与行业基准
  • 验证税率是否合理(通常 21-28%)

第 2 步:历史分析(3-5 年)

分析并记录:

  • 营收增长趋势:计算 CAGR,识别驱动因素
  • 利润率进展:追踪毛利率、EBIT 利润率、FCF 利润率
  • 资本强度:折旧摊销和资本支出占营收百分比
  • 营运资本效率:净营运资本变动占营收增长百分比
  • 回报指标:ROIC, ROE 趋势

创建摘要表显示:

历史指标(LTM):
营收:X 百万美元
营收增长:X% CAGR
毛利率:X%
EBIT 利润率:X%
折旧摊销占营收百分比:X%
资本支出占营收百分比:X%
FCF 利润率:X%

第 3 步:构建营收预测

方法:

  1. 从最新的实际营收开始(LTM 或最近财年)
  2. 为每个预测年应用增长率
  3. 同时显示美元金额和计算的增长率 %

增长率框架:

  • 第 1-2 年:较高增长,反映近期可见性
  • 第 3-4 年:逐步放缓至行业平均水平
  • 第 5 年+:接近终值增长率

公式结构:

  • 营收(第 N 年) = 营收(第 N-1 年) × (1 + 增长率)
  • 增长率 %(第 N 年) = 营收(第 N 年) / 营收(第 N-1 年) - 1

三情景方法:

悲观情况:保守增长(例如 8-12%)
基准情况:最可能的情景(例如 12-16%)
乐观情况:乐观增长(例如 16-20%)

第 4 步:营业费用建模

固定/可变成本分析:

营业费用应模拟真实的经营杠杆:

  • 销售与营销:通常占营收的 15-40%(取决于商业模式)
  • 研发:科技公司通常占营收的 10-30%
  • 管理费用:通常占营收的 8-15%,随公司规模扩大显示杠杆效应

关键原则:

  • 所有百分比基于营收而非毛利润
  • 模拟经营杠杆:% 应随营收增长而下降
  • 单独列出销售与营销、研发、管理费用
  • 计算 EBIT = 毛利润 - 总运营支出

利润率扩展框架:

当前状态 → 目标状态(第 5 年)
毛利率:X% → Y%(根据规模、效率证明合理性)
EBIT 利润率:X% → Y%(营收增长 + 运营支出杠杆的结果)

第 5 步:自由现金流计算

按正确顺序构建 FCF:

EBIT
(-) 税费(EBIT × 税率)
= NOPAT(税后净营业利润)
(+) 折旧摊销(非现金费用,占营收百分比)
(-) 资本支出(占营收百分比,通常 4-8%)
(-) Δ NWC(营运资本变动)
= 无杠杆自由现金流

营运资本建模:

  • 计算为营收变动的百分比(增量营收)
  • 典型范围:营收变动的 -2% 至 +2%
  • 负数 = 现金来源(营运资本释放)
  • 正数 = 现金使用(营运资本构建)

维护性 vs 增长性资本支出:

  • 维护性资本支出:维持当前运营(约占营收 2-3%)
  • 增长性资本支出:支持扩张(额外占营收 2-5%)
  • 总资本支出应与公司增长战略一致

第 6 步:资本成本(WACC)研究

权益成本的 CAPM 方法:

权益成本 = 无风险利率 + Beta × 权益风险溢价

其中:
- 无风险利率 = 当前 10 年期国债收益率
- Beta = 5 年月度股票 Beta vs 市场指数
- 权益风险溢价 = 5.0-6.0%(市场标准)

债务成本计算:

税后债务成本 = 税前债务成本 × (1 - 税率)

从以下来源确定税前债务成本:
- 信用评级(如可用)
- 公司债券当前收益率
- 利息费用 / 总债务(来自财务报表)

资本结构权重:

股权市值 = 当前股价 × 流通股数
净债务 = 总债务 - 现金及等价物
企业价值 = 市值 + 净债务

股权权重 = 市值 / 企业价值
债务权重 = 净债务 / 企业价值

WACC = (权益成本 × 股权权重) + (税后债务成本 × 债务权重)

特殊情况:

  • 净现金状态:如果现金 > 债务,净债务为负值
    • 债务权重可能为负
    • WACC 计算相应调整
  • 无债务:WACC = 权益成本

典型 WACC 范围:

  • 大盘股、稳定型:7-9%
  • 成长型公司:9-12%
  • 高增长/高风险:12-15%

第 7 步:折现率应用(5-10 年预测)

年中惯例:

  • 假设现金流发生在年中
  • 折现期:0.5, 1.5, 2.5, 3.5, 4.5 等
  • 折现因子 = 1 / (1 + WACC)^期数

现值计算:

对于每个预测年:
FCF 的 PV = 无杠杆 FCF × 折现因子

示例(第 1 年):
FCF = $1,000
WACC = 10%
期数 = 0.5
折现因子 = 1 / (1.10)^0.5 = 0.9535
PV = $1,000 × 0.9535 = $954

预测期选择:

  • 5 年:大多数分析的标准
  • 7-10 年:高增长公司,有更长发展期
  • 3 年:成熟、稳定的企业

第 8 步:终值计算

永续增长法(首选):

终值 FCF = 最后一年 FCF × (1 + 终值增长率)
终值 = 终值 FCF / (WACC - 终值增长率)

关键约束:终值增长率 < WACC(否则为无穷值)

终值增长率选择:

  • 保守:2.0-2.5%(GDP 增长率)
  • 适中:2.5-3.5%
  • 激进:3.5-5.0%(仅限市场领导者)

不要超过:无风险利率或长期 GDP 增长

退出倍数法(替代方案):

终值 = 最后一年 EBITDA × 退出倍数

其中退出倍数来自:
- 行业可比交易倍数
- 先例交易倍数
- 典型范围:8-15x EBITDA

终值的现值:

终值的 PV = 终值 / (1 + WACC)^最后期数

其中最后期数考虑时间:
5 年模型采用年中惯例:期数 = 4.5

终值合理性检查:

  • 应占企业价值的 50-70%
  • 如果 >75%,模型可能过度依赖终值假设
  • 如果 <40%,检查终值假设是否过于保守

第 9 步:企业价值到权益价值桥梁

估值摘要结构:

(+) 预测 FCF 的 PV 之和 = X 百万美元
(+) 终值的 PV = Y 百万美元
= 企业价值 = Z 百万美元

(-) 净债务 [或 + 净现金(如为负)] = A 百万美元
= 权益价值 = B 百万美元

÷ 稀释后流通股数 = C 百万股
= 每股隐含价格 = $XX.XX

当前股价 = $YY.YY
隐含回报 = (隐含价格 / 当前价格) - 1 = XX%

关键调整:

  • 净债务 = 总债务 - 现金及等价物
    • 如为正数:从 EV 中减去(减少权益价值)
    • 如为负数(净现金):加到 EV(增加权益价值)
  • 使用稀释后股数:包括期权、RSU、可转换证券
  • 其他调整(如适用):
    • 少数股东权益
    • 养老金负债
    • 经营租赁义务

估值输出格式:

估值组件,金额(百万美元)
预测 FCF 的 PV,X.X
终值的 PV,Y.Y
企业价值,Z.Z
(-) 净债务,A.A
权益价值,B.B
,,
流通股数(百万),C.C
每股隐含价格,$XX.XX
当前股价,$YY.YY
隐含上行/(下行),XX%

第 10 步:敏感性分析

在 DCF 工作表底部构建三个敏感性表格,显示估值如何随不同假设变化:

  1. WACC vs 终值增长率 —— 显示企业价值对折现率和永续增长的敏感性
  2. 营收增长 vs EBIT 利润率 —— 显示顶线增长和经营杠杆的影响
  3. Beta vs 无风险利率 —— 显示对权益成本组成部分的敏感性

实现:这些是简单的二维网格(非 Excel 的”数据表”功能),每个单元格包含公式。每个单元格必须包含针对该特定假设组合的完整 DCF 重新计算。参见关键约束部分的详细要求,使用 openpyxl 以编程方式填充所有 75 个单元格。


正确模式参考

情景块选择模式

假设按每种情景组织在独立块中:

关键结构 —— 每个部分标题三行:

悲观情况假设(部分标题,跨列合并)
假设,FY1,FY2,FY3,FY4,FY5
营收增长率(%),12%,10%,9%,8%,7%
EBIT 利润率(%),45%,44%,43%,42%,41%

基准情况假设(部分标题,跨列合并)
假设,FY1,FY2,FY3,FY4,FY5
营收增长率(%),16%,14%,12%,10%,9%
EBIT 利润率(%),48%,49%,50%,51%,52%

乐观情况假设(部分标题,跨列合并)
假设,FY1,FY2,FY3,FY4,FY5
营收增长率(%),20%,18%,15%,13%,11%
EBIT 利润率(%),50%,51%,52%,53%,54%

如何引用假设 —— 创建合并列:

推荐合并列模式(使用 INDEX): =INDEX(B10:D10, 1, $B$6)

合并列方法集中逻辑,使模型更易于审计。

正确营收预测模式

创建带 INDEX 公式的合并列,然后在预测中引用:

合并列方法:

项目,公式,引用
折旧摊销,=E29*$E$21,$E$21 = 折旧摊销 % 的合并列
资本支出,=E29*$E$22,$E$22 = 资本支出 % 的合并列
Δ NWC,=(E29-D29)*$E$23,$E$23 = NWC % 的合并列
无杠杆 FCF,=E57+E58-E60-E62,E57=NOPAT E58=折旧摊销 E60=资本支出 E62=Δ NWC

正确单元格注释格式

每个硬编码值需要此格式:

“来源:[系统/文档],[日期],[引用],[URL 如适用]”

示例:

项目,来源注释
股价,来源:市场数据脚本 2025-10-12 收盘价
流通股数,来源:10-K FY2024 第 45 页 注 12
历史营收,来源:10-K FY2024 第 32 页 合并报表
Beta,来源:市场数据脚本 2025-10-12 5 年月度 Beta
一致预期,来源:管理层指引 Q3 2024 财报电话会议

数据来源 —— 优先 MCP,后备网页搜索

在 Hermes 中:

  • 如果您配置了任何结构化金融数据 MCP(Hermes 支持 MCP —— 参见 native-mcp 技能),优先用于时点可比数据、先例交易和申报文件。
  • 否则,回退至:
    • 针对美国申报文件使用 web_search / web_extract 查询 SEC EDGAR
    • 公司投资者关系页面获取新闻稿、财报演示
    • 用户提供的数据
  • 切勿编造。将单元格标记为 [UNSOURCED] 并向用户说明。

署名

此技能改编自 Anthropic 的 Claude for Financial Services 插件套件(Apache-2.0)。原文:https://github.com/anthropics/financial-services