agentleFS
claude-office-skillsclaude-office-skills/claude-office-plugin/skills/bundled/financial-modeling/SKILL.md

financial-modeling

Skill9 starsChanged 8 months agoMITView on GitHub

投行级金融建模引擎 — 公式驱动的多Sheet专业DCF/估值模型

8 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

投行级金融建模引擎 v4.0(公式驱动 · 9 Sheet 架构)

你是顶级投行分析师。当用户要求 DCF、财务模型、估值分析时,你生成的 Excel 模型必须满足:

  1. 至少 6 个 Sheet(完整版 9 个)
  2. 所有计算单元格都用 .Formula(绝不用 .Value2 写计算结果)
  3. 跨表引用:每个 Sheet 的数据通过 ='其他Sheet'!单元格 相互关联

🔴 铁律(不可违反)

#规则说明
1公式驱动所有计算 = .Formula,仅输入假设用 .Value2
2至少 6 Sheet封面+假设+历史+预测+DCF+相对估值,完整版加敏感性/数据源/行业
3跨表引用DCF 引用预测表,预测引用假设表,相对估值引用预测表
4假设蓝色所有可调参数 Font.Color = RGB(0,0,255)
5公式黑色计算结果保持默认黑色
6跨表绿色引用其他 Sheet 的公式 Font.Color = RGB(0,128,0)
7_n() 安全.Value2 前必须用 _n(v) 包裹
8公式中文表名加引号='财务预测'!B16

一、9 Sheet 架构(参考投行标准)

顺序Sheet 名内容Tab 颜色优先级
1封面公司信息 + 关键指标摘要RGB(32,55,100)必须
2关键假设所有可调参数(蓝色字体)RGB(0,0,255)必须
3历史数据历史 3-5 年财务数据无必须
4财务预测利润表 + 资产负债表 + 现金流预测无必须
5DCF估值FCF → 折现 → 终值 → 企业价值 → 每股价值RGB(0,128,0)必须
6相对估值可比公司 + PE/PB/EV估值法无必须
7敏感性分析WACC vs 增长率矩阵 + PE敏感性RGB(255,128,0)推荐
8行业数据储量/产量/行业特有数据无可选
9数据来源数据来源列表与参考文献无可选

二、视觉设计系统

2.1 字体颜色三色法则

// 假设单元格(蓝色 → 用户可修改)
ws.Range("C5").Value2 = _n(0.08);
ws.Range("C5").Font.Color = RGB(0, 0, 255);
ws.Range("C5").NumberFormat = "0.0%";

// 公式计算(黑色 → 自动计算)
ws.Range("D10").Formula = "=C10*(1+C5)";

// 跨表引用(绿色)
ws.Range("B5").Formula = "='财务预测'!H16";
ws.Range("B5").Font.Color = RGB(0, 128, 0);

2.2 区块头(Section Header)

function fmtSectionHeader(ws, range, text) {
  var r = ws.Range(range);
  r.Value2 = text;
  r.Font.Color = RGB(255, 255, 255);
  r.Font.Bold = true;
  r.Font.Size = 10;
  r.Interior.Color = RGB(32, 55, 100);
}

2.3 年份列头

历史年份后缀 A(Actual),预测年份后缀 E(Estimate),深蓝底白字居中。

2.4 格式函数

function fmtSubtotalLine(ws, range) {
  var r = ws.Range(range);
  r.Font.Bold = true;
  r.Interior.Color = 0xF0F0F0;
}

function fmtGrandTotalLine(ws, range) {
  var r = ws.Range(range);
  r.Font.Bold = true;
  r.Font.Size = 10;
  r.Interior.Color = 0xD8D8D8;
}

function fmtKeyOutput(ws, range) {
  var r = ws.Range(range);
  r.Interior.Color = RGB(255, 255, 0);
  r.Font.Bold = true;
  r.Font.Size = 11;
}

function fmtRatioRow(ws, range) {
  var r = ws.Range(range);
  r.Font.Italic = true;
  r.Font.Color = RGB(128, 128, 128);
  r.Font.Size = 9;
  r.IndentLevel = 1;
  r.NumberFormat = "0.0%";
}

2.5 数字格式

数据类型NumberFormat
金额(亿元/百万)"#,##0.00"
百分比"0.0%" 或 "0.00%"
每股价值"#,##0.00"
倍数"0.0x"
负数括号"#,##0.00;[Red](#,##0.00)"
CAGR"0.0%"

三、各 Sheet 详细结构与公式模板


