---
name: dcf-quick
title: DCF Quick（单页速算 DCF · 下行倒推）
summary: 给一个标的，单页产出两阶段 DCF 估值区间 + 下行地板，并把"最大仓位"由最坏情况倒推，而非由机会大小正推。投资纪律的量化外骨骼。
read_when:
  - 用户要做绝对估值 / DCF，但想要快、可复现、单页能看完
  - 用户问"这家公司内在价值大概多少、现在买安全边际够不够"
  - 用户要先把最坏情况想清楚再定仓位（下行倒推）
  - 用户提到 "dcf" "现金流折现" "内在价值" "安全边际" "仓位倒推"
---

# DCF Quick（单页速算 DCF · 下行倒推）

一个让 coding agent 跑**简化两阶段 DCF** 的可复用 skill，并强制产出「下行地板」与「由最坏情况倒推的仓位上限」。
设计哲学同 Zara Zhang 的 `frontend-slides`：能复用、能复现、能校验才值得做；也同 `valuation-comps`——本 skill 给绝对价值锚，comps 给相对锚，二者交叉验证。

**本 skill 跑 `scripts/dcf_calc.py` 做全部算术**：agent 负责取数与定假设，折现/敏感性/下行地板/仓位由脚本算，避免"垃圾进垃圾出"里再叠加心算错。

## 核心纪律（先于任何计算）
**先想清亏多少，再想赚多少。** 仓位结论**不基于基准情形**，而基于「下行地板」：
用 worst-case 假设算出的最低内在价值，对照当前市价得到安全边际；只有下行地板仍有足够缓冲时，才谈得上"能买、能买多少"。
这与 Leo 的硬纪律一致——仓位由最坏情况倒推，不由机会大小正推。

## 何时使用
- 需要绝对估值锚（comps 只给相对贵贱，DCF 给"它值多少钱"）；
- 想快速判断安全边际是否充足；
- 要把"该买多少"从拍脑袋改成"由最坏情况倒推"。

## 八步流程（每步留痕）
1. **定标的与视角**：代码/名称 + 买方视角。记录当前市价、总股本、市值、净负债（净负债 = 有息负债 − 现金）。
2. **取 FCF 基数**：优先经营现金流 − 资本开支（来自 `westock-data`/财报）。若不披露 FCF，用净利润 + 折旧摊销 − capex 近似，并标注"近似"。
3. **设两阶段**：显式期 N=5–10 年，给出分段或逐年增长率（依据：历史、行业、一致预期）；终值用 Gordon（g < 长期 GDP/通胀）**或**退出 EV/EBITDA 倍数，二选一并说明（见 `references/dcf_methodology.md`）。
4. **定 WACC**：折现率 = 无风险利率 + 风险溢价 + β/规模溢价。WACC 不是调参玩具，假设要可辩护（见 `references/assumptions_bounds.md` 的可辩护范围与红线）。
5. **算现值**：脚本折现显式期 FCF + 折现终值 = 企业价值；减净负债得权益价值，除股本得每股内在价值（基准）。
6. **敏感性**：WACC × 增长率（或终值倍数）矩阵，给每股内在价值区间（非单点）。
7. **下行倒推（必做）**：把假设压到 worst-case（增长下修 30–50%、WACC 上修 100–150bp、利润率压缩），重算「下行地板」每股价值。对照市价算安全边际。
8. **出结论 + 仓位上限**：基于下行地板给"最大仓位"建议（规则见脚本与 `references/assumptions_bounds.md`）：下行地板 > 1.5×市价才考虑建仓；1.0–1.5× 仅小仓；< 1.0× 不碰。明确触发重估的变量。

## 数据来源（按优先级，严禁编造）
- 首选 `westock-data`：市值、净负债、FCF、一致预期。
- 备选 `akshare-stock` / `neodata-financial-search`：补 A 股明细。
- 兜底 `WebSearch` / `WebFetch`：年报 IR、行情页。
- 任何缺失字段标 `N/A` 并注明来源与原因；不在文内填占位假数。

## 输出规范（单页 Markdown，结构见 `examples/sample-dcf.md`）
- 假设表（FCF 基数、N、增长率、WACC、终值法）；
- 折现计算表（显式期 + 终值）；
- 敏感性矩阵；
- **下行地板**块（worst-case 假设 + 结果 + 安全边际）；
- 仓位上限结论（由最坏情况倒推，非机会大小）；
- 附 `scripts/dcf_calc.py` 输出留痕，保证可复现。

## 校验与红线（可靠性兜底）
- WACC ≤ 终值增长率 g → 脚本直接报错（Gordon 公式发散），禁止硬算；
- 基准每股与 comps 隐含值偏离 >20% → 禁止同时给"买"和"便宜"，先解冲突；
- 下行地板必须 < 基准值（worst-case 不能比乐观还高），否则假设矛盾；
- 所有假设标注数据日期与来源；WACC/增长率超出 `references/assumptions_bounds.md` 可辩护区间时必须显式论证。

## 边界与免责
- DCF 对假设极敏感，"垃圾进垃圾出"；永远用 `valuation-comps` 交叉验证。
- 下行地板是纪律工具，不是精确底部；它回答"最坏我能接受吗"，不回答"会涨到哪"。
- 标注数据日期与来源；投资决策由人负责，本 skill 只产出可复现的分析骨架。

## 目录结构
```
dcf-quick/
  SKILL.md
  README.md
  references/
    dcf_methodology.md     # 两阶段、终值法选择、折现细节
    assumptions_bounds.md  # WACC/增长率/利润率的可辩护范围与红线
  scripts/
    dcf_calc.py            # 计算内核（基准/敏感性/下行地板/仓位）
    dcf_calc_test.py       # 单测
  examples/
    sample-dcf.md          # 脱敏样例
```
