claude-cookbooks 财务建模 Skill 深度解析:用 DCF、敏感性分析与蒙特卡洛构建投资估值工具链
claude-cookbooks 财务建模 Skill 深度解析用 DCF、敏感性分析与蒙特卡洛构建投资估值工具链【免费下载链接】claude-cookbooksA collection of notebooks/recipes showcasing some fun and effective ways of using Claude.项目地址: https://gitcode.com/GitHub_Trending/an/claude-cookbooks导读creating-financial-models是 skills/custom_skills 目录下的一款 Claude 自定义 Skill它把投资银行与股权研究中最常使用的现金流折现DCF估值、敏感性分析、蒙特卡洛模拟与多情景规划打包成一套可被 Claude 按需加载的专家能力包。本文以 SKILL.md 为主体结合其内置的 dcf_model.py 与 sensitivity_analysis.py 源码逐层拆解它的能力边界、输入输出契约、模型算法实现与工程化最佳实践帮助你理解如何把一套专业金融建模方法论沉淀为可复用的 Claude Skill。一、Skill 定位一份可被 Claude 动态加载的财务建模方法论包Skills 是经过组织的指令、可执行代码与资源包为 Claude 提供面向特定任务的专项能力采用渐进式披露Progressive Disclosure架构——只在需要时才被加载从而节省 token 开销参见 skills/README.md 对架构的说明。从 SKILL.md 的 YAML frontmatter 可以看出该 Skill 的元信息约定--- name: creating-financial-models description: This skill provides an advanced financial modeling suite with DCF analysis, sensitivity testing, Monte Carlo simulations, and scenario planning for investment decisions ---name技能唯一标识目录名与之一致仓库规定目录名需与 skill 名匹配见 skill_utils.py 中validate_skill_directory的校验逻辑description面向模型的中文/英文能力摘要是 Claude 决定何时加载该 Skill 的检索依据。在 skill_utils.py 的test_skill函数中可以看到 Skill 如何被挂载进一次消息请求——以container{skills: [...]}的形式引用并需要随请求携带code-execution-2025-08-25、files-api-2025-04-14、skills-2025-10-02等 beta 头。也就是说这份 SKILL.md 是给模型看的说明 给 Python 执行引擎写的算法的组合体Claude 读取说明后按需调用、解释甚至组合其脚本完成建模任务。该 Skill 所在目录与姊妹 Skill analyzing-financial-statements财务比率计算形成互补前者负责算当前状态后者负责预测未来与评估不确定性。完整自定义 Skill 的创建与上传流程可参考 03_skills_custom_development.ipynb。二、四大核心能力一览SKILL.md 将能力划分为四块彼此串成一条完整的估值工作流能力模块核心产出在估值流程中的角色DCF 分析多增长情景下的完整估值模型地基把预测财务转化为企业价值/股权价值敏感性分析数据表、龙卷风图、关键驱动因子排序追问估值对哪些假设最敏感蒙特卡洛模拟概率分布、置信区间、VaR量化把点估计升级为概率分布情景规划基准/悲观/乐观、概率加权期望值决策比较战略备选方案值得强调的是这四块能力在源码中并不全是独立的黑盒DCF 估值引擎内建了二维敏感性分析接口敏感性分析框架则面向任意 base model设计。换言之Skill 文档描述的是能力语义而脚本实现给出了可组合的底层原语。2.1 DCF 分析构建含多增长情景的完整 DCF 模型使用永续增长法与退出倍数法分别计算终值计算加权平均资本成本WACC生成企业价值Enterprise Value与股权价值Equity Value。2.2 敏感性分析检验关键假设变动对估值的影响为多变量创建数据表生成用于敏感性排序的龙卷风图识别关键价值驱动因子。2.3 蒙特卡洛模拟基于概率分布运行数千次情景对关键输入变量建模不确定性生成估值的置信区间计算达成目标值的概率。2.4 情景规划构建最佳/基准/最差情景模拟不同经济环境检验战略备选方案比较各情景的结果概率。三、DCF 估值引擎的源码级实现DCFModel 是 dcf_model.py 的核心类完整实现了历史数据 → 假设 → WACC → 现金流预测 → 终值 → 企业价值 → 股权价值的标准估值链路。以下按调用顺序拆解其方法。3.1 输入层历史财务与预测假设建模的第一步是把历史三张表浓缩为 DCF 所需的骨架数据。set_historical_financials接收四个平行序列revenue/ebitda/capex/nwc 与对应年份并自动派生两个关键比例model.set_historical_financials( revenue[800, 900, 1000], ebitda[160, 189, 220], capex[40, 45, 50], nwc[80, 90, 100], years[2022, 2023, 2024], )方法内部会同步计算ebitda_margin与capex_percent两个派生序列dcf_model.py为后续默认假设自动回填做准备。set_assumptions定义预测期假设dcf_model.py其参数默认值本身就内嵌了行业常见经验值参数默认值说明projection_years5显式预测期长度revenue_growth[0.10] * N年收入增长率缺省按 10%ebitda_margin历史均值否则0.20优先复用历史平均 EBITDA 利润率tax_rate0.25企业所得税率capex_percent0.05资本开支占收入比nwc_percent0.10净营运资本占收入比terminal_growth0.03永续增长率需要特别注意源码中的渐进式默认值策略ebitda_margin缺省时并非直接取 20%而是若已喂入历史数据则取历史均值否则才用 0.20dcf_model.py。这正是 SKILL.md 输入要求中历史财务数据 3–5 年的意义所在——数据越充分默认假设越贴近标的公司真实质地。3.2 WACC股权成本CAPM 债权成本的资本结构加权calculate_waccdcf_model.py的实现是教科书式的两步走用 CAPM 计算股权成本cost_of_equity risk_free_rate beta * market_premium按市值权重加权由debt_to_equity反推equity_weight 1/(1D/E)与debt_weight D/E/(1D/E)并给债务成本乘以(1 - tax_rate)的税盾wacc equity_weight * cost_of_equity debt_weight * cost_of_debt * (1 - tax_rate)tax_rate参数可省略省略时自动回退到set_assumptions中的设定默认 0.25。方法的输入正是 SKILL.md 中折现率三要素无风险利率、beta、市场风险溢价的落点。全部中间量含股权/债务权重、税后债务成本等都会被记录进self.wacc_components字典供汇总输出与敏感性测试复用。3.3 自由现金流预测的构建逻辑project_cash_flowsdcf_model.py用循环逐年推算并输出 9 个序列year / revenue / ebitda / ebit / tax / nopat / capex / nwc_change / fcf。其推算链条为Revenue 上年收入 × (1 growth_i) EBITDA Revenue × margin_i EBIT EBITDA − 折旧 # 源码假设 折旧 capex Tax EBIT × tax_rate NOPAT EBIT − Tax NWC增量 Revenue × nwc% − 上年NWC FCF NOPAT 折旧 − Capex − NWC增量其中EBIT ≈ EBITDA − capex 折旧额与期初 NWC 按首年收入 10% 估算是源码为保持模型自洽而做的显式简化dcf_model.py。若未喂入历史收入则以base_revenue 1000兜底。这也对应 SKILL.md 输入要求中 capex、营运资本、收入增长假设等每一项。3.4 终值永续增长法与退出倍数法双轨calculate_terminal_valuedcf_model.py支持两种主流终值口径methodgrowthGordon 永续增长模型TV FCF_final × (1g) / (WACC − g)methodmultiple退出倍数法TV EBITDA_final × exit_multiple默认exit_multiple 10即默认 10× EV/EBITDA。若 WACC 未计算或现金流未预测方法会抛出明确的ValueError这种前置校验设计保证了估值流水线的调用顺序正确性。3.5 企业价值、股权价值与内置敏感性矩阵calculate_enterprise_valuedcf_model.py逐期按(1WACC)^t折现 FCF 与终值得到enterprise_value、显式预测期现值pv_fcf、终值现值pv_terminal及终值占企业价值的百分比terminal_percent——该指标常被用来提示终值依赖是否过度。calculate_equity_valuedcf_model.py执行股权桥接Equity EV − net_debt cash再除以股本得到每股价值。值得单列的是DCFModel 自己就内置了sensitivity_analysis(variable1, range1, variable2, range2)dcf_model.py支持对wacc、growth终值增长率、margin三个变量做二维估值矩阵双层循环里改写假设 → 重新投影现金流 → 重算企业价值最终返回一个len(range1) × len(range2)的 NumPy 数组结束后恢复原始假设。这为后续独立的敏感性分析框架提供了重算闭环的示范。3.6 可复用的辅助计算与一键汇总模块顶层还导出了两个独立辅助函数calculate_beta(stock_returns, market_returns)dcf_model.py由个股与市场收益率序列经协方差/市场方差估计 betacalculate_fcf_cagr(fcf_series)dcf_model.py计算自由现金流复合年增长率。而generate_summarydcf_model.py则把关键假设与估值结果格式化输出覆盖 SKILL.md 中DCF 输出要求的企业/股权价值、隐含倍数占比等要素。__main__演示段TechCorp 示例给出了从喂历史数据到打印汇总的完整可运行流程。四、敏感性分析框架从单变量到龙卷风图SensitivityAnalyzer 的设计更为通用——它不绑定 DCF而是面向任意 base model 输出函数 模型更新函数的接口式组合使用者通过闭包把具体模型注入进来。4.1 单变量敏感性含百分比偏离区间one_way_sensitivitysensitivity_analysis.py围绕基线值生成±range_pct区间内的steps个测试点np.linspace等距取样逐点更新模型、重算输出并记录相对基线的pct_change与output_change最后自动复位基线。典型的调用方式如下取自该文件__main__演示analyzer SensitivityAnalyzer(model) # model 可以是任意对象如 SimpleModel results analyzer.one_way_sensitivity( variable_nameRevenue, base_valuemodel.revenue, range_pct0.20, # 测试基线的 ±20% steps5, # 等距取 5 个点 output_funcmodel.calculate_value, model_update_funclambda x: setattr(model, revenue, x), )4.2 二维数据表Excel 式行列双变量two_way_sensitivitysensitivity_analysis.py把结果组织成以var1值为行索引、var2值为列索引的 pandas DataFrame等价于 Excel 的数据表Data Table。模块还提供了同名助手create_data_tablesensitivity_analysis.py接受(变量名, 取值列表, 更新函数)三元组语义上更贴近 Excel 习惯。4.3 龙卷风分析驱动因子的影响力排序tornado_analysissensitivity_analysis.py接受一个变量字典每个变量含base / low / high / update_func逐一在 low 与 high 下重算输出记录low_delta、high_delta与绝对影响幅度impact最后按 impact 降序排序——这正是 SKILL.md 所说的用于敏感性排序的龙卷风图的数据基础impact_pct同时给出相对基线的百分比影响力。4.4 情景分析与盈亏平衡点scenario_analysissensitivity_analysis.py遍历各情景的变量组合重算输出支持probability_weights概率加权默认每情景均分概率最终追加一行Expected Value汇总期望值breakeven_analysissensitivity_analysis.py用二分搜索在[min_search, max_search]中求解输出恰好等于target_value的变量取值tolerance控制收敛精度。五、输入要求喂给模型的数据契约SKILL.md 按四类分析分别给出了输入清单全部为建模必需数据汇总如下DCF 分析需要历史财务报表3–5 年收入增长假设营业利润率预测资本开支预测营运资本需求终值增长率或退出倍数折现率组成要素无风险利率、beta、市场风险溢价。敏感性分析需要基准情景模型待测试变量的取值范围需要跟踪的关键指标。蒙特卡洛模拟需要不确定变量的概率分布变量间的相关性假设迭代次数通常 1,000–10,000 次。情景规划需要情景定义与假设各情景的概率权重要跟踪的关键绩效指标。结合源码可以更精确地理解这些输入的用途DCF 清单对应set_historical_financials与set_assumptions的参数签名tax_rate、capex_percent、nwc_percent、terminal_growth等均有默认经验值敏感性清单对应SensitivityAnalyzer的output_func / model_update_func注入点。输入数据一般以 CSV、结构化 JSON、文本描述或 Excel 形式随对话提供参见姊妹 Skill analyzing-financial-statements 对输入格式的约定仓库的 sample_data 目录也提供了配套的financial_statements.csv、quarterly_metrics.json等演示数据。六、输出格式从估值摘要到图表与工作簿SKILL.md 明确了四类分析的交付物DCF 输出完整财务预测自由现金流计算终值计算企业价值与股权价值汇总隐含估值倍数含完整模型的 Excel 工作簿。敏感性输出展示价值区间的敏感性表关键驱动因子龙卷风图盈亏平衡分析展示变量关系的图表。蒙特卡洛输出估值的概率分布置信区间如 90%、95%统计汇总均值、中位数、标准差风险指标VaR、亏损概率。情景规划输出情景对比表概率加权期望值决策树可视化风险-收益画像。在 Claude Skills 的工作模式下上述Excel 工作簿 / 图表 / 决策树类产物通常交由内置的xlsx、pptx、pdf、docx等文件生成 Skill 完成见 skills/README.md 的内置 Skill 对照表生成后通过 Files API 下载。而纯计算的文本型产出估值摘要、敏感性表、期望值则由 dcf_model.py 的generate_summary与 sensitivity_analysis.py 的 DataFrame 结果直接承载。七、支持的模型类型四类主流交易场景SKILL.md 声明该套件可覆盖以下四类建模场景SKILL.md它们共享同一套 FCF/WACC/终值骨架差异体现在现金流形态与资本结构假设上公司估值Corporate Valuation现金流稳定的成熟公司呈 J 型曲线的高成长公司困境反转标的项目融资Project Finance基础设施项目房地产开发能源项目并购分析MA收购估值协同效应建模增厚/摊薄Accretion/Dilution分析杠杆收购LBO杠杆收购分析回报分析IRR、MOIC债务承受能力评估。结合源码可见DCF 引擎已经为其中的公司估值给出了可直接运行的默认实现而 J 曲线成长可通过逐年自定义revenue_growth序列实现、并购协同可并入预测期假设等变体均可在此框架上二次参数化无需改动引擎本身。八、内建最佳实践与质量标准8.1 建模规范SKILL.md 要求统一格式与结构清晰记录假设分离输入、计算与输出错误检查与校验版本控制与变更追踪。这些原则在源码中的体现包括输入方法把原始数据与派生比例分层存放、wacc_components与valuation_results与输入解耦、每次敏感性试验后自动恢复原始值防止污染后续计算。8.2 估值原则与风险管理用多种估值方法相互印证三角验证施加恰当的风险调整参考市场可比公司对照交易倍数校验清晰记录关键假设。风险侧则强调识别并量化关键风险、使用概率加权情景、对极端情形做压力测试、考虑变量相关性、给出置信区间。8.3 自动化质量检查SKILL.md 声明模型会自动执行五类质量校验SKILL.md资产负债表平衡检查Balance sheet balancing checks现金流勾稽核对Cash flow reconciliation循环引用消解Circular reference resolution敏感性边界检查Sensitivity bound checking蒙特卡洛结果的统计验证Statistical validation。从源码看这些检查的编程化落点包括calculate_enterprise_value与calculate_equity_value在缺失前置结果时抛出的ValueError前置校验保证调用顺序正确、敏感性框架每次测试后对基线的复位逻辑、breakeven_analysis的收敛容差等。此外sensitivity_analysis还使用了暂存原值 → 扰动 → 重算 → 恢复的模式来保证试验的隔离性。九、示例用法与免责边界SKILL.md 给出了四句可直接投喂给 Claude 的提示词模板SKILL.md分别对应四大能力Build a DCF model for this technology company using the attached financialsRun a Monte Carlo simulation on this acquisition model with 5,000 iterationsCreate sensitivity analysis showing impact of growth rate and WACC on valuationDevelop three scenarios for this expansion project with probability weights同时文档也明确列出 Limitations and Disclaimers模型质量取决于假设质量历史表现不代表未来结果市场条件可能快速变化监管与税收变化会影响结果解释需要专业判断不能替代专业财务顾问意见。这是金融建模类技能必备的合规边界读者在使用与二次传播时都应保留。十、更新与维护机制SKILL.md 在 Updates and Maintenance 中明确了迭代方向跟随最新财务理论与实践定期更新市场参数默认值纳入监管变化基于使用模式持续改进。在 Claude Skills 的工程体系中这类维护通过版本机制落地skill_utils.py 提供了create_skill_version基于目录快照发布新版本、get_skill_version/list_skill_versions版本查询与delete_skill删除全部版本后再删技能等管理函数运行时可通过{type: custom, skill_id: ..., version: latest}引用。换言之更新默认参数如 WACC 市场溢价、无风险利率基准→ 发布新版本 → 平滑升级可以形成一条可追溯的迭代链路。结语一份可复制、可解释、可组合的估值方法论creating-financial-models这份 SKILL.md 的价值不止于给出四类金融分析的能力清单更在于它把行业标准方法论物化成了两层资产一层是面向模型的说明层输入要求、输出格式、最佳实践、免责声明让 Claude 能准确理解何时用、怎么用另一层是面向 Python 引擎的实现层dcf_model.py 与 sensitivity_analysis.py用DCFModel与SensitivityAnalyzer把 DCF 全链路、单/双变量敏感性、龙卷风图、情景期望值与盈亏平衡搜索落成可运行的代码。若想在自己的业务中复刻这套做法可以参照 03_skills_custom_development.ipynb 与 skill_utils.py 中的校验与上传流程用同样的目录结构SKILL.md Python 脚本把领域方法论打包成可检索、可版本化、可被 Claude 按需加载的资产。而对于金融分析场景将它与此前介绍的 analyzing-financial-statements 组合使用即可覆盖先看财务现状、再估未来价值、最后量化不确定性的完整投资分析闭环。【免费下载链接】claude-cookbooksA collection of notebooks/recipes showcasing some fun and effective ways of using Claude.项目地址: https://gitcode.com/GitHub_Trending/an/claude-cookbooks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考