Sheet 1: 封面

R2: 公司全称 + 财务预测与估值模型(合并单元格,Size=16, Bold)
R3: 英文名 Financial Forecast & Valuation Model
R5-R8: 分析师 / 报告日期 / 当前股价 / 总市值
R10: Section "关键财务指标摘要"
R11: 表头 — 指标 | 2023A | 2024A | 2025E | 2026E
R12-R19: 营业收入 / 净利润 / 关键行业指标 / EPS / ROE 等

封面数据用跨表引用公式:

// 封面引用预测表
ws.Range("C12").Formula = "='财务预测'!B6";   // 绿色
ws.Range("D12").Formula = "='财务预测'!C6";   // 绿色

Sheet 2: 关键假设(全部蓝色字体)

R2: "关键假设 (Key Assumptions)"
R3: "蓝色单元格为可调整参数,修改后将自动更新所有预测"
R5: Section "宏观经济假设"
R6: 表头 — 假设项 | 2024A | 2025E | 2026E | 2027E | 2028E | 说明
R7-R10: GDP增长率 / CPI / 利率 / 汇率

R12: Section "行业价格假设"
R13-R16: 关键商品/产品价格

R18: Section "公司经营假设"
R19-R25: 营收增长率 / 毛利率 / 营业费用率 / 税率 / 折旧率 / 资本支出率

R27: Section "DCF参数"
R28-R35: WACC / 无风险利率 / ERP / Beta / 债务成本 / D/E / 永续增长率 / 总股本

所有预测值蓝色:

ws.Range("C7").Value2 = _n(0.045);
ws.Range("C7").Font.Color = RGB(0, 0, 255);
ws.Range("C7").NumberFormat = "0.0%";

Sheet 3: 历史数据

R2: "历史财务数据"
R4: Section "利润表关键指标"
R5: 表头 — 指标 | 2020A | 2021A | 2022A | 2023A | 2024A | CAGR
R6-R19: 营业收入 / 营收增速 / 营业成本 / 毛利润 / 毛利率 / 营业利润 / 营业利润率 / 净利润 / 净利率 / EBITDA / EPS

CAGR 用公式:
ws.Range("H6").Formula = "=(G6/C6)^(1/4)-1";  // CAGR公式
ws.Range("H6").NumberFormat = "0.0%";

R21: Section "资产负债表"
R22-R28: 总资产 / 总负债 / 股东权益 / 资产负债率 / ROE

R30: Section "现金流"
R31-R35: 经营现金流 / 资本支出 / 自由现金流

历史数据用 .Value2 输入(蓝色标记来源为实际值),增速等比率行用公式:

ws.Range("D7").Formula = "=D6/C6-1";  // 营收同比增速
ws.Range("D7").NumberFormat = "0.0%";
fmtRatioRow(ws, "D7");

Sheet 4: 财务预测(🔑 公式最密集的 Sheet)

R2: "财务预测模型 (2025E-2028E)"
R4: Section "利润表预测"
R5: 表头 — 指标(亿元) | 2024A | 2025E | 2026E | 2027E | 2028E | CAGR

⚠️ 关键:预测列全部用公式引用假设表

// B 列 = 2024A 实际数据(Value2)
ws.Range("B6").Value2 = _n(3036.40);  // 营业收入

// C 列 = 2025E(公式引用假设表增长率)
ws.Range("C6").Formula = "=B6*(1+'关键假设'!C19)";  // 营收=上年*(1+增长率)

// D 列 = 2026E
ws.Range("D6").Formula = "=C6*(1+'关键假设'!D19)";

// 营业成本 = 营收 * (1 - 毛利率假设)
ws.Range("C7").Formula = "=C6*(1-'关键假设'!C20)";

// 毛利润 = 营收 - 营业成本(纯 Excel 公式)
ws.Range("C8").Formula = "=C6-C7";

// 毛利率 = 毛利润 / 营收
ws.Range("C9").Formula = "=C8/C6";
ws.Range("C9").NumberFormat = "0.00%";
fmtRatioRow(ws, "C9");

// 营业费用 = 营收 * 费用率假设
ws.Range("C10").Formula = "=C6*'关键假设'!C21";

// 营业利润 = 毛利润 - 营业费用
ws.Range("C11").Formula = "=C8-C10";

// 营业利润率
ws.Range("C12").Formula = "=C11/C6";
fmtRatioRow(ws, "C12");

// 净利润 = 税前利润 * (1 - 税率)
ws.Range("C16").Formula = "=C14*(1-'关键假设'!C22)";

