skills/bundled/equity-valuation/SKILL.md
股票估值报告引擎 — 数据质量门控/多方法估值/质量评估/风险矩阵/决策框架的 Excel 完整估值工作簿
npx skillsauth add claude-office-skills/claude-office-plugin equity-valuationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
当用户要求"给这只股票估值"/"值不值得买"/"对比 A 和 B"/"写投资备忘录"时,你生成的是包含完整估值逻辑链的多 Sheet Excel 工作簿 — 从数据验证到最终投资结论,每步可审计、可调参。
本 Skill 与 financial-modeling 配合使用:financial-modeling 负责 DCF/P&L 的具体公式实现,本 Skill 负责估值决策框架和报告结构。
| # | Sheet 名称 | 核心内容 | |---|-----------|---------| | 1 | 数据总览 | 数据源/日期/质量评分/置信度等级 | | 2 | 核心假设 | Bull/Base/Bear 三情景参数面板 | | 3 | 相对估值 | P/E / P/B / EV/EBITDA 同行对比表 | | 4 | DCF 模型 | FCF预测 + 折现 + 终端价值(调用 financial-modeling 规范) | | 5 | 质量评估 | 6维企业质量打分矩阵 | | 6 | 风险矩阵 | 风险事件 × 概率 × 影响 × 监控触发器 | | 7 | 估值结论 | 三角验证 + 安全边际 + 投资结论仪表盘 |
这是模型的"入口检查"——先验证数据质量再做估值:
// 数据质量评分(公式驱动)
// 完整性得分 = 已填字段数 / 总必填字段数
ws.Range("C8").Formula = "=COUNTA(C12:C25)/14";
ws.Range("C8").NumberFormat = "0%";
// 时效性标记
ws.Range("C9").Value2 = "2024-12-31"; // 最新财报期(蓝色可编辑)
ws.Range("D9").Formula = '=IF(TODAY()-DATEVALUE(C9)>180,"⚠ 超过6个月","✓ 近期")';
// 置信度等级(自动判断)
ws.Range("C10").Formula = '=IF(C8>=0.85,"High",IF(C8>=0.6,"Medium","Low"))';
// High = 可做完整估值三角验证
// Medium = 可估值但需加宽区间
// Low = 仅定性方向判断,跳过精确 DCF
// 必填数据清单(缺失项红色标记)
var fields = ["收入(TTM)","净利润","EBITDA","总资产","总负债",
"股东权益","经营现金流","CapEx","总股数","当前股价",
"Beta","行业","同行公司","最近分红"];
关键规则:如果置信度为 Low,自动跳过 DCF Sheet,仅生成相对估值 + 质量评估 + 定性结论。
// 表头
var headers = ["公司","P/E(TTM)","P/E(Fwd)","P/B","EV/EBITDA","EV/Sales","ROE","股息率"];
// 目标公司行(从数据总览引用)
// 同行公司行(用户提供或AI建议3-5家)
// 行业中位数行 = MEDIAN 公式
// 隐含价值列(每个倍数一列)
ws.Range("I5").Formula = "=MEDIAN(B6:B10)*'数据总览'!$C$17"; // 隐含P/E价值
// 折溢价标记(条件格式)
// 低于中位数 10%+ → 绿色 | 高于中位数 10%+ → 红色 | 区间内 → 无色
// 估值评分
ws.Range("I12").Formula = '=COUNTIF(I5:I9,">"&\'数据总览\'!$C$20)/5';
// 高于当前股价的方法数占比 → 越高越"便宜"
var dimensions = [
{ name: "护城河与定价权", weight: 0.20 },
{ name: "治理与资本配置", weight: 0.15 },
{ name: "盈利质量(现金转化)", weight: 0.20 },
{ name: "资产负债风险", weight: 0.15 },
{ name: "周期性与外部依赖", weight: 0.15 },
{ name: "执行力与历史兑现", weight: 0.15 }
];
// 每维度: 评分(1-5) + 证据描述 + 权重
// 综合质量分 = 加权平均
ws.Range("E12").Formula = "=SUMPRODUCT(C5:C10,D5:D10)";
// 1-2 = Weak | 3 = Neutral | 4-5 = Strong
// 评分为蓝色可编辑(Font.Color = 0xFF0000)
// 权重也可调
// 结构: 风险事件 | 类别 | 概率(1-5) | 影响(1-5) | 风险分 | 监控触发器 | 状态
// 风险分 = 概率 × 影响(公式)
ws.Range("E5").Formula = "=C5*D5";
// 前置填充常见风险类别
var riskCategories = ["宏观/政策","行业竞争","执行/管理","财务/流动性","估值/市场情绪","ESG/合规"];
// 风险热力图配色(条件格式)
// 风险分 >= 15 → 红色 | 10-14 → 橙色 | 5-9 → 黄色 | < 5 → 绿色
这是整个工作簿的"一页纸摘要":
// ── 区域 A:公允价值三角验证 ──
ws.Range("C5").Formula = "='DCF 模型'!C27"; // DCF 价值
ws.Range("C6").Formula = "='相对估值'!I13"; // 相对估值中位数
ws.Range("C7").Formula = "='核心假设'!C30"; // 情景加权价值
// 综合公允价值(权重可调,蓝色)
ws.Range("C9").Formula = "=D5*C5+D6*C6+D7*C7";
ws.Range("C9").Font.Size = 18;
ws.Range("C9").Font.Bold = true;
// ── 区域 B:安全边际 ──
ws.Range("C12").Value2 = 0.20; // 安全边际折扣(蓝色可调)
ws.Range("C13").Formula = "=C9*(1-C12)"; // 安全买入价
ws.Range("C13").Interior.Color = 0x90EE90;
ws.Range("C14").Formula = "='数据总览'!C20"; // 当前股价
ws.Range("C15").Formula = "=C14/C9-1"; // 折溢价率
// ── 区域 C:投资结论 ──
ws.Range("C17").Formula = '=IF(C14<=C13,"Attractive ✓",IF(C14<=C9,"Watchlist","Caution ⚠"))';
ws.Range("C17").Font.Size = 16;
// ── 区域 D:数据仪表盘 ──
ws.Range("C20").Formula = "='数据总览'!C10"; // 置信度
ws.Range("C21").Formula = "='质量评估'!E12"; // 质量评分
ws.Range("C22").Formula = "=MAX('风险矩阵'!E5:E15)"; // 最高风险分
// ── 区域 E:触发器 ──
ws.Range("A25").Value2 = "增仓触发"; // 什么条件下增加仓位
ws.Range("A26").Value2 = "减仓触发"; // 什么条件下减少仓位
ws.Range("A27").Value2 = "论点失效"; // 什么情况下整个投资逻辑作废
ws.Range("A28").Value2 = "投资期限";
// 这四行 B 列为蓝色可编辑文本
| 标签 | 含义 | 条件 | |------|------|------| | Attractive | 估值折价 + 质量可接受 + 风险可控 | 当前价 ≤ 安全买入价 | | Watchlist | 信号混合,等待触发器 | 安全买入价 < 当前价 ≤ 公允价值 | | Caution | 估值偏高或风险过大 | 当前价 > 公允价值 |
在 Ask 模式(只读分析)下,不生成 Excel 模型,而是以结构化文本输出估值分析:
继承 financial-modeling 的所有格式规范,额外增加:
business
自动生成月度报告工作流
tools
专属助理人格引擎 — 控制助理的身份、口吻和行为风格
tools
首次见面引导 — 在用户完成 Onboarding 后的第一次对话中使用
tools
长记忆管理器 — 隐式学习用户偏好,生成对话摘要