forked from Zakaria/hermes-agent
Hermes-agent
This commit is contained in:
+451
@@ -0,0 +1,451 @@
|
||||
---
|
||||
title: "三表模型"
|
||||
sidebar_label: "三表模型"
|
||||
description: "在 Excel 中构建完整集成的三表模型(利润表、资产负债表、现金流量表),包含营运资本明细表、折旧摊销滚动表、债务计划表,以及使现金和留存收益勾稽的插销项。与 excel-author 配合使用。"
|
||||
---
|
||||
|
||||
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
||||
|
||||
# 三表模型
|
||||
|
||||
在 Excel 中构建完整集成的三表模型(利润表、资产负债表、现金流量表),包含营运资本明细表、折旧摊销滚动表、债务计划表,以及使现金和留存收益勾稽的插销项。与 excel-author 配合使用。
|
||||
|
||||
## Skill 元数据
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| 来源 | 可选 — 通过 `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` |
|
||||
| 相关 skill | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model) |
|
||||
|
||||
## 参考:完整 SKILL.md
|
||||
|
||||
:::info
|
||||
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 skill 激活时 agent 所看到的指令内容。
|
||||
:::
|
||||
|
||||
## 环境
|
||||
|
||||
本 skill 假设使用**无界面 openpyxl** — 即在磁盘上生成 .xlsx 文件。
|
||||
遵循 `excel-author` skill 关于单元格着色、公式、命名区域和敏感性分析表的规范。
|
||||
交付前重新计算:`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, 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 | 错误检查仪表板 |
|
||||
|
||||
**模板审查清单**
|
||||
- 确认模板中存在哪些标签页(并非所有模板都包含每张明细表)
|
||||
- 记录上表未列出的模板专属标签页
|
||||
- 了解标签页依赖关系(例如,哪些明细表汇入主报表)
|
||||
- 在每个标签页上定位输入单元格与公式单元格
|
||||
|
||||
### 理解模板结构
|
||||
|
||||
填写模板前,先熟悉其现有布局,确保数据录入位置正确且公式保持完整。
|
||||
|
||||
**识别行结构**
|
||||
- 在每个标签页顶部找到模型标题
|
||||
- 识别章节标题及其视觉分隔
|
||||
- 找到表示单位的行(百万美元、%、x 等)
|
||||
- 注意区分实际值与预测值期间的列标题
|
||||
- 确认期间标签(例如 FY2024A、FY2025E)
|
||||
- 识别输入单元格与公式单元格(通常通过字体颜色区分)
|
||||
|
||||
**识别列结构**
|
||||
- 确认最左列为行项目标签
|
||||
- 验证历史年份在预测年份之前
|
||||
- 注意历史期间与预测期间之间的视觉分隔线
|
||||
- 检查所有标签页的列顺序是否一致
|
||||
|
||||
**使用命名区域**
|
||||
模板通常对关键输入和输出使用命名区域。录入数据前:
|
||||
- 查看模板中现有的命名区域(Excel 中:公式 → 名称管理器)
|
||||
- 常见命名区域包括:收入增长率、成本百分比、关键输出(净利润、EBITDA、总债务、现金)、场景选择单元格
|
||||
- 确保输入录入在能够汇入这些命名区域的单元格中
|
||||
|
||||
### 预测期间
|
||||
- 模板通常从最后一个历史年份起向前预测 5 年
|
||||
- 验证历史(A)与预测(E)列已清晰分隔
|
||||
- 确认列使用财年标注(例如 FY2024A、FY2025E)
|
||||
|
||||
## 利润率分析
|
||||
|
||||
**注意:以下利润率分析仅在用户明确要求或模板明确需要时执行。如无提示,跳过本节。**
|
||||
|
||||
在利润表(IS)标签页上计算并展示盈利利润率,以追踪运营效率并支持同业比较。
|
||||
|
||||
### 核心利润率指标
|
||||
|
||||
| 利润率 | 公式 | 衡量内容 |
|
||||
|--------|---------|------------------|
|
||||
| 毛利率 | 毛利润 / 收入 | 定价能力、生产效率 |
|
||||
| EBITDA 利润率 | EBITDA / 收入 | 核心运营盈利能力 |
|
||||
| EBIT 利润率 | EBIT / 收入 | 折旧摊销后运营盈利能力 |
|
||||
| 净利润率 | 净利润 / 收入 | 最终盈利能力 |
|
||||
|
||||
### 含利润率的利润表布局
|
||||
|
||||
在每个利润行项目正下方展示利润率百分比:
|
||||
- 毛利润下方显示毛利率 %
|
||||
- EBIT 下方显示 EBIT 利润率 %
|
||||
- EBITDA 下方显示 EBITDA 利润率 %
|
||||
- 净利润下方显示净利润率 %
|
||||
|
||||
## 信用指标
|
||||
|
||||
**注意:以下信用分析仅在用户明确要求或模板明确需要时执行。如无提示,跳过本节。**
|
||||
|
||||
在资产负债表(BS)标签页上计算并展示信用/杠杆指标,以评估财务健康状况、债务承载能力和契约合规性。
|
||||
|
||||
### 核心信用指标
|
||||
|
||||
| 指标 | 公式 | 衡量内容 |
|
||||
|--------|---------|------------------|
|
||||
| 总债务 / EBITDA | 总债务 / 过去十二个月 EBITDA | 杠杆倍数 |
|
||||
| 净债务 / EBITDA | (总债务 - 现金)/ 过去十二个月 EBITDA | 扣除现金后的杠杆 |
|
||||
| 利息覆盖率 | EBITDA / 利息费用 | 偿债能力 |
|
||||
| 债务 / 总资本 | 总债务 /(总债务 + 权益) | 资本结构 |
|
||||
| 债务 / 权益 | 总债务 / 总权益 | 财务杠杆 |
|
||||
| 流动比率 | 流动资产 / 流动负债 | 短期流动性 |
|
||||
| 速动比率 | (流动资产 - 存货)/ 流动负债 | 即时流动性 |
|
||||
|
||||
### 信用指标层级检查
|
||||
|
||||
验证乐观情景呈现最优信用状况:
|
||||
- 杠杆:乐观 < 基准 < 悲观(越低越好)
|
||||
- 覆盖率:乐观 > 基准 > 悲观(越高越好)
|
||||
- 流动性:乐观 > 基准 > 悲观(越高越好)
|
||||
|
||||
### 契约合规追踪
|
||||
|
||||
如已知债务契约条款,添加明确的合规检查,将实际指标与契约阈值进行比较。
|
||||
|
||||
## 情景分析(基准 / 乐观 / 悲观)
|
||||
|
||||
在假设标签页中使用情景切换(下拉菜单),配合 CHOOSE 或 INDEX/MATCH 公式。
|
||||
|
||||
| 情景 | 描述 |
|
||||
|----------|-------------|
|
||||
| 基准情景 | 管理层指引或市场一致预期 |
|
||||
| 乐观情景 | 超预期增长、利润率扩张 |
|
||||
| 悲观情景 | 低于趋势增长、利润率压缩 |
|
||||
|
||||
**关键敏感性驱动因素**:收入增长率、毛利率、SG&A %、DSO/DIO/DPO、资本支出 %、利率、税率。
|
||||
|
||||
**情景审计检查**:切换开关联动所有报表,所有情景下资产负债表平衡,现金勾稽,层级成立(乐观 > 基准 > 悲观,适用于净利润、EBITDA、自由现金流、各利润率)。
|
||||
|
||||
## SEC 申报文件数据提取
|
||||
|
||||
如果模板明确需要从 SEC 申报文件(10-K、10-Q)中提取数据,请参阅 [references/sec-filings.md](https://github.com/NousResearch/hermes-agent/blob/main/optional-skills/finance/3-statement-model/references/sec-filings.md) 获取详细提取指引。仅在使用上市公司监管申报文件数据填写模板时才需要此参考文档。
|
||||
|
||||
## 填写模型模板
|
||||
|
||||
本节提供填写任意三表财务模型模板的通用指引,同时保留现有公式并确保数据完整性。
|
||||
|
||||
### 第一步:分析模板结构
|
||||
|
||||
录入任何数据前,彻底审查模板以了解其架构:
|
||||
|
||||
**识别输入单元格与公式单元格**
|
||||
- 寻找区分输入单元格与公式单元格的视觉提示(字体颜色、单元格底纹)
|
||||
- 常见规范:蓝色字体 = 输入,黑色字体 = 公式,绿色字体 = 跨表链接
|
||||
- 使用 Excel 的追踪引用单元格/从属单元格功能(公式 → 追踪引用单元格)了解单元格关系
|
||||
- 检查可能控制关键输入的命名区域(公式 → 名称管理器)
|
||||
|
||||
**梳理模板流程**
|
||||
- 识别哪些标签页汇入其他标签页(例如,假设 → 利润表 → 资产负债表 → 现金流量表)
|
||||
- 记录各支撑明细表及其与主报表的勾稽关系
|
||||
- 在填写前记录模板的具体行项目和结构
|
||||
|
||||
### 第二步:在不破坏公式的前提下录入数据
|
||||
|
||||
**数据录入黄金法则**
|
||||
|
||||
| 规则 | 说明 |
|
||||
|------|-------------|
|
||||
| 仅编辑输入单元格 | 除非有意替换公式,否则绝不覆盖含公式的单元格 |
|
||||
| 保留单元格引用 | 复制数据时,使用选择性粘贴值(Ctrl+Shift+V),避免用源格式覆盖公式 |
|
||||
| 匹配模板单位 | 录入数据前确认模板使用千元、百万元还是实际值 |
|
||||
| 遵守符号规范 | 遵循模板现有的符号规范(例如,费用为正数或负数) |
|
||||
| 检查循环引用 | 如果模板使用迭代计算,确保已启用迭代计算 |
|
||||
|
||||
**安全数据录入流程**
|
||||
1. 确定指定用于输入的确切单元格(通常已高亮或标注)
|
||||
2. 先录入历史数据,然后验证这些期间的公式计算是否正确
|
||||
3. 录入驱动预测计算的假设驱动项
|
||||
4. 审查计算输出,确认公式按预期运行
|
||||
5. 如必须修改公式单元格,在修改前记录原始公式
|
||||
|
||||
**处理预置公式**
|
||||
- 如果公式引用了尚未填写的单元格,在所有输入完成前预期会出现临时错误(#REF!、#DIV/0!)
|
||||
- 当公式产生意外结果时,追踪引用单元格以识别缺失或错误的输入
|
||||
- 在未检查所有标签页的公式依赖关系前,绝不删除行/列
|
||||
|
||||
### 第三步:验证公式
|
||||
|
||||
**公式完整性检查**
|
||||
|
||||
在依赖模板输出前,验证公式是否正常运行:
|
||||
|
||||
| 检查类型 | 方法 |
|
||||
|------------|--------|
|
||||
| 追踪引用单元格 | 选择公式单元格 → 公式 → 追踪引用单元格,验证其引用了正确的输入 |
|
||||
| 追踪从属单元格 | 验证关键输入是否流向预期的输出单元格 |
|
||||
| 公式求值 | 使用公式 → 公式求值,逐步分析复杂计算 |
|
||||
| 检查硬编码 | 预测公式应引用假设项,不应包含硬编码值 |
|
||||
| 用已知值测试 | 输入简单测试值,验证公式是否产生预期结果 |
|
||||
| 跨标签页一致性 | 确保相同的公式逻辑适用于所有预测期间 |
|
||||
|
||||
**常见公式问题**
|
||||
- 混合绝对/相对引用导致跨期间复制时结果错误
|
||||
- 指向外部文件或已删除区域的断裂链接(#REF! 错误)
|
||||
- 收入尚未起量的早期期间出现除零错误(#DIV/0! 错误)
|
||||
- 循环引用警告(利息计算中可能是有意为之)
|
||||
- 预测列之间公式不一致(使用 Ctrl+\ 查找差异)
|
||||
|
||||
**验证跨标签页勾稽**
|
||||
- 确认出现在多个标签页上的数值是链接的(而非重复录入)
|
||||
- 验证明细表合计与主报表对应行项目勾稽
|
||||
- 检查所有标签页的期间标签是否对齐
|
||||
|
||||
### 第四步:按工作表进行质量检查
|
||||
|
||||
填写模板后,对每张工作表执行以下验证检查:
|
||||
|
||||
**利润表(IS)质量检查**
|
||||
- 历史期间收入数据与源数据匹配
|
||||
- 所有费用行项目加总等于报告合计
|
||||
- 小计(毛利润、EBIT、税前利润、净利润)计算正确
|
||||
- 税务计算逻辑合理(正确处理亏损情况)
|
||||
- 预测驱动项引用假设标签页(无硬编码)
|
||||
- 同比变动方向合理
|
||||
|
||||
**资产负债表(BS)质量检查**
|
||||
- 每个期间资产 = 负债 + 权益(主要检查项)
|
||||
- 现金余额与现金流量表期末现金匹配
|
||||
- 营运资本科目与支撑明细表勾稽(如适用)
|
||||
- 留存收益正确滚动:期初留存收益 + 净利润 - 股息 +/- 调整项 = 期末留存收益
|
||||
- 债务余额与债务计划表勾稽(如适用)
|
||||
- 所有资产负债表项目符号正确(资产为正,大多数负债为正)
|
||||
|
||||
**现金流量表(CF)质量检查**
|
||||
- 经营活动现金流顶部净利润与利润表净利润匹配
|
||||
- 非现金加回项(折旧摊销、股权激励等)与其来源明细表/报表勾稽
|
||||
- 营运资本变动符号正确(资产增加 = 现金使用 = 负数)
|
||||
- 资本支出与固定资产明细表或固定资产滚动表勾稽
|
||||
- 融资活动与资产负债表债务和权益科目变动勾稽
|
||||
- 期末现金与资产负债表现金匹配
|
||||
- 期初现金等于上期期末现金
|
||||
|
||||
**支撑明细表质量检查**
|
||||
- 期初余额等于上期期末余额
|
||||
- 滚动逻辑完整(期初 + 增加 - 减少 = 期末)
|
||||
- 明细表合计与主报表行项目勾稽
|
||||
- 计算中使用的假设与假设标签页匹配
|
||||
|
||||
### 第五步:跨报表完整性检查
|
||||
|
||||
验证各张工作表后,确认三张报表已正确集成:
|
||||
|
||||
| 检查项 | 公式 | 预期结果 |
|
||||
|-------|---------|-----------------|
|
||||
| 资产负债表平衡 | 资产 - 负债 - 权益 | = 0 |
|
||||
| 现金勾稽 | 现金流量表期末现金 - 资产负债表现金 | = 0 |
|
||||
| 净利润勾稽 | 利润表净利润 - 现金流量表起始净利润 | = 0 |
|
||||
| 留存收益 | 期初留存收益 + 净利润 - 股息 - 资产负债表期末留存收益 | = 0(根据需要调整股权激励/其他项目) |
|
||||
|
||||
### 第六步:最终审查
|
||||
|
||||
在认为模型完成前:
|
||||
- 切换所有情景(如适用),验证每种情景下检查均通过
|
||||
- 审查所有 #REF!、#DIV/0!、#VALUE! 和 #NAME? 错误,解决或记录说明
|
||||
- 确认所有输入单元格已填写(搜索占位符值)
|
||||
- 验证所有标签页单位一致
|
||||
- 在进行任何额外修改前保存一个干净版本
|
||||
|
||||
## 模型验证与审计
|
||||
|
||||
本节汇总已完成模板的所有验证检查和审计程序。
|
||||
|
||||
### 核心勾稽项(必须始终成立)
|
||||
|
||||
所有公式详情见 [references/formulas.md](https://github.com/NousResearch/hermes-agent/blob/main/optional-skills/finance/3-statement-model/references/formulas.md)。
|
||||
|
||||
| 检查项 | 公式 | 预期结果 |
|
||||
|-------|---------|-----------------|
|
||||
| 资产负债表平衡 | 资产 - 负债 - 权益 | = 0 |
|
||||
| 现金勾稽 | 现金流量表期末现金 - 资产负债表现金 | = 0 |
|
||||
| 月度与年度现金 | 期末现金(月度)- 期末现金(年度) | = 0 |
|
||||
| 净利润勾稽 | 利润表净利润 - 现金流量表起始净利润 | = 0 |
|
||||
| 留存收益 | 期初留存收益 + 净利润 + 股权激励 - 股息 - 资产负债表期末留存收益 | = 0 |
|
||||
| 权益融资 | 资产负债表普通股/资本公积变动 - 融资活动权益发行 | = 0 |
|
||||
| 第 0 年权益 | 第 0 年募集权益 - 第 1 年期初权益资本 | = 0 |
|
||||
|
||||
### 符号规范参考
|
||||
|
||||
| 报表 | 项目 | 符号规范 |
|
||||
|-----------|------|-----------------|
|
||||
| 经营活动现金流 | 折旧摊销、股权激励 | 正数(加回) |
|
||||
| 经营活动现金流 | 应收账款增加 | 负数(现金使用) |
|
||||
| 经营活动现金流 | 应付账款增加 | 正数(现金来源) |
|
||||
| 投资活动现金流 | 资本支出 | 负数 |
|
||||
| 融资活动现金流 | 债务发行 | 正数 |
|
||||
| 融资活动现金流 | 债务偿还 | 负数 |
|
||||
| 融资活动现金流 | 股息 | 负数 |
|
||||
|
||||
### 循环引用处理
|
||||
|
||||
利息费用产生循环:利息 → 净利润 → 现金 → 债务余额 → 利息
|
||||
|
||||
在 Excel 中启用迭代计算:文件 → 选项 → 公式 → 启用迭代计算。设置最大迭代次数为 100,最大误差为 0.001。在假设标签页中添加断路器切换开关。
|
||||
|
||||
### 检查类别
|
||||
|
||||
**第 1 节:货币一致性**
|
||||
- 货币已在假设标签页中标识和记录
|
||||
- 所有标签页使用一致的货币符号和量级
|
||||
- 单位行与模型货币匹配
|
||||
|
||||
**第 2 节:资产负债表完整性**
|
||||
- 每个期间资产 = 负债 + 权益
|
||||
- 公式:资产 - 负债 - 权益(必须 = 0)
|
||||
|
||||
**第 3 节:现金流量完整性**
|
||||
- 现金与资产负债表勾稽(现金流量表期末现金 = 资产负债表现金)
|
||||
- 月度与年度现金:期末现金(月度)= 期末现金(年度)
|
||||
- 净利润与利润表勾稽(现金流量表净利润 = 利润表净利润)
|
||||
- 折旧摊销与明细表勾稽
|
||||
- 股权激励与利润表勾稽
|
||||
- 应收账款变动、存货变动、应付账款变动与营运资本明细表勾稽
|
||||
- 资本支出与折旧摊销明细表勾稽
|
||||
|
||||
**第 4 节:留存收益**
|
||||
- 留存收益滚动检查:期初留存收益 + 净利润 + 股权激励 - 股息 = 期末留存收益
|
||||
- 展示组成部分明细以便调试
|
||||
|
||||
**第 5 节:营运资本**
|
||||
- 应收账款、存货、应付账款与资产负债表勾稽
|
||||
- DSO、DIO、DPO 合理性检查(超出正常范围时标记)
|
||||
|
||||
**第 6 节:债务计划表**
|
||||
- 总债务与资产负债表勾稽(流动 + 长期债务)
|
||||
- 利息计算与利润表勾稽
|
||||
|
||||
**第 6b 节:权益融资**
|
||||
- 权益发行所得与资产负债表普通股/资本公积增加额勾稽
|
||||
- 权益带来的现金增加 = 权益科目增加(必须平衡)
|
||||
- 权益募集勾稽:资产负债表普通股/资本公积变动 = 融资活动权益发行(必须 = 0)
|
||||
- 第 0 年权益勾稽:第 0 年募集权益 = 第 1 年期初权益资本
|
||||
|
||||
**第 6c 节:净经营亏损明细表**
|
||||
- 第 1 年/成立时期初净经营亏损 = 0(新企业从零净经营亏损起步)
|
||||
- 仅当税前利润 < 0 时净经营亏损增加(必须实现亏损才能产生净经营亏损)
|
||||
- 递延税资产与资产负债表勾稽(净经营亏损明细表递延税资产 = 资产负债表递延税资产)
|
||||
- 净经营亏损利用额 ≤ 税前利润的 80%(2017 年后联邦限制)
|
||||
- 净经营亏损余额非负(不能利用超过可用额度)
|
||||
- 仅当税前利润 < 0 时产生净经营亏损
|
||||
- 应税收入 ≤ 0 时税务费用 = 0
|
||||
|
||||
**第 7 节:情景层级**
|
||||
- 绝对指标:乐观 > 基准 > 悲观(净利润、EBITDA、自由现金流)
|
||||
- 利润率:乐观 > 基准 > 悲观(毛利率 %、EBITDA %、净利润率 %)
|
||||
- 信用指标:杠杆方面乐观 < 基准 < 悲观(反向)
|
||||
|
||||
**第 8 节:公式完整性**
|
||||
- 营业成本、销售费用、管理费用、研发费用、股权激励由收入百分比驱动(无硬编码)
|
||||
- 预测年份间公式一致
|
||||
- 无 #REF!、#DIV/0!、#VALUE! 错误
|
||||
|
||||
**第 9 节:信用指标阈值**
|
||||
- 根据契约阈值将指标标记为绿色/黄色/红色
|
||||
- 汇总所有红色预警
|
||||
|
||||
### 主检查公式
|
||||
|
||||
将所有章节状态汇总为单一主检查:
|
||||
- 如果所有章节通过 → "✓ ALL CHECKS PASS"
|
||||
- 如果任何章节失败 → "✗ ERRORS DETECTED - REVIEW BELOW"
|
||||
|
||||
### 快速调试流程
|
||||
|
||||
当主状态显示错误时:
|
||||
1. 滚动查找红色高亮章节
|
||||
2. 识别哪个检查类别存在失败
|
||||
3. 导航至源标签页进行排查
|
||||
4. 修复根本问题
|
||||
5. 返回检查标签页验证是否已解决
|
||||
|
||||
|
||||
## 数据来源 — 优先 MCP,其次网络回退
|
||||
|
||||
以下许多段落提到"使用 S&P Kensho MCP / Daloopa MCP / FactSet MCP"。这些是原 Cowork 插件上下文中的商业金融数据 MCP。在 Hermes 中:
|
||||
|
||||
- **如果已配置任何结构化金融数据 MCP**(Hermes 支持 MCP — 参见 `native-mcp` skill),优先使用它获取时点可比数据、前例交易和申报文件。
|
||||
- **否则**,回退至:
|
||||
- 针对 SEC EDGAR(`https://www.sec.gov/cgi-bin/browse-edgar`)使用 `web_search` / `web_extract` 获取美国申报文件
|
||||
- 公司投资者关系页面获取新闻稿、业绩演示文稿
|
||||
- `browser_navigate` 访问交互式数据门户
|
||||
- 用户提供的数据(当上下文中没有时,明确询问)
|
||||
- **绝不捏造数据**。如果某个倍数、前例或申报数字无法溯源,将该单元格标记为 `[UNSOURCED]` 并向用户说明。
|
||||
|
||||
## 归属声明
|
||||
|
||||
本 skill 改编自 Anthropic 的 Claude 金融服务插件套件(Apache-2.0)。Office-JS / Cowork 实时 Excel 路径已移除;本版本通过 `excel-author` skill 的规范面向无界面 openpyxl。原始来源:https://github.com/anthropics/financial-services
|
||||
+682
@@ -0,0 +1,682 @@
|
||||
---
|
||||
title: "可比公司分析"
|
||||
sidebar_label: "可比公司分析"
|
||||
description: "在 Excel 中构建可比公司分析——运营指标、估值倍数、与同行集合的统计基准对比"
|
||||
---
|
||||
|
||||
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
||||
|
||||
# 可比公司分析
|
||||
|
||||
在 Excel 中构建机构级可比公司分析——运营指标、估值倍数、与同行集合的统计基准对比。与 excel-author 配合使用。适用于上市公司估值、IPO 定价、行业基准对比或异常值检测。
|
||||
|
||||
## Skill 元数据
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| 来源 | 可选——通过 `hermes skills install official/finance/comps-analysis` 安装 |
|
||||
| 路径 | `optional-skills/finance/comps-analysis` |
|
||||
| 版本 | `1.0.0` |
|
||||
| 作者 | Anthropic(由 Nous Research 改编) |
|
||||
| 许可证 | Apache-2.0 |
|
||||
| 平台 | linux, macos, windows |
|
||||
| 标签 | `finance`, `valuation`, `comps`, `excel`, `openpyxl`, `modeling`, `investment-banking` |
|
||||
| 相关 skills | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model) |
|
||||
|
||||
## 参考:完整 SKILL.md
|
||||
|
||||
:::info
|
||||
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时所看到的指令内容。
|
||||
:::
|
||||
|
||||
## 环境
|
||||
|
||||
此 skill 假设使用**无界面 openpyxl**——你在磁盘上生成 .xlsx 文件。
|
||||
遵循 `excel-author` skill 关于单元格着色、公式、命名区域和敏感性表格的约定。
|
||||
交付前重新计算:`python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx`。
|
||||
|
||||
# 可比公司分析
|
||||
|
||||
## ⚠️ 关键:数据来源优先级(请先阅读)
|
||||
|
||||
**始终遵循以下数据来源层级:**
|
||||
|
||||
1. **首先:检查 MCP 数据来源** - 如果 S&P Kensho MCP、FactSet MCP 或 Daloopa MCP 可用,则专门使用它们获取财务和交易信息
|
||||
2. **如果上述 MCP 数据来源可用,则不要使用网络搜索**
|
||||
3. **仅当 MCP 不可用时:** 再使用 Bloomberg Terminal、SEC EDGAR 文件或其他机构来源
|
||||
4. **绝不将网络搜索作为主要数据来源** - 它缺乏机构级分析所需的准确性、审计追踪和可靠性
|
||||
|
||||
**原因:** MCP 来源提供经过验证的机构级数据,并附有适当引用。网络搜索结果可能过时、不准确,或对财务分析不可靠。
|
||||
|
||||
---
|
||||
|
||||
## 概述
|
||||
此 skill 指导 agent 构建机构级可比公司分析,结合运营指标、估值倍数和统计基准对比。输出为结构化的 Excel/电子表格,通过同行比较支持有据可查的投资决策。
|
||||
|
||||
**参考材料与情境化:**
|
||||
|
||||
示例可比公司分析文件位于 `examples/comps_example.xlsx`。使用此 skill 目录中的示例文件时,请智慧地加以运用:
|
||||
|
||||
**可以使用示例来:**
|
||||
- 理解结构层级(各部分如何流转)
|
||||
- 把握预期的严谨程度(统计深度、文档标准)
|
||||
- 学习原则(清晰的标题、透明的公式、审计追踪)
|
||||
|
||||
**不要使用示例来:**
|
||||
- 精确复制格式或指标
|
||||
- 不考虑上下文地照搬布局
|
||||
- 不顾受众地套用相同视觉风格
|
||||
|
||||
**始终先问自己:**
|
||||
1. **"你有偏好的格式,还是我应该调整模板风格?"**
|
||||
2. **"受众是谁?"**(投资委员会、董事会演示、快速参考、详细备忘录)
|
||||
3. **"核心问题是什么?"**(估值、增长分析、竞争定位、效率)
|
||||
4. **"背景是什么?"**(并购评估、投资决策、行业基准对比、绩效回顾)
|
||||
|
||||
**根据具体情况调整:**
|
||||
- **行业背景**:大型科技巨头与新兴 SaaS 初创公司需要不同的指标
|
||||
- **行业特定需求**:尽早添加相关指标(例如,科技行业的云 ARR、企业客户数、开发者生态)
|
||||
- **公司熟悉度**:知名公司可能需要较少背景介绍,更多关注差异分析
|
||||
- **决策类型**:并购与持续投资组合监控需要不同侧重
|
||||
|
||||
**核心原则:** 运用模板原则(清晰结构、统计严谨性、透明公式),但根据上下文灵活执行。目标是机构级质量的分析,而非机构级外观的模板。
|
||||
|
||||
用户提供的示例和明确偏好始终优先于默认设置。
|
||||
|
||||
## 核心理念
|
||||
**"先构建正确的结构,再让数据讲述故事。"**
|
||||
|
||||
从迫使战略思考的标题开始,输入干净的数据,构建透明的公式,让统计结果自动呈现。一份好的可比分析应该让没有参与构建的人也能立即读懂。
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 关键:公式优先于硬编码 + 逐步验证
|
||||
|
||||
**公式,而非硬编码:**
|
||||
- 每个派生值(利润率、倍数、统计数据)都必须是引用输入单元格的 Excel 公式——绝不粘贴预先计算的数字
|
||||
- 使用 Python/openpyxl 构建表格时:写入 `cell.value = "=E7/C7"`(公式字符串),而非 `cell.value = 0.687`(计算结果)
|
||||
- 唯一可以硬编码的值是原始输入数据(收入、EBITDA、股价等)——每一个都需要附带来源的单元格注释
|
||||
- 原因:模型必须在输入变化时自动更新。硬编码的利润率是潜伏的静默错误。
|
||||
|
||||
**与用户逐步验证:**
|
||||
- 设置结构后 → 在填充数据前向用户展示标题布局
|
||||
- 输入原始数据后 → 向用户展示输入块,在构建公式前确认来源/期间
|
||||
- 构建运营指标公式后 → 展示计算出的利润率,在进入估值前与用户进行合理性检查
|
||||
- 构建估值倍数后 → 展示倍数,在添加统计数据前确认其合理性
|
||||
- 不要端到端地构建整个表格后再呈现——通过逐节确认尽早发现错误
|
||||
|
||||
---
|
||||
|
||||
## 第 1 节:文档结构与设置
|
||||
|
||||
### 标题块(第 1-3 行)
|
||||
```
|
||||
第 1 行:[分析标题] - 可比公司分析
|
||||
第 2 行:[公司列表及代码] • [公司 1 (TICK1)] • [公司 2 (TICK2)] • [公司 3 (TICK3)]
|
||||
第 3 行:截至 [期间] | 所有数据单位为 [百万/十亿美元],每股金额和比率除外
|
||||
```
|
||||
|
||||
**重要性:** 立即建立背景。任何打开此文件的人都能知道分析内容、创建时间以及如何解读数字。
|
||||
|
||||
### 视觉约定标准(可选——用户偏好和上传的模板始终优先)
|
||||
|
||||
**重要:这些仅为建议的默认值。始终优先考虑:**
|
||||
1. 用户的明确格式偏好
|
||||
2. 任何上传模板文件中的格式
|
||||
3. 公司/团队风格指南
|
||||
4. 这些默认值(仅在没有其他指导时使用)
|
||||
|
||||
**建议字体与排版:**
|
||||
- **字体系列**:Times New Roman(专业、易读、行业标准)
|
||||
- **字体大小**:数据单元格 11pt,标题 12pt
|
||||
- **粗体文本**:节标题、公司名称、统计标签
|
||||
|
||||
**默认颜色与底纹——专业蓝/灰调色板(简洁为上):**
|
||||
- **保持克制**——只用蓝色和灰色。不要引入绿色、橙色、红色或多种强调色。一份干净的可比分析表格总共使用 3-4 种颜色。
|
||||
- **节标题**(例如"运营统计与财务指标"):
|
||||
- 深蓝色背景(`#1F4E79` 或 `#17365D` 海军蓝)
|
||||
- 白色粗体文字
|
||||
- 跨所有列的整行底纹
|
||||
- **列标题**(例如"公司"、"收入"、"利润率"):
|
||||
- 浅蓝色背景(`#D9E1F2` 或类似淡蓝色)
|
||||
- 黑色粗体文字
|
||||
- 居中对齐
|
||||
- **数据行**:
|
||||
- 公司数据白色背景
|
||||
- 公式用黑色文字;硬编码输入用蓝色文字
|
||||
- **统计行**(最大值、第 75 百分位等):
|
||||
- 浅灰色背景(`#F2F2F2`)
|
||||
- 黑色文字,标签左对齐
|
||||
- **整个调色板就是这些**:深蓝 + 浅蓝 + 浅灰 + 白色。除非用户模板另有说明,不添加其他颜色。
|
||||
|
||||
**建议格式约定:**
|
||||
- **小数精度**:
|
||||
- 百分比:1 位小数(12.3%)
|
||||
- 倍数:1 位小数(13.5x)
|
||||
- 美元金额:无小数,千位分隔符(69,632)
|
||||
- 以百分比显示的利润率:1 位小数(68.7%)
|
||||
- **边框**:无边框(简洁、极简外观)
|
||||
- **对齐**:所有指标居中对齐,外观整洁统一
|
||||
- **单元格尺寸**:所有列宽统一/均匀,所有行高一致(形成整洁、专业的网格)
|
||||
|
||||
**注意:** 如果用户提供模板文件或指定不同格式,请使用该格式。
|
||||
|
||||
---
|
||||
|
||||
## 第 2 节:运营统计与财务指标
|
||||
|
||||
### 核心列(从这些开始)
|
||||
1. **公司** - 格式一致的名称
|
||||
2. **收入** - 规模指标(可以是 LTM、季度或年度,视情况而定)
|
||||
3. **收入增长** - 同比百分比变化
|
||||
4. **毛利润** - 收入减去销售成本
|
||||
5. **毛利率** - 毛利润/收入(基本盈利能力)
|
||||
6. **EBITDA** - 息税折旧摊销前利润
|
||||
7. **EBITDA 利润率** - EBITDA/收入(运营效率)
|
||||
|
||||
### 可选补充(根据行业/目的选择)
|
||||
- **季度与 LTM** - 如果季节性重要,两者都包含
|
||||
- **自由现金流** - 适用于资本密集型或 SaaS 业务
|
||||
- **FCF 利润率** - FCF/收入(现金生成效率)
|
||||
- **净利润** - 适用于成熟的盈利公司
|
||||
- **营业利润** - 适用于折旧摊销差异较大的业务
|
||||
- **资本支出指标** - 适用于重资产行业
|
||||
- **Rule of 40(40 法则)** - 专门针对 SaaS(增长率 % + 利润率 %)
|
||||
- **FCF 转化率** - 用于盈利质量分析(高级)
|
||||
|
||||
### 公式示例(以第 7 行为例)
|
||||
```excel
|
||||
// 核心比率——始终计算这些
|
||||
毛利率 (F7): =E7/C7
|
||||
EBITDA 利润率 (H7): =G7/C7
|
||||
|
||||
// 可选比率——如相关则包含
|
||||
FCF 利润率: =[FCF]/[Revenue]
|
||||
净利率: =[Net Income]/[Revenue]
|
||||
Rule of 40: =[Growth %]+[FCF Margin %]
|
||||
```
|
||||
|
||||
**黄金法则:** 每个比率应为 [某项] / [收入] 或 [某项] / [本表中的某项]。保持简单。
|
||||
|
||||
### 统计块(公司数据之后)
|
||||
|
||||
**关键:为所有可比指标(比率、利润率、增长率、倍数)添加统计公式。**
|
||||
|
||||
```
|
||||
[留一个空行用于视觉分隔]
|
||||
- 最大值:=MAX(B7:B9)
|
||||
- 第 75 百分位:=QUARTILE(B7:B9,3)
|
||||
- 中位数:=MEDIAN(B7:B9)
|
||||
- 第 25 百分位:=QUARTILE(B7:B9,1)
|
||||
- 最小值:=MIN(B7:B9)
|
||||
```
|
||||
|
||||
**需要统计数据的列(可比指标):**
|
||||
- 收入增长率 %、毛利率 %、EBITDA 利润率 %、每股收益
|
||||
- EV/收入、EV/EBITDA、市盈率、股息收益率 %、Beta
|
||||
|
||||
**不需要统计数据的列(规模指标):**
|
||||
- 收入、EBITDA、净利润(绝对规模因公司体量而异)
|
||||
- 市值、企业价值(不同规模公司之间不可比)
|
||||
|
||||
**注意:** 在公司数据和统计行之间添加一个空行用于视觉分隔。不要添加"行业统计"或"估值统计"标题行。
|
||||
|
||||
**四分位数的重要性:** 它们显示分布情况,而非仅仅是平均值。第 75 百分位倍数告诉你"优质"公司的交易水平。
|
||||
|
||||
---
|
||||
|
||||
## 第 3 节:估值倍数与投资指标
|
||||
|
||||
### 核心估值列(从这些开始)
|
||||
1. **公司** - 与运营部分顺序相同
|
||||
2. **市值** - 当前市场估值
|
||||
3. **企业价值** - 市值 ± 净债务/现金
|
||||
4. **EV/收入** - 市场为每美元销售额支付的价格
|
||||
5. **EV/EBITDA** - 市场为每美元利润支付的价格
|
||||
6. **市盈率** - 相对于净利润的价格
|
||||
|
||||
### 可选估值指标(根据情况选择)
|
||||
- **FCF 收益率** - FCF/市值(用于以现金为中心的分析)
|
||||
- **PEG 比率** - 市盈率/增长率(用于成长型公司)
|
||||
- **市净率** - 市场价值与账面价值之比(用于重资产业务)
|
||||
- **ROE/ROA** - 回报指标(用于盈利能力比较)
|
||||
- **收入/EBITDA 复合年增长率** - 历史增长率(用于趋势分析)
|
||||
- **资产周转率** - 收入/资产(用于运营效率分析)
|
||||
- **债务/权益比** - 杠杆率(用于资本结构分析)
|
||||
|
||||
**关键原则:** 包含 3-5 个对你所在行业重要的核心倍数。不要仅仅因为可以就包含所有可能的指标。
|
||||
|
||||
### 公式示例
|
||||
```excel
|
||||
// 核心倍数——始终包含这些
|
||||
EV/收入: =[Enterprise Value]/[LTM Revenue]
|
||||
EV/EBITDA: =[Enterprise Value]/[LTM EBITDA]
|
||||
市盈率: =[Market Cap]/[Net Income]
|
||||
|
||||
// 可选倍数——如数据可用则包含
|
||||
FCF 收益率: =[LTM FCF]/[Market Cap]
|
||||
PEG 比率: =[P/E]/[Growth Rate %]
|
||||
```
|
||||
|
||||
### 交叉引用规则
|
||||
**关键:** 估值倍数必须引用运营指标部分。绝不两次输入相同的原始数据。如果收入在 C7,则 EV/收入公式应引用 C7。
|
||||
|
||||
### 统计块
|
||||
与运营部分结构相同:每个指标的最大值、第 75 百分位、中位数、第 25 百分位、最小值。在公司数据和统计行之间添加一个空行用于视觉分隔。不要添加"估值统计"标题行。
|
||||
|
||||
---
|
||||
|
||||
## 第 4 节:注释与方法论文档
|
||||
|
||||
### 必要组成部分
|
||||
|
||||
**数据来源与质量:**
|
||||
- 数据来自哪里?(S&P Kensho MCP、FactSet MCP、Daloopa MCP、Bloomberg、SEC 文件)
|
||||
- 涵盖哪个期间?(2024 年第四季度,经审计数据)
|
||||
- 如何验证?(与 10-K/10-Q 交叉核对)
|
||||
- 注意:如可用,优先使用 MCP 数据来源(S&P Kensho、FactSet、Daloopa)以获得更好的准确性和可追溯性
|
||||
|
||||
**关键定义:**
|
||||
- EBITDA 计算方法(毛利润 + 折旧摊销,或营业利润 + 折旧摊销)
|
||||
- 自由现金流公式(经营性现金流 - 资本支出)
|
||||
- 特殊指标说明(Rule of 40、FCF 转化率)
|
||||
- 时间期间定义(LTM、复合年增长率计算期间)
|
||||
|
||||
**估值方法论:**
|
||||
- 企业价值如何计算?(市值 + 净债务)
|
||||
- 使用了哪些增长率?(历史复合年增长率、前瞻性预测)
|
||||
- 做了哪些调整?(排除一次性项目、标准化利润率)
|
||||
|
||||
**分析框架:**
|
||||
- 投资论点是什么?(云/SaaS 效率)
|
||||
- 哪些指标最重要?(现金生成、资本效率)
|
||||
- 读者应如何解读统计数据?(四分位数提供背景)
|
||||
|
||||
---
|
||||
|
||||
## 第 5 节:选择正确的指标(决策框架)
|
||||
|
||||
### 从"我要回答什么问题?"开始
|
||||
|
||||
**"哪家公司被低估了?"**
|
||||
→ 重点关注:EV/收入、EV/EBITDA、市盈率、市值
|
||||
→ 跳过:运营细节、增长指标
|
||||
|
||||
**"哪家公司最高效?"**
|
||||
→ 重点关注:毛利率、EBITDA 利润率、FCF 利润率、资产周转率
|
||||
→ 跳过:规模指标、绝对美元金额
|
||||
|
||||
**"哪家公司增长最快?"**
|
||||
→ 重点关注:收入增长率 %、EBITDA 复合年增长率、用户/客户增长
|
||||
→ 跳过:利润率指标、杠杆比率
|
||||
|
||||
**"哪家公司是最佳现金生成者?"**
|
||||
→ 重点关注:FCF、FCF 利润率、FCF 转化率、资本支出强度
|
||||
→ 跳过:EBITDA、市盈率
|
||||
|
||||
### 行业特定指标选择
|
||||
|
||||
**软件/SaaS:**
|
||||
必须有:收入增长、毛利率、Rule of 40
|
||||
可选:ARR、净美元留存率、CAC 回收期
|
||||
跳过:资产周转率、库存指标
|
||||
|
||||
**制造业/工业:**
|
||||
必须有:EBITDA 利润率、资产周转率、资本支出/收入
|
||||
可选:ROA、库存周转率、积压订单
|
||||
跳过:Rule of 40、SaaS 指标
|
||||
|
||||
**金融服务:**
|
||||
必须有:ROE、ROA、效率比率、市盈率
|
||||
可选:净息差、贷款损失准备金
|
||||
跳过:毛利率、EBITDA(对银行无意义)
|
||||
|
||||
**零售/电商:**
|
||||
必须有:收入增长、毛利率、库存周转率
|
||||
可选:同店销售额、客户获取成本
|
||||
跳过:重度研发或资本支出指标
|
||||
|
||||
### "5-10 法则"
|
||||
|
||||
**5 个运营指标** - 收入、增长、2-3 个利润率/效率指标
|
||||
**5 个估值指标** - 市值、企业价值、3 个倍数
|
||||
**= 共 10 列** - 足以讲述故事,又不至于迷失方向
|
||||
|
||||
如果你有超过 15 个指标,可能包含了噪音。大刀阔斧地删减。
|
||||
|
||||
---
|
||||
|
||||
## 第 6 节:最佳实践与质量检查
|
||||
|
||||
### 开始之前
|
||||
1. **定义同行组** - 公司必须真正可比(相似的商业模式、规模、地域)
|
||||
2. **选择正确的期间** - LTM 平滑季节性;季度数据显示趋势
|
||||
3. **预先统一单位** - 百万与十亿的决定影响一切
|
||||
4. **规划数据来源** - 知道每个数字来自哪里
|
||||
|
||||
### 构建过程中
|
||||
1. **先输入所有原始数据** - 在编写公式之前完成蓝色文字部分
|
||||
2. **为所有硬编码输入添加单元格注释** - 右键单击单元格 → 插入注释 → 记录来源或假设
|
||||
|
||||
**对于有来源的数据,精确引用来源:**
|
||||
- 示例:"Bloomberg Terminal - MSFT Equity DES,访问于 2024-10-02"
|
||||
- 示例:"2024 年第四季度 10-K 文件,第 42 页,行项目'总收入'"
|
||||
- 示例:"FactSet 截至 2024-10-02 的一致性预测"
|
||||
- **尽可能包含超链接**:右键单击单元格 → 链接 → 粘贴 SEC 文件、数据来源或报告的 URL
|
||||
|
||||
**对于假设,解释推理:**
|
||||
- 示例:"基于同行中位数假设 15% EBITDA 利润率,公司未披露"
|
||||
- 示例:"企业价值估算为市值 + 5000 万美元净债务(来自第三季度资产负债表,第四季度尚未公布)"
|
||||
- 示例:"前瞻性市盈率基于市场一致性每股收益 3.45 美元(12 位分析师预测的平均值)"
|
||||
|
||||
**重要性**:支持审计追踪、数据验证、假设透明度和未来更新
|
||||
3. **逐行构建公式** - 在继续之前测试每个计算
|
||||
4. **对标题使用绝对引用** - `$C$6` 锁定标题行
|
||||
5. **格式一致** - 百分比显示为百分比,而非小数
|
||||
6. **添加条件格式** - 自动突出显示异常值
|
||||
|
||||
### 合理性检查
|
||||
- **利润率测试**:毛利率 > EBITDA 利润率 > 净利率(根据定义始终成立)
|
||||
- **倍数合理性**:
|
||||
- EV/收入:通常 0.5-20x(因行业差异较大)
|
||||
- EV/EBITDA:通常 8-25x(跨行业相对一致)
|
||||
- 市盈率:通常 10-50x(取决于增长率)
|
||||
- **增长-倍数相关性**:增长越高通常意味着倍数越高
|
||||
- **规模-效率权衡**:较大公司通常有更好的利润率(规模效益)
|
||||
|
||||
### 常见错误
|
||||
❌ 在公式中混用市值和企业价值
|
||||
❌ 分子和分母使用不同时间期间(LTM 与季度)
|
||||
❌ 在公式中硬编码数字而非使用单元格引用
|
||||
❌ **硬编码输入没有引用来源或解释假设的单元格注释**
|
||||
❌ 在可用时缺少 SEC 文件或数据来源的超链接
|
||||
❌ 包含过多指标而无明确目的
|
||||
❌ 包含不可比公司(不同商业模式)
|
||||
❌ 使用过时数据而未披露
|
||||
❌ 错误计算百分比的平均值(应使用中位数)
|
||||
|
||||
---
|
||||
|
||||
## 第 6 节:高级功能
|
||||
|
||||
### 动态标题
|
||||
对于显示计算结果的列,使用清晰的单位标签:
|
||||
```
|
||||
收入增长(同比)% | EBITDA 利润率 | FCF 利润率 | Rule of 40
|
||||
```
|
||||
|
||||
### 四分位数分析的优势
|
||||
相比仅使用均值/中位数,四分位数显示:
|
||||
- **第 75 百分位** = "优质"公司在此交易
|
||||
- **中位数** = 典型市场估值
|
||||
- **第 25 百分位** = "折价"区间
|
||||
|
||||
这有助于回答:"我们的目标公司相对于同行是交易溢价还是折价?"
|
||||
|
||||
### 行业特定修改
|
||||
|
||||
**软件/SaaS:**
|
||||
- 添加:ARR、净美元留存率、CAC 回收期
|
||||
- 强调:Rule of 40、FCF 利润率、毛利率 >70%
|
||||
|
||||
**医疗健康:**
|
||||
- 添加:研发/收入、管线价值、监管状态
|
||||
- 强调:EBITDA 利润率、增长率、报销风险
|
||||
|
||||
**工业:**
|
||||
- 添加:积压订单、订单趋势、地域构成
|
||||
- 强调:ROIC、资产周转率、周期性调整
|
||||
|
||||
**消费品:**
|
||||
- 添加:同店销售额、客户获取成本、品牌价值
|
||||
- 强调:收入增长、毛利率、库存周转率
|
||||
|
||||
---
|
||||
|
||||
## 第 7 节:工作流程与实用技巧
|
||||
|
||||
### 分步流程
|
||||
1. **设置结构**(30 分钟)
|
||||
- 创建所有标题
|
||||
- 格式化单元格(输入用蓝色,公式用黑色)
|
||||
- 确定单位和日期引用
|
||||
|
||||
2. **收集数据**(60-90 分钟)
|
||||
- 从主要来源获取(如可用,优先使用 S&P Kensho MCP、FactSet MCP、Daloopa MCP;否则使用 Bloomberg、SEC)
|
||||
- 以蓝色输入所有原始数字
|
||||
- 在注释部分记录来源
|
||||
|
||||
3. **构建公式**(30 分钟)
|
||||
- 从简单比率开始(利润率)
|
||||
- 进阶到倍数(EV/收入)
|
||||
- 添加交叉检查(利润率是否合理?)
|
||||
|
||||
4. **添加统计数据**(15 分钟)
|
||||
- 复制所有列的公式结构
|
||||
- 验证范围正确(B7:B9,而非 B7:B10)
|
||||
- 检查四分位数逻辑
|
||||
|
||||
5. **质量控制**(30 分钟)
|
||||
- 运行合理性检查
|
||||
- 验证公式引用
|
||||
- 检查 #DIV/0! 或 #REF! 错误
|
||||
- 与已知基准对比
|
||||
|
||||
6. **文档记录**(15 分钟)
|
||||
- 完成注释部分
|
||||
- 添加数据来源
|
||||
- 定义方法论
|
||||
- 为分析添加日期戳
|
||||
|
||||
### 专业技巧
|
||||
- **保存模板**:构建一次,永久复用
|
||||
- **对异常值进行颜色编码**:对超过 2 个标准差的值使用条件格式
|
||||
- **链接到源文件**:超链接到 Bloomberg 截图或 SEC 文件
|
||||
- **版本控制**:保存为"Comps_v1_2024-12-15"并清晰标注日期
|
||||
- **协作审查**:让他人检查你的公式
|
||||
|
||||
### Excel 格式检查清单(可选——根据用户偏好调整)
|
||||
- [ ] 字体设置为用户偏好的样式(默认:Times New Roman,数据 11pt,标题 12pt)
|
||||
- [ ] 节标题按用户模板格式化(默认:深蓝色 #17365D,白色粗体文字)
|
||||
- [ ] 列标题按用户模板格式化(默认:浅蓝/灰色 #D9E2F3,黑色粗体文字)
|
||||
- [ ] 统计行按用户模板格式化(默认:浅灰色 #F2F2F2)
|
||||
- [ ] 未应用边框(简洁、极简外观)
|
||||
- [ ] **列宽设置为统一/均匀宽度**(形成整洁、专业的外观)
|
||||
- [ ] **行高设置为一致高度**(数据行通常为 20-25pt)
|
||||
- [ ] 数字格式具有适当的小数精度和千位分隔符
|
||||
- [ ] **所有指标居中对齐**,外观整洁统一
|
||||
- [ ] **公司数据和统计行之间有一个空行用于分隔**
|
||||
- [ ] **没有单独的"行业统计"或"估值统计"标题行**
|
||||
- [ ] **每个硬编码输入单元格都有注释,包含:(1) 精确数据来源,或 (2) 假设说明**
|
||||
- [ ] **在适用的单元格中添加了超链接**(SEC EDGAR 文件、数据提供商页面、报告)
|
||||
|
||||
---
|
||||
|
||||
## 第 8 节:示例模板布局
|
||||
|
||||
**简单版本(从这里开始):**
|
||||
<!-- ascii-guard-ignore -->
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ 科技行业 - 可比公司分析 │
|
||||
│ Microsoft • Alphabet • Amazon │
|
||||
│ 截至 2024 年第四季度 | 所有数据单位为百万美元 │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ 运营指标 │
|
||||
├──────────┬─────────┬─────────┬──────────┬──────────────────┤
|
||||
│ 公司 │ 收入 │ 增长 │ 毛利率 │ EBITDA │ EBITDA │
|
||||
│ │ (LTM) │ (同比) │ │ (LTM) │ 利润率 │
|
||||
├──────────┼─────────┼─────────┼──────────┼─────────┼────────┤
|
||||
│ MSFT │ 261,400 │ 12.3% │ 68.7% │ 205,100 │ 78.4% │
|
||||
│ GOOGL │ 349,800 │ 11.8% │ 57.9% │ 239,300 │ 68.4% │
|
||||
│ AMZN │ 638,100 │ 10.5% │ 47.3% │ 152,600 │ 23.9% │
|
||||
│ │ │ │ │ │ │ [空行]
|
||||
│ 中位数 │ =MEDIAN │ =MEDIAN │ =MEDIAN │ =MEDIAN │=MEDIAN │
|
||||
│ 第 75% │ =QUART │ =QUART │ =QUART │ =QUART │=QUART │
|
||||
│ 第 25% │ =QUART │ =QUART │ =QUART │ =QUART │=QUART │
|
||||
├─────────────────────────────────────────────────────────────┤
|
||||
│ 估值倍数 │
|
||||
├──────────┬──────────┬──────────┬──────────┬────────────────┤
|
||||
│ 公司 │ 市值 │ 企业价值 │ EV/收入 │ EV/EBITDA │ 市盈率│
|
||||
├──────────┼──────────┼──────────┼──────────┼───────────┼────┤
|
||||
│ MSFT │3,550,000 │3,530,000 │ 13.5x │ 17.2x │36.0│
|
||||
│ GOOGL │2,030,000 │1,960,000 │ 5.6x │ 8.2x │24.5│
|
||||
│ AMZN │2,226,000 │2,320,000 │ 3.6x │ 15.2x │58.3│
|
||||
│ │ │ │ │ │ │ [空行]
|
||||
│ 中位数 │ =MEDIAN │ =MEDIAN │ =MEDIAN │ =MEDIAN │=MED│
|
||||
│ 第 75% │ =QUART │ =QUART │ =QUART │ =QUART │=QRT│
|
||||
│ 第 25% │ =QUART │ =QUART │ =QUART │ =QUART │=QRT│
|
||||
└──────────┴──────────┴──────────┴──────────┴───────────┴────┘
|
||||
```
|
||||
<!-- ascii-guard-ignore-end -->
|
||||
|
||||
**仅在需要时增加复杂度:**
|
||||
- 如果季节性重要,同时包含季度和 LTM 数据
|
||||
- 如果现金生成是核心故事,添加 FCF 指标
|
||||
- 包含行业特定指标(SaaS 的 Rule of 40 等)
|
||||
- 如果公司数量超过 5 家,添加更多统计行
|
||||
|
||||
---
|
||||
|
||||
## 第 9 节:行业特定补充(可选)
|
||||
|
||||
仅在对分析至关重要时添加这些内容。大多数可比分析仅使用核心指标即可。
|
||||
|
||||
**软件/SaaS:**
|
||||
如相关则添加:ARR、净美元留存率、Rule of 40
|
||||
|
||||
**金融服务:**
|
||||
如相关则添加:ROE、净息差、效率比率
|
||||
|
||||
**电商:**
|
||||
如相关则添加:GMV、佣金率、活跃买家数
|
||||
|
||||
**医疗健康:**
|
||||
如相关则添加:研发/收入、管线价值、专利时间线
|
||||
|
||||
**制造业:**
|
||||
如相关则添加:资产周转率、库存周转率、积压订单
|
||||
|
||||
---
|
||||
|
||||
## 第 10 节:红旗与警示信号
|
||||
|
||||
### 数据质量问题
|
||||
🚩 时间期间不一致(混用季度和年度数据)
|
||||
🚩 数据缺失且无说明
|
||||
🚩 数据来源之间存在显著差异(>10% 偏差)
|
||||
|
||||
### 估值红旗
|
||||
🚩 EBITDA 为负的公司使用 EBITDA 倍数估值(改用收入倍数)
|
||||
🚩 市盈率 >100x 且无超高增长故事支撑
|
||||
🚩 利润率对该行业不合理
|
||||
|
||||
### 可比性问题
|
||||
🚩 不同财年结束日期(导致时间问题)
|
||||
🚩 混用纯粹业务公司和综合企业集团
|
||||
🚩 商业模式存在实质性差异却被标记为"可比公司"
|
||||
|
||||
**有疑问时,排除该公司。** 3 家完美的可比公司胜过 6 家存疑的公司。
|
||||
|
||||
---
|
||||
|
||||
## 第 11 节:公式参考指南
|
||||
|
||||
### 基本 Excel 公式
|
||||
```excel
|
||||
// 统计函数
|
||||
=AVERAGE(range) // 简单均值
|
||||
=MEDIAN(range) // 中间值
|
||||
=QUARTILE(range, 1) // 第 25 百分位
|
||||
=QUARTILE(range, 3) // 第 75 百分位
|
||||
=MAX(range) // 最大值
|
||||
=MIN(range) // 最小值
|
||||
=STDEV.P(range) // 标准差
|
||||
|
||||
// 财务计算
|
||||
=B7/C7 // 简单比率(利润率)
|
||||
=SUM(B7:B9)/3 // 多家公司的平均值
|
||||
=IF(B7>0, C7/B7, "N/A") // 条件计算
|
||||
=IFERROR(C7/D7, 0) // 处理除以零
|
||||
|
||||
// 跨表引用
|
||||
='Sheet1'!B7 // 引用另一个工作表
|
||||
=VLOOKUP(A7, Table1, 2) // 从数据表查找
|
||||
=INDEX(MATCH()) // 高级查找
|
||||
|
||||
// 格式化
|
||||
=TEXT(B7, "0.0%") // 格式化为百分比
|
||||
=TEXT(C7, "#,##0") // 千位分隔符
|
||||
```
|
||||
|
||||
### 常用比率公式
|
||||
```excel
|
||||
毛利率 = 毛利润 / 收入
|
||||
EBITDA 利润率 = EBITDA / 收入
|
||||
FCF 利润率 = 自由现金流 / 收入
|
||||
FCF 转化率 = FCF / 经营性现金流
|
||||
ROE = 净利润 / 股东权益
|
||||
ROA = 净利润 / 总资产
|
||||
资产周转率 = 收入 / 总资产
|
||||
债务/权益比 = 总债务 / 股东权益
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 关键原则总结
|
||||
|
||||
1. **结构驱动洞察** - 正确的标题迫使正确的思考
|
||||
2. **少即是多** - 5-10 个重要指标胜过 20 个无关紧要的指标
|
||||
3. **为你的问题选择指标** - 估值分析 ≠ 效率分析
|
||||
4. **统计揭示规律** - 中位数/四分位数比平均值揭示更多
|
||||
5. **透明胜于复杂** - 每个人都能理解的简单公式
|
||||
6. **可比性为王** - 宁可排除也不要强行纳入不合适的可比公司
|
||||
7. **记录你的选择** - 在注释部分解释选择了哪些指标及原因
|
||||
|
||||
---
|
||||
|
||||
## 输出检查清单
|
||||
|
||||
交付可比分析前,验证:
|
||||
- [ ] 所有公司真正可比
|
||||
- [ ] 数据来自一致的时间期间
|
||||
- [ ] 单位清晰标注(百万/十亿)
|
||||
- [ ] 公式引用单元格,而非硬编码值
|
||||
- [ ] **所有硬编码输入单元格都有注释,包含:(1) 精确数据来源及引用,或 (2) 清晰的假设说明**
|
||||
- [ ] **在相关位置添加了超链接**(SEC EDGAR 文件、Bloomberg 页面、研究报告)
|
||||
- [ ] 统计数据至少包含 5 个指标(最大值、第 75 百分位、中位数、第 25 百分位、最小值)
|
||||
- [ ] 注释部分记录了来源和方法论
|
||||
- [ ] 视觉格式遵循约定(蓝色 = 输入,黑色 = 公式)
|
||||
- [ ] 合理性检查通过(利润率合理,倍数合理)
|
||||
- [ ] 日期戳为当前日期("截至 [日期]")
|
||||
- [ ] 公式审计显示无错误(#DIV/0!、#REF!、#N/A)
|
||||
|
||||
---
|
||||
|
||||
## 持续改进
|
||||
|
||||
完成可比分析后,思考:
|
||||
1. 统计数据是否揭示了意外洞察?
|
||||
2. 是否存在限制分析的数据缺口?
|
||||
3. 利益相关者是否询问了你未包含的指标?
|
||||
4. 实际花费时间与应花费时间相比如何?
|
||||
5. 下次如何让分析更有用?
|
||||
|
||||
最好的可比分析随每次迭代而进化。保存模板,从反馈中学习,并根据决策者实际使用的内容完善结构。
|
||||
|
||||
|
||||
## 数据来源——MCP 优先,网络作为备选
|
||||
|
||||
以下许多段落提到"使用 S&P Kensho MCP / Daloopa MCP / FactSet MCP"。这些是原始 Cowork 插件背景下的商业金融数据 MCP。在 Hermes 中:
|
||||
|
||||
- **如果你配置了任何结构化金融数据 MCP**(Hermes 支持 MCP——参见 `native-mcp` skill),优先使用它获取时点可比数据、先例交易和文件。
|
||||
- **否则**,回退到:
|
||||
- 针对 SEC EDGAR(`https://www.sec.gov/cgi-bin/browse-edgar`)使用 `web_search` / `web_extract` 获取美国文件
|
||||
- 公司投资者关系页面获取新闻稿、财报演示文稿
|
||||
- 使用 `browser_navigate` 访问交互式数据门户
|
||||
- 用户提供的数据(当上下文中没有时,明确询问)
|
||||
- **绝不捏造数据**。如果某个倍数、先例或文件数字无法溯源,将该单元格标记为 `[UNSOURCED]` 并向用户说明。
|
||||
|
||||
## 归属
|
||||
|
||||
此 skill 改编自 Anthropic 的 Claude 金融服务插件套件(Apache-2.0)。Office-JS / Cowork 实时 Excel 路径已移除;此版本通过 `excel-author` skill 的约定面向无界面 openpyxl。原始来源:https://github.com/anthropics/financial-services
|
||||
+1288
File diff suppressed because it is too large
Load Diff
+262
@@ -0,0 +1,262 @@
|
||||
---
|
||||
title: "Excel Author"
|
||||
sidebar_label: "Excel Author"
|
||||
description: "使用 openpyxl 无头构建可审计的 Excel 工作簿——蓝/黑/绿单元格约定、公式优先于硬编码、命名范围、余额检查、敏感性表格。"
|
||||
---
|
||||
|
||||
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
||||
|
||||
# Excel Author
|
||||
|
||||
使用 openpyxl 无头构建可审计的 Excel 工作簿——蓝/黑/绿单元格约定、公式优先于硬编码、命名范围、余额检查、敏感性表格。适用于财务模型、审计输出、对账。
|
||||
|
||||
## Skill 元数据
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| 来源 | 可选——通过 `hermes skills install official/finance/excel-author` 安装 |
|
||||
| 路径 | `optional-skills/finance/excel-author` |
|
||||
| 版本 | `1.0.0` |
|
||||
| 作者 | Anthropic(由 Nous Research 改编) |
|
||||
| 许可证 | Apache-2.0 |
|
||||
| 平台 | linux, macos, windows |
|
||||
| 标签 | `excel`, `openpyxl`, `finance`, `spreadsheet`, `modeling` |
|
||||
| 相关 skill | [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author)、[`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model)、[`comps-analysis`](/user-guide/skills/optional/finance/finance-comps-analysis)、[`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model)、[`3-statement-model`](/user-guide/skills/optional/finance/finance-3-statement-model) |
|
||||
|
||||
## 参考:完整 SKILL.md
|
||||
|
||||
:::info
|
||||
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时看到的指令内容。
|
||||
:::
|
||||
|
||||
# excel-author
|
||||
|
||||
使用 `openpyxl` 在磁盘上生成 .xlsx 文件。遵循以下银行级约定,使模型可审计、灵活,并可由构建者以外的人审阅。
|
||||
|
||||
改编自 Anthropic 在 [anthropics/financial-services](https://github.com/anthropics/financial-services) 仓库中的 `xlsx-author` 和 `audit-xls` skill。原版中的 MCP / Office-JS / Cowork 相关分支已去除——本 skill 假设使用无头 Python。
|
||||
|
||||
## 输出约定
|
||||
|
||||
- 写入 `./out/<name>.xlsx`。如果 `./out/` 不存在则创建。
|
||||
- 在最终消息中返回相对路径,以便下游工具获取。
|
||||
- 每个文件对应一个逻辑模型。除非明确要求,否则不向已有工作簿追加内容。
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
pip install "openpyxl>=3.0"
|
||||
```
|
||||
|
||||
## 核心约定(不可更改)
|
||||
|
||||
### 蓝/黑/绿单元格颜色
|
||||
- **蓝色**(`Font(color="0000FF")`)——人工输入的硬编码值。收入驱动因素、WACC 输入、终值增长率、市场数据。
|
||||
- **黑色**(默认)——公式。每个派生单元格均为实时 Excel 公式。
|
||||
- **绿色**(`Font(color="006100")`)——链接到另一张工作表或外部文件。
|
||||
|
||||
审阅者可以扫描工作表,立即区分假设值与计算值。
|
||||
|
||||
### 公式优先于硬编码
|
||||
每个计算单元格必须是公式字符串,绝不能是在 Python 中计算后粘贴的数值。
|
||||
|
||||
```python
|
||||
# 错误——潜在的隐性 bug
|
||||
ws["D20"] = revenue_prior_year * (1 + growth)
|
||||
|
||||
# 正确——用户更改假设时自动联动
|
||||
ws["D20"] = "=D19*(1+$B$8)"
|
||||
```
|
||||
|
||||
唯一允许硬编码的数字:
|
||||
1. 原始历史输入(实际收入、报告 EBITDA 等)
|
||||
2. 用户需要调整的假设驱动因素(增长率、WACC 输入、终值 g)
|
||||
3. 当前市场数据(股价、债务余额)——需在单元格注释中注明来源和日期
|
||||
|
||||
如果你发现自己在 Python 中计算值并写入结果,请停下来。
|
||||
|
||||
### 跨工作表引用使用命名范围
|
||||
对从另一张工作表、演示文稿或备忘录引用的任何数值,使用命名范围。
|
||||
|
||||
```python
|
||||
from openpyxl.workbook.defined_name import DefinedName
|
||||
wb.defined_names["WACC"] = DefinedName("WACC", attr_text="Inputs!$C$8")
|
||||
# 然后在其他地方:
|
||||
calc["D30"] = "=D29/WACC"
|
||||
```
|
||||
|
||||
### 余额检查标签页
|
||||
包含一个 `Checks` 标签页,汇总所有内容并显示 TRUE/FALSE:
|
||||
- 资产负债表平衡(资产 = 负债 + 权益)
|
||||
- 现金流与资产负债表上的期间现金变动一致
|
||||
- 分部加总与合并总计一致
|
||||
- 计算范围内无游离硬编码
|
||||
|
||||
示例:
|
||||
```python
|
||||
checks = wb.create_sheet("Checks")
|
||||
checks["A2"] = "BS balances"
|
||||
checks["B2"] = "=IS!D20-IS!D21-IS!D22"
|
||||
checks["C2"] = "=ABS(B2)<0.01" # TRUE/FALSE
|
||||
```
|
||||
|
||||
### 每个硬编码输入均添加单元格注释
|
||||
在创建单元格时同步添加注释,不要事后补充。
|
||||
|
||||
```python
|
||||
from openpyxl.comments import Comment
|
||||
ws["C2"] = 1_250_000_000
|
||||
ws["C2"].font = Font(color="0000FF")
|
||||
ws["C2"].comment = Comment("Source: 10-K FY2024, p.47, revenue line", "analyst")
|
||||
```
|
||||
|
||||
格式:`Source: [系统/文档], [日期], [参考], [URL(如适用)]`。
|
||||
|
||||
绝不推迟标注来源。绝不写 `TODO: add source`。
|
||||
|
||||
## 骨架:典型财务模型
|
||||
|
||||
```python
|
||||
from openpyxl import Workbook
|
||||
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
|
||||
from openpyxl.comments import Comment
|
||||
from openpyxl.utils import get_column_letter
|
||||
from pathlib import Path
|
||||
|
||||
BLUE = Font(color="0000FF")
|
||||
BLACK = Font(color="000000")
|
||||
GREEN = Font(color="006100")
|
||||
BOLD = Font(bold=True)
|
||||
HEADER_FILL = PatternFill("solid", fgColor="1F4E79")
|
||||
HEADER_FONT = Font(color="FFFFFF", bold=True)
|
||||
|
||||
wb = Workbook()
|
||||
|
||||
# --- Inputs 标签页 ---
|
||||
inp = wb.active
|
||||
inp.title = "Inputs"
|
||||
inp["A1"] = "MARKET DATA & KEY INPUTS"
|
||||
inp["A1"].font = HEADER_FONT
|
||||
inp["A1"].fill = HEADER_FILL
|
||||
inp.merge_cells("A1:C1")
|
||||
|
||||
inp["B3"] = "Revenue FY2024"
|
||||
inp["C3"] = 1_250_000_000
|
||||
inp["C3"].font = BLUE
|
||||
inp["C3"].comment = Comment("Source: 10-K FY2024 p.47", "model")
|
||||
|
||||
inp["B4"] = "Growth Rate"
|
||||
inp["C4"] = 0.12
|
||||
inp["C4"].font = BLUE
|
||||
|
||||
# --- 计算标签页 ---
|
||||
calc = wb.create_sheet("DCF")
|
||||
calc["B2"] = "Projected Revenue"
|
||||
calc["C2"] = "=Inputs!C3*(1+Inputs!C4)" # 公式,黑色
|
||||
|
||||
# --- 检查标签页 ---
|
||||
chk = wb.create_sheet("Checks")
|
||||
chk["A2"] = "BS balances"
|
||||
chk["B2"] = "=ABS(BS!D20-BS!D21-BS!D22)<0.01"
|
||||
|
||||
Path("./out").mkdir(exist_ok=True)
|
||||
wb.save("./out/model.xlsx")
|
||||
```
|
||||
|
||||
## 带合并单元格的节标题
|
||||
|
||||
openpyxl 特性:合并时,在左上角单元格设置值,并单独对整个范围设置样式。
|
||||
|
||||
```python
|
||||
ws["A7"] = "CASH FLOW PROJECTION"
|
||||
ws["A7"].font = HEADER_FONT
|
||||
ws.merge_cells("A7:H7")
|
||||
for col in range(1, 9): # A..H
|
||||
ws.cell(row=7, column=col).fill = HEADER_FILL
|
||||
```
|
||||
|
||||
## 敏感性表格
|
||||
|
||||
用循环构建,不要对每个单元格硬编码公式。规则:
|
||||
|
||||
- **奇数行/列数**(5×5 或 7×7)——保证存在真正的中心单元格。
|
||||
- **中心单元格 = 基准情景。** 中间行/列的标题必须等于模型实际的 WACC 和终值 g,使中心输出等于基准情景隐含股价。这是合理性检验。
|
||||
- **高亮中心单元格**,使用中蓝色填充(`"BDD7EE"`)并加粗。
|
||||
- 每个单元格均填入完整的重新计算公式——绝不使用近似值。
|
||||
|
||||
```python
|
||||
# 5x5 WACC(行)x 终值增长率(列)敏感性
|
||||
wacc_axis = [0.08, 0.085, 0.09, 0.095, 0.10] # 中间行 = 基准 9.0%
|
||||
term_axis = [0.02, 0.025, 0.03, 0.035, 0.04] # 中间列 = 基准 3.0%
|
||||
|
||||
start_row = 40
|
||||
ws.cell(row=start_row, column=1).value = "Implied Share Price ($)"
|
||||
ws.cell(row=start_row, column=1).font = BOLD
|
||||
|
||||
for j, g in enumerate(term_axis):
|
||||
ws.cell(row=start_row+1, column=2+j).value = g
|
||||
ws.cell(row=start_row+1, column=2+j).font = BLUE
|
||||
|
||||
for i, w in enumerate(wacc_axis):
|
||||
r = start_row + 2 + i
|
||||
ws.cell(row=r, column=1).value = w
|
||||
ws.cell(row=r, column=1).font = BLUE
|
||||
for j, g in enumerate(term_axis):
|
||||
c = 2 + j
|
||||
# 完整 DCF 重新计算公式(此处为简化示意)。
|
||||
# 在实际模型中,此处引用完整的预测区块。
|
||||
ws.cell(row=r, column=c).value = (
|
||||
f"=SUMPRODUCT(FCF_range,1/(1+{w})^year_offset) + "
|
||||
f"FCF_terminal*(1+{g})/({w}-{g})/(1+{w})^terminal_year"
|
||||
)
|
||||
|
||||
# 高亮中心单元格(基准情景)
|
||||
center = ws.cell(row=start_row+2+len(wacc_axis)//2,
|
||||
column=2+len(term_axis)//2)
|
||||
center.fill = PatternFill("solid", fgColor="BDD7EE")
|
||||
center.font = BOLD
|
||||
```
|
||||
|
||||
## 交付前重新计算
|
||||
|
||||
openpyxl 写入公式字符串但不计算结果。Excel 打开时会重新计算,但下游消费者(自动检查脚本、CI)需要已计算的值。
|
||||
|
||||
交付前运行 LibreOffice 或专用重新计算步骤:
|
||||
|
||||
```bash
|
||||
# LibreOffice 无头重新计算
|
||||
libreoffice --headless --calc --convert-to xlsx ./out/model.xlsx --outdir ./out/
|
||||
```
|
||||
|
||||
或使用 Python 重新计算辅助工具(参见本 skill 中的 `scripts/recalc.py`)。
|
||||
|
||||
## 模型布局规划
|
||||
|
||||
在编写任何公式之前:
|
||||
1. 定义所有节的行位置
|
||||
2. 写入所有标题和标签
|
||||
3. 写入所有节分隔符和空行
|
||||
4. 然后使用锁定的行位置编写公式
|
||||
|
||||
这可以避免在公式写入后插入标题行导致所有下游引用偏移的级联公式损坏问题。
|
||||
|
||||
## 与用户逐步验证
|
||||
|
||||
对于大型模型(DCF、三表模型、LBO),在继续之前停下来向用户展示中间产物。在构建下游敏感性表格之前发现错误的利润率假设,可以节省一小时。
|
||||
|
||||
检查点模式:
|
||||
- Inputs 区块完成后→展示原始输入,确认后再进行预测
|
||||
- 收入预测完成后→确认顶线收入和增长率
|
||||
- FCF 构建完成后→确认完整的计划表
|
||||
- WACC 完成后→确认输入
|
||||
- 估值完成后→确认权益桥接
|
||||
- 然后构建敏感性表格
|
||||
|
||||
## 不适用场景
|
||||
|
||||
- 用户在实时 Excel 会话中且有 Office MCP 可用——直接操作其实时工作簿。
|
||||
- 纯表格数据导出且无公式——使用 `csv` 或 `pandas.to_excel` 更简单。
|
||||
- 具有大量交互性的仪表板/图表——使用专业 BI 工具。
|
||||
|
||||
## 致谢
|
||||
|
||||
蓝/黑/绿约定、公式优先于硬编码、命名范围、敏感性规则等约定,改编自 Anthropic 的 Claude for Financial Services 插件套件,采用 Apache-2.0 许可证。原始地址:https://github.com/anthropics/financial-services/tree/main/plugins/vertical-plugins/financial-analysis/skills/xlsx-author
|
||||
+309
@@ -0,0 +1,309 @@
|
||||
---
|
||||
title: "Lbo Model"
|
||||
sidebar_label: "Lbo Model"
|
||||
description: "在 Excel 中构建杠杆收购模型——资金来源与用途、债务计划、现金清扫、退出倍数、IRR/MOIC 敏感性分析"
|
||||
---
|
||||
|
||||
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
||||
|
||||
# Lbo Model
|
||||
|
||||
在 Excel 中构建杠杆收购模型——资金来源与用途、债务计划、现金清扫、退出倍数、IRR/MOIC 敏感性分析。与 excel-author 配合使用。适用于 PE 筛选、主导方案估值或 pitch 中的示意性 LBO。
|
||||
|
||||
## Skill 元数据
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| 来源 | 可选——通过 `hermes skills install official/finance/lbo-model` 安装 |
|
||||
| 路径 | `optional-skills/finance/lbo-model` |
|
||||
| 版本 | `1.0.0` |
|
||||
| 作者 | Anthropic(由 Nous Research 改编) |
|
||||
| 许可证 | Apache-2.0 |
|
||||
| 平台 | linux, macos, windows |
|
||||
| 标签 | `finance`, `valuation`, `lbo`, `private-equity`, `excel`, `openpyxl`, `modeling` |
|
||||
| 相关 skills | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`3-statement-model`](/user-guide/skills/optional/finance/finance-3-statement-model) |
|
||||
|
||||
## 参考:完整 SKILL.md
|
||||
|
||||
:::info
|
||||
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时所看到的指令内容。
|
||||
:::
|
||||
|
||||
## 环境
|
||||
|
||||
本 skill 假设使用**无界面 openpyxl**——你在磁盘上生成 .xlsx 文件。
|
||||
遵循 `excel-author` skill 关于单元格着色、公式、命名区域和敏感性表格的约定。
|
||||
交付前重新计算:`python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx`。
|
||||
|
||||
---
|
||||
|
||||
## 模板要求
|
||||
|
||||
**本 skill 使用模板构建 LBO 模型。请始终优先检查是否附有模板文件。**
|
||||
|
||||
开始任何 LBO 模型之前:
|
||||
1. **如果附有模板文件**:严格使用该模板的结构——复制它并填入用户数据
|
||||
2. **如果未附模板**:询问用户:*"您是否有特定的 LBO 模板希望我使用?如果没有,我可以使用标准模板,其中包含资金来源与用途、运营模型、债务计划和回报分析。"*
|
||||
3. **如果使用标准模板**:以 `examples/LBO_Model.xlsx` 为起点进行复制,并填入用户的假设数据
|
||||
|
||||
**重要**:当附有 `LBO_Model.xlsx` 等文件时,必须将其作为模板使用——不得从头构建。即使模板看起来复杂或功能超出需求,也应复制并根据用户需求进行调整。当提供了模板时,绝不能决定"从头构建"。
|
||||
|
||||
---
|
||||
|
||||
## 关键指令——请先阅读
|
||||
|
||||
使用 Python/openpyxl。写入公式字符串(`ws["D20"] = "=B5*B6"`),然后在交付前运行 `excel-author` skill 的 `recalc.py` 辅助脚本。
|
||||
|
||||
### 核心原则
|
||||
* **每个计算都必须是 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`,白色粗体文字
|
||||
* **列标题**(第 1 年、第 2 年等):浅蓝 `#D9E1F2`,黑色粗体文字
|
||||
* **输入单元格**:浅灰 `#F2F2F2`(或纯白)——蓝色*字体*是信号,填充为辅
|
||||
* **公式/计算单元格**:白色,无填充
|
||||
* **关键输出**(IRR、MOIC、退出权益):中蓝 `#BDD7EE`,黑色粗体文字
|
||||
* **这就是完整调色板。** 3 种蓝色 + 1 种灰色 + 白色。如果模板使用自己的颜色,则遵循模板。
|
||||
* 注意:上述蓝/黑/紫/绿**字体**颜色用于区分输入、公式和链接。这与此处的**填充**调色板是分开的——两者协同工作。
|
||||
|
||||
### 数字格式标准
|
||||
* **货币**:`$#,##0;($#,##0);"-"` 或 `$#,##0.0`,取决于模板
|
||||
* **百分比**:`0.0%`(一位小数)
|
||||
* **倍数**:`0.0"x"`(一位小数)
|
||||
* **MOIC/详细比率**:`0.00"x"`(两位小数,提高精度)
|
||||
* **所有数字单元格**:右对齐
|
||||
|
||||
---
|
||||
|
||||
### 首先明确需求
|
||||
|
||||
填写任何公式之前:
|
||||
|
||||
* **检查模板结构**——识别所有节,了解时间线(哪些列对应哪些期间),注意现有公式
|
||||
* **如有不明确之处,询问用户**——如果模板结构、计算方法或需求存在歧义,在继续之前先询问
|
||||
* **确认关键假设**——任何关键输入、计算偏好或特定需求
|
||||
* **仅在理解模板之后**,再开始填写公式
|
||||
|
||||
---
|
||||
|
||||
## 模板分析阶段——请先执行此步骤
|
||||
|
||||
填写任何公式之前,请彻底检查模板:
|
||||
|
||||
1. **绘制结构图**——识别每个节的位置及其相互关系。注意哪些节会输入到其他节。
|
||||
|
||||
2. **理解时间线**——哪些列代表哪些期间?是否有"结算"或"备考"列?预测期从哪里开始?
|
||||
|
||||
3. **识别输入单元格与公式单元格**——模板通常使用颜色编码、边框或阴影来标示哪些单元格需要输入,哪些需要公式。遵守这些约定。
|
||||
|
||||
4. **仔细阅读现有标签**——行标签会准确告诉你预期的计算内容。不要假设——阅读模板的要求。
|
||||
|
||||
5. **检查现有公式**——有些模板已部分填写。除非明确要求,否则不得覆盖有效公式。
|
||||
|
||||
6. **注意模板特定约定**——符号约定、小计结构、节的组织方式、不同组件是否有独立标签页等。
|
||||
|
||||
---
|
||||
|
||||
## 填写公式——通用方法
|
||||
|
||||
对于每个需要公式的单元格,遵循以下优先级:
|
||||
|
||||
### 第一步:检查模板
|
||||
* 单元格是否已有公式?如果有,验证其正确性后继续。
|
||||
* 是否有注释或说明指示预期计算?
|
||||
* 行/列标签是否使计算显而易见?
|
||||
* 相邻单元格是否显示出应遵循的规律?
|
||||
|
||||
### 第二步:检查用户指令
|
||||
* 用户是否指定了特定的计算方法?
|
||||
* 是否有影响此公式的既定假设?
|
||||
* 是否有特殊需求?
|
||||
|
||||
### 第三步:应用标准实践
|
||||
* 如果模板和用户均未指定,使用标准 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 的数据表功能可能无法与 openpyxl 配合使用——改为编写引用行/列标题的显式公式
|
||||
* 每个单元格应显示不同的值——如果全部相同,说明公式没有正确变化
|
||||
* 使用混合引用(例如,行输入用 `$A5`,列输入用 `B$4`)
|
||||
|
||||
---
|
||||
|
||||
## 验证清单——完成后运行
|
||||
|
||||
### 运行公式验证
|
||||
```bash
|
||||
python /path/to/excel-author/scripts/recalc.py model.xlsx
|
||||
```
|
||||
必须返回成功且零错误。
|
||||
|
||||
### 节平衡
|
||||
- [ ] 必须平衡的节(资金来源/用途、资产/负债)完全平衡
|
||||
- [ ] 插值项目作为平衡数字正确计算
|
||||
- [ ] 跨节应匹配的金额保持一致
|
||||
|
||||
### 收入/运营预测
|
||||
- [ ] 收入/顶线从驱动因素或增长率正确构建
|
||||
- [ ] 所有成本和费用项目计算适当
|
||||
- [ ] 小计和合计正确求和
|
||||
- [ ] 利润率和比率合理
|
||||
- [ ] 与假设的链接正确
|
||||
|
||||
### 资产负债表(如适用)
|
||||
- [ ] 资产 = 负债 + 权益(必须平衡)
|
||||
- [ ] 所有项目链接到适当的计划或滚动表
|
||||
- [ ] 期初余额 = 上期期末余额
|
||||
- [ ] 包含检查行且显示为零
|
||||
|
||||
### 现金流量(如适用)
|
||||
- [ ] 从正确的收入数字开始
|
||||
- [ ] 非现金项目适当加减
|
||||
- [ ] 营运资本变化符号正确
|
||||
- [ ] 期末现金 = 期初现金 + 净现金流
|
||||
- [ ] 现金余额在各报表间一致
|
||||
|
||||
### 支持性计划
|
||||
- [ ] 滚动计划平衡(期初 + 变动 = 期末)
|
||||
- [ ] 计划正确链接到主要报表
|
||||
- [ ] 计算项目使用适当的驱动因素
|
||||
- [ ] 所有期间计算一致
|
||||
|
||||
### 债务/融资计划(如适用)
|
||||
- [ ] 期初余额与来源或上期挂钩
|
||||
- [ ] 利息按适当余额计算(通常为期初)
|
||||
- [ ] 还款遵守现金可用性和优先级
|
||||
- [ ] 期末余额不能为负
|
||||
- [ ] 合计正确汇总各档次
|
||||
|
||||
### 回报/输出分析
|
||||
- [ ] 退出/终值计算正确
|
||||
- [ ] 包含所有相关调整
|
||||
- [ ] 现金流符号正确(投资为负,收益为正)
|
||||
- [ ] IRR/MOIC 公式引用完整区间
|
||||
- [ ] 结果对该情景合理
|
||||
|
||||
### 敏感性表格(如适用)
|
||||
- [ ] 网格维度为奇数(5×5 或 7×7)——存在真正的中心单元格
|
||||
- [ ] 行列轴值围绕基准情景对称(`[基准-2Δ, 基准-Δ, 基准, 基准+Δ, 基准+2Δ]`)
|
||||
- [ ] 中心单元格输出等于模型的实际 IRR/MOIC——确认表格连接正确
|
||||
- [ ] 中心单元格已突出显示(中蓝填充 `#BDD7EE`,粗体字)
|
||||
- [ ] 行列标题包含适当的输入值
|
||||
- [ ] 每个数据单元格包含公式(非硬编码)
|
||||
- [ ] 每个数据单元格显示不同的值
|
||||
- [ ] 值的变化方向符合预期(退出倍数越高 → IRR 越高,等)
|
||||
|
||||
### 格式
|
||||
- [ ] 硬编码输入为蓝色(0000FF)
|
||||
- [ ] 计算公式为黑色(000000)
|
||||
- [ ] 同标签页链接为紫色(800080)
|
||||
- [ ] 跨标签页链接为绿色(008000)
|
||||
- [ ] 所有数字右对齐
|
||||
- [ ] 全程应用适当的数字格式
|
||||
- [ ] 无单元格显示错误值(#REF!、#DIV/0!、#VALUE!、#NAME?)
|
||||
|
||||
### 逻辑合理性检查
|
||||
- [ ] 数字量级合理
|
||||
- [ ] 趋势合理(增长、下降、稳定,符合预期)
|
||||
- [ ] 无明显错误值(应为正数处为负数、不可能的百分比等)
|
||||
- [ ] 关键输出在该类分析的合理范围内
|
||||
|
||||
---
|
||||
|
||||
## 常见错误须避免
|
||||
|
||||
| 错误 | 问题所在 | 修复方法 |
|
||||
|-------|-----------------|------------|
|
||||
| 硬编码计算值 | 输入变化时模型不更新 | 始终使用引用源单元格的公式 |
|
||||
| 复制后单元格引用错误 | 公式指向错误单元格 | 验证所有链接,使用适当的 $ 锚定 |
|
||||
| 循环引用错误 | 模型无法计算 | 对利息类计算使用期初余额,打破循环 |
|
||||
| 节不平衡 | 应匹配的合计不匹配 | 确保有一个项目作为插值(计算为差额) |
|
||||
| 不可能出现负余额的地方出现负值 | 支付/使用超过可用量 | 适当使用 MAX(0, ...) 或 MIN 函数 |
|
||||
| IRR/回报错误 | 符号错误或区间不完整 | 检查现金流符号,确保公式覆盖所有期间 |
|
||||
| 敏感性表格显示相同值 | 公式未随输入变化 | 检查单元格引用——需要混合引用($A5、B$4) |
|
||||
| 滚动表不衔接 | 期初 ≠ 上期期末 | 验证期间之间的链接 |
|
||||
| 符号约定不一致 | 加法变减法或反之 | 全程一致遵循模板约定 |
|
||||
|
||||
---
|
||||
|
||||
## 与用户协作——逐节检查点
|
||||
|
||||
* **如果模板结构不清晰**,在继续之前先询问
|
||||
* **如果用户需求与模板冲突**,确认其偏好
|
||||
* **完成每个主要节后**,停下来与用户确认,再继续:
|
||||
- **资金来源与用途完成后** → 展示平衡表,确认插值正确,获得认可后再构建运营模型
|
||||
- **运营模型/预测完成后** → 展示预测损益表,确认增长率和利润率看起来正确,获得认可后再做债务计划
|
||||
- **债务计划完成后** → 展示期初/期末余额和利息,确认瀑布逻辑,获得认可后再做回报
|
||||
- **回报(IRR/MOIC)完成后** → 展示现金流序列和输出,确认符号和区间,获得认可后再做敏感性表格
|
||||
- **敏感性表格完成后** → 展示每个单元格的变化,确认基准情景落在预期位置
|
||||
* **如果验证过程中发现错误**,在进入下一节之前修复
|
||||
* **展示你的工作**——在有帮助时解释关键公式或假设
|
||||
* **绝不在未经每节确认的情况下呈现完整模型**——在源头发现错误的单元格引用比从损坏的 IRR 向后追溯要快得多
|
||||
|
||||
---
|
||||
|
||||
**本 skill 通过在模板中填写正确公式、适当格式和经过验证的计算,生成投资银行质量的 LBO 模型。该 skill 适应任何模板结构,同时确保财务准确性和专业呈现标准。**
|
||||
|
||||
|
||||
## 数据来源——优先使用 MCP,其次使用网络
|
||||
|
||||
以下许多段落提到"使用 S&P Kensho MCP / Daloopa MCP / FactSet MCP"。这些是原始 Cowork 插件上下文中的商业金融数据 MCP。在 Hermes 中:
|
||||
|
||||
- **如果配置了任何结构化金融数据 MCP**(Hermes 支持 MCP——参见 `native-mcp` skill),优先使用它获取时点可比数据、前例交易和文件。
|
||||
- **否则**,回退到:
|
||||
- 针对 SEC EDGAR(`https://www.sec.gov/cgi-bin/browse-edgar`)使用 `web_search` / `web_extract` 获取美国文件
|
||||
- 公司 IR 页面获取新闻稿、财报演示文稿
|
||||
- 使用 `browser_navigate` 访问交互式数据门户
|
||||
- 用户提供的数据(当上下文中没有时,明确询问)
|
||||
- **绝不捏造数据**。如果某个倍数、前例或文件数字无法溯源,将该单元格标记为 `[UNSOURCED]` 并向用户说明。
|
||||
|
||||
## 归属
|
||||
|
||||
本 skill 改编自 Anthropic 的 Claude for Financial Services 插件套件(Apache-2.0)。Office-JS / Cowork 实时 Excel 路径已移除;此版本通过 `excel-author` skill 的约定面向无界面 openpyxl。原始来源:https://github.com/anthropics/financial-services
|
||||
+162
@@ -0,0 +1,162 @@
|
||||
---
|
||||
title: "并购模型 — 在 Excel 中构建增厚/摊薄(并购)模型 — 备考损益表、协同效应、融资结构、每股收益影响"
|
||||
sidebar_label: "Merger Model"
|
||||
description: "在 Excel 中构建增厚/摊薄(并购)模型 — 备考损益表、协同效应、融资结构、每股收益影响"
|
||||
---
|
||||
|
||||
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
||||
|
||||
# Merger Model
|
||||
|
||||
在 Excel 中构建增厚/摊薄(并购)模型 — 备考损益表、协同效应、融资结构、每股收益影响。与 excel-author 配合使用。适用于并购提案、董事会材料或交易评估。
|
||||
|
||||
## Skill 元数据
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| 来源 | 可选 — 通过 `hermes skills install official/finance/merger-model` 安装 |
|
||||
| 路径 | `optional-skills/finance/merger-model` |
|
||||
| 版本 | `1.0.0` |
|
||||
| 作者 | Anthropic(由 Nous Research 改编) |
|
||||
| 许可证 | Apache-2.0 |
|
||||
| 平台 | linux, macos, windows |
|
||||
| 标签 | `finance`, `m-and-a`, `merger`, `accretion-dilution`, `excel`, `openpyxl`, `modeling`, `investment-banking` |
|
||||
| 相关 skill | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`pptx-author`](/user-guide/skills/optional/finance/finance-pptx-author), [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`3-statement-model`](/user-guide/skills/optional/finance/finance-3-statement-model) |
|
||||
|
||||
## 参考:完整 SKILL.md
|
||||
|
||||
:::info
|
||||
以下是 Hermes 在触发该 skill 时加载的完整 skill 定义。这是 skill 激活时 agent 所看到的指令内容。
|
||||
:::
|
||||
|
||||
## 环境
|
||||
|
||||
本 skill 假定使用**无界面 openpyxl** — 即在磁盘上生成 .xlsx 文件。
|
||||
遵循 `excel-author` skill 关于单元格着色、公式、命名区域和敏感性表格的约定。
|
||||
交付前重新计算:`python /path/to/excel-author/scripts/recalc.py ./out/model.xlsx`。
|
||||
|
||||
# Merger Model
|
||||
|
||||
为并购交易构建增厚/摊薄分析。对备考每股收益影响、协同效应敏感性及购买价格分配进行建模。适用于评估潜在收购、为提案准备并购影响分析,或就交易条款提供建议。
|
||||
|
||||
## 工作流程
|
||||
|
||||
### 第一步:收集输入数据
|
||||
|
||||
**收购方:**
|
||||
- 公司名称、当前股价、流通股数
|
||||
- LTM 和 NTM 每股收益(GAAP 及调整后)
|
||||
- 市盈率倍数
|
||||
- 税前债务成本、税率
|
||||
- 资产负债表上的现金、现有债务
|
||||
|
||||
**目标方:**
|
||||
- 公司名称、当前股价、流通股数(如为上市公司)
|
||||
- LTM 和 NTM 每股收益或净利润
|
||||
- 企业价值或股权价值
|
||||
|
||||
**交易条款:**
|
||||
- 每股要约价格(或相对当前价格的溢价)
|
||||
- 对价结构:现金比例 vs. 股票比例
|
||||
- 为现金部分融资而新增的债务
|
||||
- 预期协同效应(收入和成本)及分阶段时间表
|
||||
- 交易费用和融资成本
|
||||
- 预期交割日期
|
||||
|
||||
### 第二步:购买价格分析
|
||||
|
||||
| 项目 | 金额 |
|
||||
|------|-------|
|
||||
| 每股要约价格 | |
|
||||
| 相对当前价格的溢价 | |
|
||||
| 股权价值 | |
|
||||
| 加:承接净债务 | |
|
||||
| 企业价值 | |
|
||||
| 隐含 EV / EBITDA | |
|
||||
| 隐含市盈率 | |
|
||||
|
||||
### 第三步:资金来源与用途
|
||||
|
||||
| 来源 | $ | 用途 | $ |
|
||||
|---------|---|------|---|
|
||||
| 新增债务 | | 股权收购价格 | |
|
||||
| 自有现金 | | 偿还目标方债务 | |
|
||||
| 新发行股票 | | 交易费用 | |
|
||||
| | | 融资费用 | |
|
||||
| **合计** | | **合计** | |
|
||||
|
||||
### 第四步:备考每股收益(增厚/摊薄)
|
||||
|
||||
逐年计算(第 1-3 年):
|
||||
|
||||
| | 独立口径 | 备考口径 | 增厚/(摊薄) |
|
||||
|---|-----------|-----------|---------------------|
|
||||
| 收购方净利润 | | | |
|
||||
| 目标方净利润 | | | |
|
||||
| 协同效应(税后) | | | |
|
||||
| 动用现金的利息损失(税后) | | | |
|
||||
| 新增债务利息(税后) | | | |
|
||||
| 无形资产摊销(税后) | | | |
|
||||
| 备考净利润 | | | |
|
||||
| 备考股份数 | | | |
|
||||
| **备考每股收益** | | | |
|
||||
| **增厚/(摊薄)%** | | | |
|
||||
|
||||
### 第五步:敏感性分析
|
||||
|
||||
**增厚/摊薄 vs. 协同效应与要约溢价:**
|
||||
|
||||
| | 协同效应 $0M | 协同效应 $25M | 协同效应 $50M | 协同效应 $75M | 协同效应 $100M |
|
||||
|---|---------|----------|----------|----------|-----------|
|
||||
| 溢价 15% | | | | | |
|
||||
| 溢价 20% | | | | | |
|
||||
| 溢价 25% | | | | | |
|
||||
| 溢价 30% | | | | | |
|
||||
|
||||
**增厚/摊薄 vs. 现金/股票对价结构:**
|
||||
|
||||
| | 100% 现金 | 75/25 | 50/50 | 25/75 | 100% 股票 |
|
||||
|---|-----------|-------|-------|-------|------------|
|
||||
| 第 1 年 | | | | | |
|
||||
| 第 2 年 | | | | | |
|
||||
|
||||
### 第六步:盈亏平衡协同效应
|
||||
|
||||
计算交易在第 1 年实现每股收益中性所需的最低协同效应。
|
||||
|
||||
### 第七步:输出
|
||||
|
||||
- Excel 工作簿,包含:
|
||||
- 假设条件标签页
|
||||
- 资金来源与用途
|
||||
- 备考利润表
|
||||
- 增厚/摊薄汇总
|
||||
- 敏感性表格
|
||||
- 盈亏平衡分析
|
||||
- 用于提案材料的单页并购影响摘要
|
||||
|
||||
## 重要说明
|
||||
|
||||
- 在相关情况下,始终同时展示 GAAP 和调整后(现金)每股收益
|
||||
- 股票交易:使用收购方当前股价计算换股比例,并注明新发行股份带来的稀释效应
|
||||
- 包含购买价格分配 — 商誉和无形资产摊销对 GAAP 每股收益至关重要
|
||||
- 协同效应分阶段实现至关重要 — 第 1 年通常仅为运行率协同效应的 25%-50%
|
||||
- 不要遗漏动用现金的利息损失收入及新增债务的利息支出
|
||||
- 协同效应和利息调整的税率应与收购方的边际税率保持一致
|
||||
|
||||
|
||||
## 数据来源 — 优先使用 MCP,其次使用网络
|
||||
|
||||
以下部分内容提及"使用 S&P Kensho MCP / Daloopa MCP / FactSet MCP"。这些是原 Cowork 插件场景中的商业金融数据 MCP。在 Hermes 中:
|
||||
|
||||
- **如已配置任何结构化金融数据 MCP**(Hermes 支持 MCP — 参见 `native-mcp` skill),优先用于时点可比数据、前例交易及文件。
|
||||
- **否则**,回退至:
|
||||
- 针对 SEC EDGAR(`https://www.sec.gov/cgi-bin/browse-edgar`)使用 `web_search` / `web_extract` 获取美国文件
|
||||
- 公司投资者关系页面获取新闻稿、财报材料
|
||||
- 使用 `browser_navigate` 访问交互式数据门户
|
||||
- 用户提供的数据(当上下文中没有时,明确向用户询问)
|
||||
- **严禁捏造数据**。如果某个倍数、前例交易或文件数字无法溯源,将该单元格标记为 `[UNSOURCED]` 并告知用户。
|
||||
|
||||
## 归属声明
|
||||
|
||||
本 skill 改编自 Anthropic 的 Claude for Financial Services 插件套件(Apache-2.0)。Office-JS / Cowork 实时 Excel 路径已移除;本版本通过 `excel-author` skill 的约定,面向无界面 openpyxl。原始来源:https://github.com/anthropics/financial-services
|
||||
+191
@@ -0,0 +1,191 @@
|
||||
---
|
||||
title: "Pptx Author — 使用 python-pptx 无头构建 PowerPoint 演示文稿"
|
||||
sidebar_label: "Pptx Author"
|
||||
description: "使用 python-pptx 无头构建 PowerPoint 演示文稿"
|
||||
---
|
||||
|
||||
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
||||
|
||||
# Pptx Author
|
||||
|
||||
使用 python-pptx 无头构建 PowerPoint 演示文稿。与 excel-author 配合使用,可构建每个数字都追溯到工作簿单元格的模型驱动演示文稿。适用于融资路演材料、IC 备忘录、盈利说明。
|
||||
|
||||
## Skill 元数据
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| 来源 | 可选 — 通过 `hermes skills install official/finance/pptx-author` 安装 |
|
||||
| 路径 | `optional-skills/finance/pptx-author` |
|
||||
| 版本 | `1.0.0` |
|
||||
| 作者 | Anthropic(由 Nous Research 改编) |
|
||||
| 许可证 | Apache-2.0 |
|
||||
| 平台 | linux, macos, windows |
|
||||
| 标签 | `powerpoint`, `pptx`, `python-pptx`, `presentation`, `finance` |
|
||||
| 相关 skill | [`excel-author`](/user-guide/skills/optional/finance/finance-excel-author), [`powerpoint`](/user-guide/skills/bundled/productivity/productivity-powerpoint) |
|
||||
|
||||
## 参考:完整 SKILL.md
|
||||
|
||||
:::info
|
||||
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 skill 激活时 agent 所看到的指令内容。
|
||||
:::
|
||||
|
||||
# pptx-author
|
||||
|
||||
使用 `python-pptx` 在磁盘上生成 .pptx 文件。当需要将演示文稿作为文件产物交付,而非驱动实时 PowerPoint 会话时使用。
|
||||
|
||||
改编自 Anthropic 在 [anthropics/financial-services](https://github.com/anthropics/financial-services) 中的 `pptx-author` 和 `pitch-deck` skill。原版中的 MCP / Office-JS 分支已移除 — 本 skill 假定使用无头 Python。
|
||||
|
||||
如需更全面的、已内置的 PowerPoint 创作 skill(幻灯片、演讲者备注、嵌入、媒体),请参阅内置的 `powerpoint` skill。本 skill 是一个更轻量的模式,专为模型驱动的演示文稿(融资路演、IC 备忘录、盈利说明)调优,要求每个数字都必须追溯到源工作簿。
|
||||
|
||||
## 输出约定
|
||||
|
||||
- 写入 `./out/<name>.pptx`。如果 `./out/` 不存在则创建。
|
||||
- 在最终消息中返回相对路径。
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
pip install "python-pptx>=0.6"
|
||||
```
|
||||
|
||||
## 核心约定
|
||||
|
||||
### 每张幻灯片一个观点
|
||||
标题陈述结论;正文支撑结论。标题为"Q3 Revenue"的幻灯片表达力弱;"Revenue growth accelerated to 14% Y/Y in Q3"则更有力。
|
||||
|
||||
### 每个数字都追溯到模型
|
||||
如果幻灯片上的数字来自 `./out/model.xlsx`,则在脚注中注明工作表和单元格。
|
||||
|
||||
```
|
||||
Revenue: $1,250M (Source: model.xlsx, Inputs!C3)
|
||||
```
|
||||
|
||||
切勿凭记忆或摘要转录数字 — 打开工作簿,读取命名区域,并在可能的情况下以编程方式将演示文稿中的值绑定到工作簿。
|
||||
|
||||
### 存在公司模板时使用公司模板
|
||||
如果 `./templates/firm-template.pptx` 存在,则加载它,使演示文稿继承品牌颜色、字体和母版布局。
|
||||
|
||||
```python
|
||||
from pptx import Presentation
|
||||
from pathlib import Path
|
||||
|
||||
template = Path("./templates/firm-template.pptx")
|
||||
prs = Presentation(str(template)) if template.exists() else Presentation()
|
||||
```
|
||||
|
||||
### 图表:从模型导出 PNG 优于原生 pptx 图表
|
||||
当保真度要求较高时(模型的图表样式必须与演示文稿完全匹配),从源工作簿将图表渲染为 PNG 并嵌入图片。原生 `pptx.chart` 图表较脆弱,且通常不符合公司规范。
|
||||
|
||||
```python
|
||||
from pptx.util import Inches
|
||||
slide.shapes.add_picture("./out/charts/football_field.png",
|
||||
Inches(1), Inches(2),
|
||||
width=Inches(8))
|
||||
```
|
||||
|
||||
### 不对外发送
|
||||
本 skill 只写入文件,不发送邮件、上传或发布。交付由编排层处理。
|
||||
|
||||
## 骨架代码
|
||||
|
||||
```python
|
||||
from pptx import Presentation
|
||||
from pptx.util import Inches, Pt
|
||||
from pptx.dml.color import RGBColor
|
||||
from pathlib import Path
|
||||
|
||||
template = Path("./templates/firm-template.pptx")
|
||||
prs = Presentation(str(template)) if template.exists() else Presentation()
|
||||
|
||||
# Title slide
|
||||
slide = prs.slides.add_slide(prs.slide_layouts[0])
|
||||
slide.shapes.title.text = "Project Aurora — Strategic Alternatives"
|
||||
slide.placeholders[1].text = "Preliminary Discussion Materials"
|
||||
|
||||
# Valuation summary slide (title-only layout)
|
||||
slide = prs.slides.add_slide(prs.slide_layouts[5])
|
||||
slide.shapes.title.text = "Valuation implies $38–$52 per share across methodologies"
|
||||
|
||||
# Add a table bound to model outputs
|
||||
rows, cols = 5, 4
|
||||
tbl_shape = slide.shapes.add_table(rows, cols,
|
||||
Inches(0.5), Inches(1.5),
|
||||
Inches(9), Inches(3))
|
||||
tbl = tbl_shape.table
|
||||
headers = ["Methodology", "Low ($)", "Mid ($)", "High ($)"]
|
||||
for c, h in enumerate(headers):
|
||||
tbl.cell(0, c).text = h
|
||||
|
||||
# In a real deck, read these from the model workbook with openpyxl
|
||||
data = [
|
||||
("Trading comps", "35", "41", "48"),
|
||||
("Precedent M&A", "39", "45", "52"),
|
||||
("DCF (base)", "36", "43", "51"),
|
||||
("LBO (10% IRR)", "33", "38", "44"),
|
||||
]
|
||||
for r, row in enumerate(data, start=1):
|
||||
for c, val in enumerate(row):
|
||||
tbl.cell(r, c).text = val
|
||||
|
||||
# Embed a chart rendered from the model
|
||||
slide = prs.slides.add_slide(prs.slide_layouts[5])
|
||||
slide.shapes.title.text = "Football field — current price $42"
|
||||
slide.shapes.add_picture("./out/charts/football_field.png",
|
||||
Inches(1), Inches(1.8), width=Inches(8))
|
||||
|
||||
Path("./out").mkdir(exist_ok=True)
|
||||
prs.save("./out/pitch-aurora.pptx")
|
||||
```
|
||||
|
||||
## 将演示文稿数字绑定到源工作簿
|
||||
|
||||
从 Excel 模型中读取命名区域或特定单元格,确保演示文稿中的数字不会偏离。
|
||||
|
||||
```python
|
||||
from openpyxl import load_workbook
|
||||
|
||||
wb = load_workbook("./out/model.xlsx", data_only=True)
|
||||
def nr(name):
|
||||
"""Resolve a named range to its current computed value."""
|
||||
rng = wb.defined_names[name]
|
||||
sheet, coord = next(rng.destinations)
|
||||
return wb[sheet][coord].value
|
||||
|
||||
revenue_fy24 = nr("RevenueFY24")
|
||||
implied_mid = nr("ImpliedSharePriceBase")
|
||||
```
|
||||
|
||||
然后使用这些值构建演示文稿内容:
|
||||
```python
|
||||
slide.shapes.title.text = f"Implied share price of ${implied_mid:.2f} (base case)"
|
||||
```
|
||||
|
||||
请记住在读取工作簿之前重新计算 — openpyxl 只有在工作表已经被计算过的情况下才能看到计算值。请先运行 `excel-author` skill 中的重算辅助函数,或通过真实的 Excel 会话打开并保存。
|
||||
|
||||
## 融资路演幻灯片类型清单
|
||||
|
||||
典型的投行融资路演演示文稿遵循以下结构。不作强制要求,但可作为起始骨架参考:
|
||||
|
||||
1. 封面 / 标题页
|
||||
2. 免责声明
|
||||
3. 目录
|
||||
4. 情况概述
|
||||
5. 公司概况(目标公司)
|
||||
6. 市场 / 行业背景
|
||||
7. 估值摘要(football field)— 核心幻灯片
|
||||
8. 可比交易详情
|
||||
9. 先例交易详情
|
||||
10. DCF 摘要
|
||||
11. 示意性 LBO / 财务投资人情景
|
||||
12. 流程考量
|
||||
13. 附录
|
||||
|
||||
## 不适用本 skill 的情形
|
||||
|
||||
- 用户正在进行实时 PowerPoint 会话且有 Office MCP 可用 — 应直接驱动其实时文档。
|
||||
- 非金融类幻灯片(季度全员会议、市场营销演示文稿)— 使用更全面的 `powerpoint` skill。
|
||||
- 包含大量动画、切换效果或演讲者备注的演示文稿 — 使用更全面的 `powerpoint` skill。
|
||||
|
||||
## 致谢
|
||||
|
||||
约定改编自 Anthropic 的 Claude for Financial Services 插件套件,采用 Apache-2.0 许可证。原始来源:https://github.com/anthropics/financial-services/tree/main/plugins/agent-plugins/pitch-agent/skills/pptx-author
|
||||
+108
@@ -0,0 +1,108 @@
|
||||
---
|
||||
title: "Stocks — 通过 Yahoo 获取股票报价、历史、搜索、比较及加密货币数据"
|
||||
sidebar_label: "Stocks"
|
||||
description: "通过 Yahoo 获取股票报价、历史、搜索、比较及加密货币数据"
|
||||
---
|
||||
|
||||
{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
|
||||
|
||||
# Stocks
|
||||
|
||||
通过 Yahoo 获取股票报价、历史、搜索、比较及加密货币数据。
|
||||
|
||||
## Skill 元数据
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| 来源 | 可选 — 使用 `hermes skills install official/finance/stocks` 安装 |
|
||||
| 路径 | `optional-skills/finance/stocks` |
|
||||
| 版本 | `0.1.0` |
|
||||
| 作者 | Mibay (Mibayy), Hermes Agent |
|
||||
| 许可证 | MIT |
|
||||
| 平台 | linux, macos, windows |
|
||||
| 标签 | `Stocks`, `Finance`, `Market`, `Crypto`, `Investing` |
|
||||
| 相关 skill | [`dcf-model`](/user-guide/skills/optional/finance/finance-dcf-model), [`comps-analysis`](/user-guide/skills/optional/finance/finance-comps-analysis), [`lbo-model`](/user-guide/skills/optional/finance/finance-lbo-model) |
|
||||
|
||||
## 参考:完整 SKILL.md
|
||||
|
||||
:::info
|
||||
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 agent 在 skill 激活时所看到的指令内容。
|
||||
:::
|
||||
|
||||
# Stocks Skill
|
||||
|
||||
通过 Yahoo Finance 提供只读市场数据。五个命令:`quote`、`search`、
|
||||
`history`、`compare`、`crypto`。仅使用 Python 标准库——无需 API key,无需 pip
|
||||
安装。Yahoo 的接口为非官方接口,可能存在频率限制或发生变更。
|
||||
|
||||
## 使用场景
|
||||
|
||||
- 用户询问当前股票价格(AAPL、TSLA、MSFT 等)
|
||||
- 用户希望通过公司名称查找股票代码
|
||||
- 用户需要 OHLCV 历史数据或某日期范围内的表现
|
||||
- 用户希望并排比较多个股票代码
|
||||
- 用户询问加密货币价格(BTC、ETH、SOL 等)
|
||||
|
||||
## 前置条件
|
||||
|
||||
仅需 Python 3.8+ 标准库。可选:设置 `ALPHA_VANTAGE_KEY` 以在 Yahoo 的 crumb 保护字段返回 null 时补充 `market_cap`、`pe_ratio` 及 52 周高低点数据。免费 key 申请:https://www.alphavantage.co/support/#api-key
|
||||
|
||||
## 运行方式
|
||||
|
||||
通过 `terminal` 工具调用。安装完成后:
|
||||
|
||||
```
|
||||
SCRIPT=~/.hermes/skills/finance/stocks/scripts/stocks_client.py
|
||||
python3 $SCRIPT quote AAPL
|
||||
```
|
||||
|
||||
所有输出均为 stdout 上的 JSON——如需切片处理,可通过管道传给 `jq`。
|
||||
|
||||
## 快速参考
|
||||
|
||||
```
|
||||
python3 $SCRIPT quote AAPL
|
||||
python3 $SCRIPT quote AAPL MSFT GOOGL TSLA
|
||||
python3 $SCRIPT search "Tesla"
|
||||
python3 $SCRIPT history NVDA --range 6mo
|
||||
python3 $SCRIPT compare AAPL MSFT GOOGL
|
||||
python3 $SCRIPT crypto BTC ETH SOL
|
||||
```
|
||||
|
||||
## 命令
|
||||
|
||||
### `quote SYMBOL [SYMBOL2 ...]`
|
||||
|
||||
当前价格、涨跌额、涨跌幅、成交量、52 周高低点。
|
||||
|
||||
### `search QUERY`
|
||||
|
||||
通过公司名称查找股票代码。返回前 5 条结果:代码、名称、交易所、类型。
|
||||
|
||||
### `history SYMBOL [--range RANGE]`
|
||||
|
||||
每日 OHLCV 数据及统计信息(最小值、最大值、均值、总回报率 %)。时间范围:`1mo`、
|
||||
`3mo`、`6mo`、`1y`、`5y`。默认:`1mo`。
|
||||
|
||||
### `compare SYMBOL1 SYMBOL2 [...]`
|
||||
|
||||
并排对比:价格、涨跌幅、52 周表现。
|
||||
|
||||
### `crypto SYMBOL [SYMBOL2 ...]`
|
||||
|
||||
加密货币价格。传入 `BTC`(脚本会自动追加 `-USD`)。
|
||||
|
||||
## 注意事项
|
||||
|
||||
- Yahoo Finance 的 API 为非官方接口。接口可能在未通知的情况下发生变更或触发频率限制——如果请求开始失败,原因即在于此。
|
||||
- 当 Yahoo 的 crumb 会话未建立时,`quote` 命令中的 `market_cap` 和 `pe_ratio` 可能返回 null。设置 `ALPHA_VANTAGE_KEY` 可进行补充。
|
||||
- 批量请求之间请添加适当延迟,以避免触发频率限制。
|
||||
- 本 skill 为只读——不支持下单,不集成账户。
|
||||
|
||||
## 验证
|
||||
|
||||
```
|
||||
python3 ~/.hermes/skills/finance/stocks/scripts/stocks_client.py quote AAPL
|
||||
```
|
||||
|
||||
返回包含 `symbol: "AAPL"` 及数值型 `price` 字段的 JSON 对象。
|
||||
Reference in New Issue
Block a user