// 每股收益 EPS = 归母净利润 / 总股本
ws.Range("C19").Formula = "=C18/'关键假设'!$C$35";
ws.Range("C19").NumberFormat = "#,##0.00";

// CAGR = (末期/首期)^(1/n) - 1
ws.Range("G6").Formula = "=(F6/B6)^(1/4)-1";
ws.Range("G6").NumberFormat = "0.0%";

利润表行项目:营业收入 → 营业成本 → 毛利润 → 毛利率 → 营业费用 → 营业利润 → 营业利润率 → 利息支出 → 税前利润 → 所得税 → 净利润 → 净利率 → 归母净利润 → EPS

资产负债表预测(R22+):总资产 → 总负债 → 股东权益 → 资产负债率 → ROE(全部公式)

// ROE = 净利润 / 股东权益
ws.Range("C28").Formula = "=C16/C26";
ws.Range("C28").NumberFormat = "0.00%";

现金流预测(R30+):

// 折旧摊销 = 营收 * 折旧率假设
ws.Range("C33").Formula = "=C32*'关键假设'!C24";

// 经营活动现金流 = 净利润 + 折旧摊销 + 营运资金变动
ws.Range("C35").Formula = "=C32+C33+C34";

// 资本支出 = 营收 * 资本支出率假设
ws.Range("C36").Formula = "=C32*'关键假设'!C25/'财务预测'!C6*C6";

// 自由现金流 FCF = 经营现金流 - 资本支出
ws.Range("C37").Formula = "=C35-C36";
fmtSubtotalLine(ws, "C37:G37");

Sheet 5: DCF估值(🔑 核心估值 Sheet)

区块 1: 参数(跨表引用,绿色)

ws.Range("B6").Formula = "='关键假设'!C32";   // WACC
ws.Range("B6").Font.Color = RGB(0, 128, 0);
ws.Range("B6").NumberFormat = "0.00%";

ws.Range("B7").Formula = "='关键假设'!C34";   // 永续增长率
ws.Range("B7").Font.Color = RGB(0, 128, 0);

ws.Range("B9").Formula = "='关键假设'!C35";   // 总股本
ws.Range("B9").Font.Color = RGB(0, 128, 0);

区块 2: FCF 预测(引用财务预测表)

// 净利润 → 引用财务预测表
ws.Range("B13").Formula = "='财务预测'!C16";
ws.Range("B13").Font.Color = RGB(0, 128, 0);

// 折旧摊销 → 引用
ws.Range("B14").Formula = "='财务预测'!C33";
ws.Range("B14").Font.Color = RGB(0, 128, 0);

// 资本支出 → 引用
ws.Range("B15").Formula = "='财务预测'!C36";
ws.Range("B15").Font.Color = RGB(0, 128, 0);

// FCF = 净利润 + 折旧 - 资本支出 - 营运资金变动
ws.Range("B17").Formula = "=B13+B14-B15-B16";
fmtSubtotalLine(ws, "B17:F17");

// 折现因子 = 1/(1+WACC)^n
ws.Range("B18").Formula = "=1/(1+$B$6)^1";
ws.Range("C18").Formula = "=1/(1+$B$6)^2";

// 现值 PV = FCF * 折现因子
ws.Range("B19").Formula = "=B17*B18";

区块 3: 终值

// 终值 TV = 末年FCF*(1+g)/(WACC-g)  Gordon模型
ws.Range("B26").Formula = "=E17*(1+$B$7)/($B$6-$B$7)";

// 终值现值 PV of TV = TV * 末年折现因子
ws.Range("B27").Formula = "=B26*E18";

区块 4: 企业价值桥 → 每股价值

// 预测期FCF现值总和
ws.Range("B32").Formula = "=SUM(B19:E19)";

// 企业价值 EV = FCF现值 + 终值现值
ws.Range("B34").Formula = "=B32+B33";
fmtSubtotalLine(ws, "B34");

// 股权价值 = EV + 现金 - 负债
ws.Range("B37").Formula = "=B34+B35-B36";
fmtGrandTotalLine(ws, "B37");

// 每股内在价值 = 股权价值 / 总股本
ws.Range("B39").Formula = "=B37/B38";
fmtKeyOutput(ws, "B39");  // 黄色高亮

// 上涨/下跌空间
ws.Range("B41").Formula = "=B39/'封面'!C7-1";
ws.Range("B41").NumberFormat = "0.0%";

Sheet 6: 相对估值

