关于 lbo-model
用于依照用户提供或标准模板在 Excel 中构建杠杆收购模型的技能,涵盖公式、格式规范及分阶段验证。
主要功能
- 01优先使用现有模板
- 02使用公式进行计算
- 03提供 LBO 分区建模指引
- 04区分输入与公式颜色
- 05提供模型验证清单
适用场景
- 01填充附带的 LBO 工作簿
- 02构建资金来源用途表和债务计划
- 03计算投资回报与敏感性分析
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ anthropics/ financial-services --skill lbo-model安装后在 Claude Code 中输入/lbo-model确认已加载。
详细介绍
模板要求
此技能使用模板来构建 LBO 模型。请务必先检查是否有附加的模板文件。
在开始任何 LBO 模型之前:
- 如果附加/提供了模板文件:完全按照该模板的结构 — 复制它并用用户的数据填充
- 如果没有附加模板:询问用户:“你有希望我使用的特定 LBO 模板吗?如果没有,我可以使用标准模板,其中包含资金来源与用途、运营模型、债务计划和回报分析。”
- 如果使用标准模板:复制
examples/LBO_Model.xlsx作为起点,并用用户的假设填充它
重要:当附加了 LBO_Model.xlsx 这样的文件时,你必须将其用作模板 — 不要从头构建。即使模板看起来复杂或功能比需要的更多,也要复制它并按用户的需求调整。有模板提供时,绝不要决定“从头构建”。
给 CLAUDE 的关键说明 - 请先阅读
环境:Office JS vs Python
如果在 Excel 内运行(Office 加载项 / Office JS 环境):
- 直接使用 Office JS(
Excel.run(async (context) => {...}))— 不要使用 Python/openpyxl - 通过
range.formulas = [["=B5*B6"]]写入公式 — Office JS 公式会在实时工作簿中自动重算 - 同样适用公式优先于硬编码的规则:设置
range.formulas,对于任何应进行计算的内容绝不使用range.values - 使用
range.format.font.color/range.format.fill.color实现蓝色/黑色/紫色/绿色约定 - 无需单独的重算步骤 — Excel 会自动处理计算
- 合并单元格陷阱: 不要先调用
.merge()再在合并区域上设置.values(会抛出InvalidArgument— 区域仍报告原始尺寸)。而应:仅将值写入左上角单元格(ws.getRange("A7").values = [["SOURCES & USES"]]),然后合并并格式化整个区域(ws.getRange("A7:F7").merge(); ws.getRange("A7:F7").format.fill.color = "#1F4E79";)
如果生成独立的 .xlsx 文件(没有实时 Excel 会话):
- 如下所述使用 Python/openpyxl
- 写入公式字符串(
ws["D20"] = "=B5*B6"),然后在交付前运行recalc.py
此技能的其余部分以 openpyxl 示例编写,但同样的原则适用于 Office JS — 只需转换 API 调用即可。
核心原则
- 每个计算都必须是 Excel 公式 — 绝不要在 Python 中计算值并将结果硬编码到单元格中。使用 openpyxl 时,写入
cell.value = "=B5*B6"(公式字符串),而不是cell.value = 1250(计算结果)。模型必须是动态的,并在输入变化时更新。 - 使用模板结构 — 遵循
examples/LBO_Model.xlsx或用户提供的模板中的组织方式。不要自创布局。 - 使用正确的单元格引用 — 所有公式都应引用适当的单元格。绝不要输入本应来自其他单元格的数字。
- 保持符号约定一致 — 遵循模板使用的任何符号约定(有些对流出使用负数,有些使用正数)。全程保持一致。
- 逐节推进,每一步都与用户确认 — 完整完成一节,向用户展示所构建的内容,运行该节的验证检查,并在进入下一节之前获得确认。不要端到端构建整个模型后再呈现 — 后续小节依赖前面的小节,因此在回报分析已经构建完成之后才发现资金来源与用途中的错误意味着到处都要返工。
公式颜色规范
- 蓝色 (0000FF):硬编码输入 - 直接键入的数字,不引用其他单元格
- 黑色 (000000):带计算的公式 - 任何使用运算符或函数的公式(
=B4*B5、=SUM()、=-MAX(0,B4)) - 紫色 (800080):链接到同一工作表中的单元格 - 无计算的直接引用(
=B9、=B45) - 绿色 (008000):链接到不同工作表中的单元格 - 跨工作表引用(
=Assumptions!B5、='Operating Model'!C10)
填充颜色调色板 — 专业蓝灰配色(除非用户/模板另有指定,否则为默认)
- 保持极简 — 单元格填充只使用蓝色和灰色。不要引入绿色、黄色、红色或多种强调色。专业的 LBO 模型讲究克制。
- 默认填充调色板:
- 章节标题(资金来源与用途、运营模型等):深蓝色
#1F4E79,配白色加粗文字 - 列标题(Year 1、Year 2 等):浅蓝色
#D9E1F2,配黑色加粗文字 - 输入单元格:浅灰色
#F2F2F2(或纯白色)— 蓝色字体才是信号,填充是次要的 - 公式/计算单元格:白色,无填充
- 关键输出(IRR、MOIC、退出股权):中蓝色
#BDD7EE,配黑色加粗文字
- 章节标题(资金来源与用途、运营模型等):深蓝色
- 这就是整个调色板。 3 种蓝色 + 1 种灰色 + 白色。如果模板使用自己的颜色,则遵循模板。
- 注意:上述蓝/黑/紫/绿字体颜色用于区分输入、公式和链接。它们与这里的填充调色板是分开的——两者配合使用。
数字格式标准
- 货币:
$#,##0;($#,##0);"-"或$#,##0.0,取决于模板 - 百分比:
0.0%(一位小数) - 倍数:
0.0"x"(一位小数) - MOIC/详细比率:
0.00"x"(两位小数以保证精度) - 所有数值单元格:右对齐
先澄清需求
在填写任何公式之前:
- 检查模板结构 - 识别所有章节,理解时间线(哪些列对应哪些期间),注意任何现有公式
- 如有任何不清楚的地方,询问用户 - 如果模板结构、计算方法或需求存在歧义,请先询问再继续
- 确认关键假设 - 任何关键输入、计算偏好或特定要求
- 只有在理解模板之后,才继续填写公式
模板分析阶段 - 先做这一步
在填写任何公式之前,彻底检查模板:
-
梳理结构 - 确定每个章节所在的位置以及它们之间的相互关系。注意哪些章节为其他章节提供数据。
-
理解时间线 - 哪些列代表哪些期间?是否有“Closing”或“Pro Forma”列?预测期从哪里开始?
-
区分输入单元格与公式单元格 - 模板通常使用颜色编码、边框或底纹来指示哪些单元格需要输入、哪些需要公式。遵循这些约定。
-
仔细阅读现有标签 - 行标签会准确告诉你预期进行什么计算。不要臆断——阅读模板要求的内容。
-
检查现有公式 - 有些模板已部分填写。除非特别要求,否则不要覆盖可正常工作的公式。
-
注意模板特有的约定 - 符号约定、小计结构、章节的组织方式、不同组件是否有单独的工作表等。
填写公式 - 通用方法
对于每个需要公式的单元格,遵循以下优先级:
第 1 步:检查模板
- 该单元格是否已有公式?如果有,验证其是否正确,然后继续。
- 是否有注释或备注说明预期的计算?
- 行/列标签是否让计算显而易见?
- 相邻单元格是否显示出应遵循的模式?
第 2 步:检查用户说明
- 用户是否指定了特定的计算方法?
- 是否有影响此公式的既定假设?
- 是否提到任何特殊要求?
步骤 3:应用标准实践
- 如果模板和用户均未指定,使用标准 LBO 建模惯例
- 记录你做出的任何假设
- 如果确实不确定,询问用户
常见问题区域
以下计算模式在 LBO 模型中经常引发问题。遇到这些情况时请特别留意:
平衡部分
- 当两个部分必须相等时(例如,资金来源 = 资金用途),通常有一个项目是“平衡项”(使两侧平衡的数字)
- 确定哪个项目是平衡项,并将其作为差额计算
税务计算
- 税务公式应只引用相关的收入行和税率
- 不应引用无关部分(例如,债务计划表)
- 考虑亏损是产生税盾还是被直接忽略
利息与循环引用
- 如果利息计算引用了受现金流影响的余额,可能会产生循环引用
- 使用期初余额(而非平均余额或期末余额)来打破循环引用
- 模式:利息 → 现金流 → 偿还 → 期末余额(如果利息使用期末余额,就会循环回来)
债务偿还 / 现金清扫
- 当存在多个债务层级时,通常有一个优先顺序
- 现金清扫应遵循优先瀑布顺序
- 余额不能为负——适当使用 MAX 或 MIN 函数
回报计算(IRR/MOIC)
- 现金流必须具有正确的符号:投资 = 负值,收益 = 正值
- 如果使用 XIRR,需要对应的日期
- 如果使用 IRR,现金流应处于连续期间
- MOIC = 总收益 / 总投资
敏感性表格
- 使用奇数维度(5×5 或 7×7)——绝不要使用 4×4 或 6×6。奇数维度保证存在真正的中心单元格。
- 中心单元格 = 基准情形。 围绕模型的实际假设对称地构建行和列轴值(例如,如果基准进入倍数 = 10.0x,则轴 =
[8.0x, 9.0x, 10.0x, 11.0x, 12.0x])。此时中心单元格的 IRR/MOIC 必须等于模型的实际 IRR/MOIC 输出——这是表格接线正确的证明。 - 突出显示中心单元格——中等蓝色填充(
#BDD7EE)+ 粗体字体,使基准情形在视觉上锚定。 - Excel 的 DATA TABLE 函数可能无法与 openpyxl 配合使用——改为编写引用行/列标题的显式公式
- 每个单元格应显示不同的值——如果全部相同,则公式没有正确变化
- 使用混合引用(例如,行输入用
$A5,列输入用B$4)
验证清单 - 完成后运行
运行公式验证
python /mnt/skills/public/xlsx/recalc.py model.xlsx
必须返回成功且零错误。
部分平衡
- 任何必须平衡的部分(资金来源/资金用途、资产/负债)完全平衡
- 平衡项作为平衡数字被正确计算
- 跨部分应匹配的金额保持一致
收入/经营预测
- 收入/顶线从驱动因素或增长率正确构建
- 所有成本和费用项目被适当计算
- 小计和总计求和正确
- 利润率和比率合理
- 与假设的链接正确
资产负债表(如适用)
- 资产 = 负债 + 权益(必须平衡)
- 所有项目链接到适当的计划表或滚动结转表
- 期初余额 = 上期期末余额
- 包含检查行且显示为零
现金流(如适用)
- 以正确的收入数字开始
- 非现金项目被适当加回/扣除
- 营运资本变动具有正确的符号
- 期末现金 = 期初现金 + 净现金流
- 各报表中的现金余额一致
支持性计划表
- 滚动结转计划表平衡(期初 + 变动 = 期末)
- 计划表正确链接到主报表
- 计算项目使用适当的驱动因素
- 所有期间的计算保持一致
债务/融资计划表(如适用)
- 期初余额与来源或上期一致
- 利息基于适当余额计算(通常为期初余额)
- 还款遵守现金可用性和优先级
- 期末余额不能为负数
- 各批次合计正确汇总
回报/输出分析
- 退出/终值计算正确
- 包含所有相关调整
- 现金流符号正确(投资为负,收益为正)
- IRR/MOIC 公式引用完整区间
- 结果对于该情景合理
敏感性分析表(如适用)
- 网格维度为奇数(5×5 或 7×7)——存在真正的中心单元格
- 行和列轴值围绕基准情形对称(
[base-2Δ, base-Δ, base, base+Δ, base+2Δ]) - 中心单元格输出等于模型的实际 IRR/MOIC——确认表格连接正确
- 中心单元格已高亮(中蓝色填充
#BDD7EE,粗体字) - 行和列标题包含适当的输入值
- 每个数据单元格包含公式(非硬编码)
- 每个数据单元格显示不同的值
- 数值按预期方向变化(更高的退出倍数 → 更高的 IRR 等)
格式
- 硬编码输入为蓝色(0000FF)
- 计算公式为黑色(000000)
- 同一工作表内链接为紫色(800080)
- 跨工作表链接为绿色(008000)
- 所有数字右对齐
- 全表应用适当的数字格式
- 无单元格显示错误值(#REF!、#DIV/0!、#VALUE!、#NAME?)
逻辑合理性检查
- 数字的数量级合理
- 趋势合理(增长、下降、稳定符合预期)
- 无明显错误值(应为正数处为负数、不可能的百分比等)
- 关键输出在该类分析的合理范围内
常见错误及避免方法
| 错误 | 问题所在 | 修复方法 |
|---|---|---|
| 硬编码计算值 | 输入变化时模型不更新 | 始终使用引用源单元格的公式 |
| 复制后单元格引用错误 | 公式指向错误的单元格 | 验证所有链接,使用适当的 $ 锚定 |
| 循环引用错误 | 模型无法计算 | 利息类计算使用期初余额,打破循环 |
| 各部分不平衡 | 应匹配的合计不匹配 | 确保某一项为平衡项(按差额计算) |
| 不可能出现负余额处出现负余额 | 支付/使用超过可用量 | 适当使用 MAX(0, ...) 或 MIN 函数 |
| IRR/回报错误 | 符号错误或区间不完整 | 检查现金流符号并确保公式覆盖所有期间 |
| 敏感性分析表显示相同值 | 公式未随输入变化 | 检查单元格引用——需要混合引用($A5、B$4) |
| 滚动结转不平 | 期初 ≠ 上期期末 | 验证各期间之间的链接 |
| 符号约定不一致 | 加法变减法或反之 | 全程一致遵循模板的约定 |
与用户协作 — 逐节检查点
- 如果模板结构不清晰,先询问再继续
- 如果用户需求与模板冲突,确认其偏好
- 每完成一个主要部分后,停下来与用户核实再继续:
- 在 Sources & Uses 之后 → 展示平衡表,确认 plug 正确,获得确认后再构建 operating model
- 在 Operating Model / Projections 之后 → 展示预测 P&L,确认增长率和利润率看起来正确,获得确认后再做 debt schedule
- 在 Debt Schedule 之后 → 展示期初/期末余额和利息,确认 waterfall 逻辑,获得确认后再做 returns
- 在 Returns (IRR/MOIC) 之后 → 展示现金流序列和输出,确认符号和范围,获得确认后再做 sensitivity tables
- 在 Sensitivity Tables 之后 → 展示每个单元格都在变化,确认 base case 落在预期位置
- 如果在核实过程中发现错误,先修复再进入下一部分
- 展示你的工作 — 在有帮助时解释关键公式或假设
- 绝不要在未逐节确认的情况下呈现已完成的模型 — 在源头发现错误的单元格引用,比从损坏的 IRR 反推要快得多
本技能通过用正确的公式、恰当的格式和经过验证的计算填充模板,生成投资银行级 LBO 模型。本技能可适应任何模板结构,同时确保财务准确性和专业呈现标准。