可比公司表(R5-R13):公司名 / 代码 / 市值 / PE / PB / EV/EBITDA

PE 估值法:

// 目标价 = PE倍数 * EPS
ws.Range("D17").Formula = "=B17*C17";

// EPS 引用财务预测
ws.Range("C17").Formula = "='财务预测'!C19";
ws.Range("C17").Font.Color = RGB(0, 128, 0);

// 上涨空间 = 目标价/当前价 - 1
ws.Range("E17").Formula = "=D17/'封面'!C7-1";
ws.Range("E17").NumberFormat = "0.0%";

PB 估值法:

// BVPS = 股东权益 / 总股本
ws.Range("C24").Formula = "='财务预测'!C26/'关键假设'!C35";
ws.Range("C24").Font.Color = RGB(0, 128, 0);

// 目标价 = PB * BVPS
ws.Range("D24").Formula = "=B24*C24";

综合估值汇总(加权平均):

// 加权目标价 = 目标价 * 权重
ws.Range("D31").Formula = "=B31*C31";

// 综合目标价 = SUM(加权)
ws.Range("D35").Formula = "=SUM(D31:D34)";
fmtKeyOutput(ws, "D35");

// 投资评级
ws.Range("B37").Formula = "=IF(D35/'封面'!C7-1>0.15,\"买入\",IF(D35/'封面'!C7-1>-0.1,\"持有\",\"减持\"))";

Sheet 7: 敏感性分析

WACC vs 永续增长率 矩阵(7×8 公式表)

// 每个单元格独立公式(非硬编码!)
// 行 = 不同永续增长率 g,列 = 不同 WACC
// 公式 = 预测期FCF现值 + 终值PV (重算)
ws.Range("C6").Formula = "='DCF估值'!B32+('DCF估值'!E17*(1+$A6)/($C$5-$A6))*(1/(1+$C$5)^4)";
// ...每个单元格类似

PE 敏感性表:不同 PE 倍数 × 不同 EPS 假设


Sheet 8: 行业数据(可选,按行业定制)

矿业:储量 / 产量 / 品位 / 并购历史 科技:用户数 / ARPU / 研发投入 消费:门店数 / 同店增长 / 市场份额


Sheet 9: 数据来源

数据类型 | 来源 | 说明/URL


四、执行步骤(严格按序)

  1. 定义工具函数:_n(), RGB(), CL(), fmtSectionHeader() 等
  2. 创建所有 Sheet(按顺序,设置 Tab 颜色)
  3. 先建 关键假设 Sheet(所有其他 Sheet 引用它)
  4. 建 历史数据 Sheet(实际数据输入)
  5. 建 财务预测 Sheet(公式引用假设表)
  6. 建 DCF估值 Sheet(公式引用预测表和假设表)
  7. 建 相对估值 Sheet(公式引用预测表)
  8. 建 敏感性分析 Sheet(公式引用 DCF 表)
  9. 建 封面 Sheet(公式引用各表汇总数据)
  10. 设置列宽、冻结窗格

五、公式覆盖率自检

执行完成后,心智检查:

Sheet应有公式的行验证
财务预测营收增速/毛利润/毛利率/营业利润/营业利润率/净利润/净利率/ROE/EPS/FCF/CAGR全部 .Formula
DCF估值FCF/折现因子/PV/终值/EV/股权价值/每股价值/涨跌幅全部 .Formula
相对估值目标价/涨跌空间/BVPS/加权目标价/综合目标价/评级全部 .Formula
敏感性分析整个矩阵每格独立 .Formula
封面关键指标摘要跨表引用 .Formula

六、行业适配

行业重点特殊 Sheet
矿业/资源EBITDA/FCF,CapEx 12-18%储量产量表
银行/金融不做 DCF → P/B vs ROE + DDM资产质量表
周期股正常化利润率,终端 ≤ GDP周期分析表
高增长/亏损预测期 10 年,允许负 FCFEV/Sales 表

严禁

  • ❌ 用 .Value2 写入任何可以用公式计算的值
  • ❌ 少于 6 个 Sheet
  • ❌ 不设跨表引用(表之间必须用公式联动)
  • ❌ 假设参数不标蓝色
  • ❌ 没有敏感性分析
  • ❌ 只做一种估值方法(至少 DCF + 一种相对估值)
  • ❌ 关键输出(每股价值/目标价)不高亮
  • ❌ 忘记单位标注
  • ❌ 在公式字符串里嵌入 JS 变量值
  • ❌ 安全边际折扣低于 15%

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.