# Value Invest

> 个人价值投资分析工具。基于护城河、财务质量、行业风险的多模型估值（PE / P/S / DCF / DDM / SOTP），给出合理价 / 买入价 / 减仓价 / 清仓价四档锚点。Use when the user asks to value a stock, evaluate whether it's worth buying, mentions buy/sell anchor on a holding, requests an updated valuation chapter for a focus-list name, or asks "is X stock cheap / expensive". 适用于 A 股和港股的左侧长期投资者。

- Skill: `liang1993/value-invest` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add liang1993/value-invest`
- Raw SKILL.md: https://api.skillmd.com/api/skills/liang1993/value-invest/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: liang1993 (https://skillmd.com/u/liang1993)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/liang1993/value-invest

---


# 价值投资分析 Skill

面向左侧价值投资者的个股分析工具。核心输出：**基于最新股价的投资价值判断和安全边际买入价**。

## When to Use

- 用户要求分析某只股票的投资价值
- 用户询问某只股票是否值得买入
- 用户要求评估持仓股的当前位置
- 用户要求更新 wiki 中个股的估值数据

## 投资者画像

- 价值投资为主，也关注成长
- 持仓周期月起步，偏长期，左侧风格
- 偏向资产配置，很少投机
- 非常看重安全边际，不做止损
- 市场：A股、港股

## 数据源与文件结构

```
skills/value-invest/
├── SKILL.md                          # 本文件：分析方法论
├── templates/stock-analysis.md       # 输出模板（wiki页面格式）
└── scripts/
    └── fetch_data.py                 # 数据获取编排（底层走 skills/_shared/marketdata）
```

### 数据获取脚本

`scripts/fetch_data.py` 一键拉取财务/行情/历史 PE 时序/研报一致预期/同行对比：

```bash
# A 股
python3 scripts/fetch_data.py 600519 000858,000596

# 港股 / 美股
python3 scripts/fetch_data.py 0700.HK
```

输出：财务摘要（5年年报+最新季报）、行情快照（含 PE_TTM/PE动态/PE静态/PB/换手/5档）、
历史 PE/PB 区间（**直接用 baostock 日级 peTTM 算中位/分位**，无需手填 EPS）、
单季度扣非趋势、卖方研报一致预期（含未来 3 年 EPS/PE 预测）、同行对比。

### 数据源分工（2026-05 修订）

| 数据 | 主源 | 兜底 | 备注 |
|---|---|---|---|
| 财务摘要 | AKShare `stock_financial_abstract` (新浪) | — | 稳定，不动 |
| A 股行情快照 | **腾讯 `qt.gtimg.cn`** (`_shared/marketdata/quote_tencent.py`) | yfinance | 比 yfinance 快 ~22x，含 PE动态/PE静态/换手/5档/量比/振幅；国内可达 |
| A 股历史日 K + PE/PB 时序 | **baostock** (`peTTM` + `pbMRQ`) | yfinance | baostock 自带日级 peTTM/pbMRQ，**消除"分位反推中位"陷阱**（CLAUDE.md 五项 sanity check 第 5 项） |
| 港股 / 美股行情 | yfinance `0700.HK` / `BABA` | — | 腾讯/baostock 不覆盖境外 |
| 卖方一致预期 | **AKShare `stock_research_report_em`** | — | **新增**，含未来 3 年 EPS/PE 预测 + PDF URL |
| TTM EPS | 自行计算（不用 yfinance.trailingEps） | — | 见 Step 1.3 |

**为什么 A 股行情不再走 yfinance**：东财 IP 封禁问题暂时不影响 yfinance（Yahoo 是境外源），但 yfinance 在国内访问偶有抖动 + 字段不全（无 PE 动态/静态、无 5 档、无换手）。腾讯接口稳定 5+ 年、HTTP 公开、字段更全，是 A 股快照的最优主源。

### 多币种口径（报表货币 ≠ 交易货币时强制）

腾讯/阿里/美团/小米/网易等港股**以人民币记账、以港币交易**，汇率必然进入估值链。规则：

| 环节 | 用什么货币 |
|---|---|
| 建模（营收/利润/EPS/DCF/SOTP） | **报表货币**（这几家 = 人民币） |
| 四档锚点展示 | **交易货币**（港币，与港股通报价一致） |
| 换算 | **只在末端做一次**：人民币每股合理价值 × 当日汇率 → 港币锚点 |

取数：`from marketdata import fx; fx.hkd_per_cny()`（外管局/中行官方中间价，方向写死在函数名里）。
**禁止硬编码汇率常量**——2026-07 三个页面写死 1.08/1.087/0.92，三个值在各自成文当天就已经错约 6%，
导致港币锚点系统性低估，且数字仍自洽、极难发现。详见 AGENTS.md「多币种口径规则」。

⚠️ **历史 PE/PB 分位是唯一例外**：每期要用当期汇率，**不要用"港币价格 ÷ 自算港币 EPS"回溯**，
直接取数据商现成的 PE 序列（同 A 股用 baostock `peTTM` 的理由——避免分位反推中位）。

**接口报错处理**：脚本内置 fallback（A 股腾讯失败自动切 yfinance；baostock 失败也切 yfinance），无需手动干预。yfinance 失败再说明并跳过，用已获取数据继续分析。

## 分析流程

> **执行节奏：财报 / 个股分析一轮到位，不挤牙膏**（教训：宁德 Q1 分析花 4 轮对话 / 13 次搜索，~40% 浪费在累积 context 重传）。收到"分析 XX"默认就做全套（核心数据对比 + 利润桥逐科目归因 + 资产负债表信号 + 好坏判断 + 可持续性拆解 + 对估值模型 EPS 上/下修影响），不要先给表面数据再等追问才深挖。有财报 PDF 优先 `Read` 全部报表，WebSearch 只补行业/市场（2-3 次）；无 PDF 才并发搜财务（≤6 次，不同质化重复）。**wiki 只读一次、规划所有 Edit 锚点后一轮改完**，不改完再重读再改。

### Step 0: 估值方法选择

**为什么是第一步**：长城汽车 v1→v2→v3 三轮重写就是因为先选错了估值方法（用 PE 估弱周期成长股），跑完发现合理价偏离市价 -30% 才返工。Step 0 用 5 分钟选对方法，能省下后续 Step 3-7 全部返工的成本——这就是它放在第一步、且不能跳过的原因。

**操作顺序**（默认走快速通道，决策树仅作兜底）：

1. **🚀 优先查快速通道**（[框架.md 默认入口](../../wiki/strategies/估值方法选择框架.md#-默认入口快速通道已分析过的同行业直接套用)）：
   - 分析对象的子行业是否在快速通道表中（汽车/啤酒/白酒/水泥/银行/券商/互联网/晶圆代工/光刻机/有色等 13 个已覆盖）？
   - 命中 + 业务模式相似 → 直接套用主估值，跳到第 4 步输出
   - 命中但业务模式差异大（如长城出海占比 38% vs 长安 22%）→ 套用方法但调整参数，跳到第 4 步
   - **何时该 review 而不直接套用**：参照标的 wiki 更新 >6 个月 / 重大事件 / 主业占比 <70% → 进入第 2 步重判，避免套用过时假设

2. **🌳 未命中走决策树**（仅新子行业用，[框架.md 兜底入口](../../wiki/strategies/估值方法选择框架.md#-兜底入口决策树新子行业用)）：
   - 拉取近 5-8 年营收 / 销量 / 净利率历史（akshare `stock_financial_abstract` + 必要时 WebSearch 补充销量数据）
   - 按 5 问决策树判断：
     - Q1：行业是否金融？→ 是 → PB 主
     - Q2：营收是否单边上行（5-10 年仅 1-2 年微跌 <5%）？是 → 跳 Q4（不问 Q3）；否 → 进 Q3
     - Q3：销量/产量是否同步周期波动？→ 是 → 真周期股 PB 主
     - Q4：净利率是否长期稳态（5 年波动 ≤±20%，剔除单年极端值）？→ 是 → 稳态消费/成长 PE 主
     - Q5：以上都否（营收单边 + 净利率周期 ±50%+）→ 弱周期成长 P/S 主
   - 阈值口径：净利率波动 = `(max - min) / 中位数`（先剔除 >2σ 的单年极端值）

3. **特殊规则**：主业占比 <70% 时单一主估值会失真——汽车 + 手机部件这种结构应改用 SOTP 分部估值

4. **输出主估值 + 1-2 辅助方法**

**输出格式**——记录到 wiki 的"企业类型与估值模型"章节，便于下次复盘时回看本次选了什么方法、为什么：

```
企业类型：[稳态消费/金融/真周期/弱周期成长/高成长]
主估值：[PE / PB / P/S / PEG]
辅助：[DCF / SOTP / DDM / 中周期 PE]
不适用：[列出明确不能用的方法及原因]
判断依据：[关键 1-2 个数据点，如"营收 8 年 +125% 仅 2019 -3% / 净利率 2-6.3% 区间波动"]
```

**衔接规则**：
- 不先做 Step 0 直接进 Step 1，会导致 Step 3 的合理 PE 推导可能完全是浪费——因为可能根本不该用 PE
- 如选 P/S 主，跳过 Step 3（合理 PE 因子推导），直接到 Step 4 P/S 模型
- 如选 PB 主（周期/金融），Step 3 简化为基础 PB 推导
- 如选 PE 主（稳态），按 Step 3 完整推导
- 引用 [估值方法选择框架](../../wiki/strategies/估值方法选择框架.md) 的子行业 P/S 基准，避免 skill 与 wiki 数据脱节；wiki 没列的子行业自行补充同行可比表

**反向健康检查**（Step 0 完成后做）：

完成 Step 1-7 跑出合理价值后回到 Step 0 做校验——任一项触发就复查方法选择，因为这意味着方法或参数可能选错了：

| 触发条件 | 含义 | 行动 |
|---------|------|------|
| 合理价值 vs 当前市价偏离 > **±40%** | 极有可能方法选错或参数失真 | 重新走 Step 0 决策树 + 复查同行可比 |
| 合理价值 vs 历史 1 年区间外 | 估值锚脱离市场实际定价 | 检查是否用了周期低位 EPS / 主题泡沫期数据 |
| 三模型（P/S/PE/SOTP）差距 > 30% | 主辅模型分歧 | 优先信营收锚（P/S），复查净利率假设 |
| 与"快速通道"参照标的差距 > 50% | 子行业内异常值 | 检查业务模式是否真的可比 |

**校验示例**（长城汽车 v1 的反例）：
- v1 用 TTM PE 跑出合理价 14 元 vs 当前 20.23 元 = **-30% 偏离**（接近 -40% 阈值）
- 若加了反向健康检查，v1 会被自动拦截，不会等到 v3 才发现问题

### Step 1: 获取数据

同时获取以下数据：

1. **财务摘要**（AKShare）：近5年年报 + 最新季度的关键指标
   - 营业总收入、归母净利润、经营现金流量净额
   - 营业总收入增长率、归属母公司净利润增长率
   - 毛利率、销售净利率、净资产收益率(ROE)、总资产报酬率(ROA)
   - 基本每股收益、每股净资产、每股现金流
   - 资产负债率、流动比率
   - 存货周转天数

2. **行情数据**（A 股走腾讯，港股美股走 yfinance；脚本自动选源）：
   - 当前股价、PE_TTM/动态PE/静态PE、PB、总/流通市值、换手率、5 档盘口
   - 52 周高低、年度高低（来自 baostock 历史 K）
   - 股息率、分红历史（A 股从财务摘要算；港股美股从 yfinance.dividends）

3. **TTM EPS 自行计算**（不使用 yfinance 的 trailingEps）：
   - 公式：TTM净利润 = 最新累计 + 上年未覆盖季度（如：前三季累计 + 上年Q4）
   - 1-4月用上年全年EPS；5-8月用最新累计+上年后续季度补齐；9-12月用前三季+上年Q4
   - 注意季节性（啤酒Q4亏损、白酒Q4最强），TTM自动平滑

4. **每股净资产（用于PB计算）**：优先使用最新季报的每股净资产，不用年报数据。券商等金融股净资产变动较快，用滞后数据会导致PB失真。

5. **同行数据**（AKShare）：同行业2-3家核心公司的财务摘要，用于横向对比

### Step 1B: 利润表分解与EPS基线（按需触发）

> 详细子流程见 [`references/step-1b-profit-decomposition.md`](references/step-1b-profit-decomposition.md)。

**何时执行**（满足任一）：
- 归母净利润与扣非净利润偏差 > 15%
- 存在终止经营/剥离业务
- 投资收益 / 公允价值变动占净利润比例 > 10%
- AKShare 的毛利率与 (1 - 营业成本/营业总收入) 计算值不一致
- 公司有大额 SBC（科技/CXO/创新药常见）

**何时跳过**：归母与扣非接近（偏差 < 10%）、利润结构简单的成熟企业（如茅台、海天）。

**为什么单独成 Step**：AKShare 只给汇总指标（毛利率、净利率），看不到利润表每行。复杂利润结构的公司仅靠汇总指标会让 EPS 基线失真——本 Step 通过读年报利润表逐行拆解，建立真实经营利润基线，输出选定的 EPS 值作为后续 Step 3（PE 模型）和 Step 4B（远期分析）的输入。

**子步骤概要**（详见 references）：
- 1B.1 获取年报利润表逐行数据
- 1B.2 利润瀑布图（含真实毛利率、经营毛利）
- 1B.3 非经常性损益桥接（归母 → 扣非 → 经调整）
- 1B.4 核心经营利润验证（核心归母 ≈ 扣非归母，偏差 < 1%）
- 1B.5 利润驱动因子排序（前 5 大 driver）
- 1B.6 EPS 基线决策（归母 / 扣非 / 持续经营口径选哪个）

### Step 2: 财务质量评估

对以下维度逐项评分，每项给出具体数据支撑：

**盈利能力：**
- 毛利率水平及5年稳定性
- 净利率水平及趋势
- ROE水平及趋势（杜邦分解：利润率 × 周转率 × 杠杆）

**成长性：**
- 近3年营收复合增速
- 近3年净利润复合增速
- 增速趋势（加速/稳定/减速）

**现金流质量：**
- 经营现金流 / 净利润（>1为优）
- 自由现金流是否充裕

**财务安全：**
- 资产负债率（<40%为优，<60%为良）
- 流动比率（>2为优，>1.5为良）
- 有息负债占比

> 本节是**快速评分**。现金流与资产负债表的**深挖**（OCF-净利勾稽归因 / 正常化 FCF / 净现金 + 扣现金估值 / 营运资本质量）见 **Step 2D**——现金大户、有财务公司类金融子公司、OCF 与净利背离时触发。现金流陷阱判据口径以 [`价值陷阱排雷.md` 第二层](../../wiki/strategies/价值陷阱排雷.md)为 single source。

**分红能力：**
- 股息率
- 分红率及趋势
- 连续分红年数

### Step 2B: 业务结构 + 竞争对手完整性 mapping（首次建档强制 + 按需刷新）

**为什么是强制步骤**：地平线机器人 v1 ingest 漏了**地瓜机器人**（全资子公司、独立 1 亿美元 A 轮）和 **Momenta**（HSD 方案层直接对手 + 港股 IPO 同期对手），导致 SOTP 严重低估非车业务 33 亿 → 95-130 亿 HKD 区间漏估、行业格局缺关键对手，主对话连续 6 轮 query + 3 轮 wiki 修订（v1.1 verify → v1.2 SOTP 重估 → v1.3 行业格局补全）才追平。

**前置 mapping 防止下游返工**，逻辑与 Step 0 同源：在 Step 2 财务质量评估后做完两个 mapping，能省下后续多轮 wiki 修订成本。

**何时执行 vs 何时跳过**：

| 场景 | 是否执行 | 理由 |
|---|---|---|
| **首次建档**（wiki 不存在） | ✅ **强制执行** | 没有 Step 2B 就无法做 SOTP，行业格局也容易漏对手 |
| 估值章节大改（如新 P/S 范式 / SOTP 重估） | ✅ 强制执行 | 估值方法变了，分部和对手 mapping 都要重做 |
| 季报数据更新（不变估值方法） | ⚠️ **按需**：距上次 Step 2B > 6 个月才刷新 | 业务结构相对稳定，但需周期性刷新 |
| 锚点修订 < 10% | ❌ 跳过 | 微调不涉及业务结构变化 |
| 业务结构稳定 18 个月无变化（茅台/招行/中信类）| ❌ 跳过 + wiki 标注"2B 上次刷新日期" | 稳态业务不需每次重做 |

**实际工作量**：业务简单 + 对手清晰的标的（如茅台、海螺）做 happy path 约 **15-20 分钟**；多分部 + 多维对手的复杂标的（如平安、地平线）做完整 mapping 约 **30-45 分钟**。

**操作顺序**：

1. **业务结构完整性 mapping**（2B.1）
2. **竞争对手多维度 mapping**（2B.2）
3. **反向 sanity check**（2B.3）
4. 输出 → 喂给 Step 4 SOTP（分部估值输入）+ wiki "业务全景" / "行业格局" 章节

#### 2B.1 业务结构完整性 mapping（4 个维度强制查）

| 维度 | 检查问题 | 数据源 | Fail 条件 |
|---|---|---|---|
| **合并报表层子公司** | 公司是否有独立运营 / 独立融资 / 独立 IPO 的全/控股子公司？是否在 SOTP 单独建分部？| 年报"子公司列表" + WebSearch "{公司名} 子公司 分拆 融资" | 漏报独立融资 / 独立估值的子公司 |
| **战略持股层** | 公司是否持有 ≥ 20% 关联公司 / 合资公司？这些股权是否在 SOTP 单独估值？| 年报"长期股权投资" + WebSearch "{公司名} 合资 持股" | 漏报 ≥ 20% 持股的合资公司 |
| **不产生营收但有期权价值的资产** | 开源项目 / 平台 / 数据资产 / 牌照 / IP 储备 | 公司新闻稿、CEO 公开讲话、产品发布会 | 漏报已发布且具战略意义的不产生营收资产 |
| **分部营收 ≥ 5% 单列** | 年报披露的分部营收是否每一块都拆？任何 ≥ 5% 营收的分部是否单列？| 年报"分部信息" | 把 ≥ 5% 营收的分部笼统归类为"其他" |

**输出**：业务结构地图（树状图）

```
{公司名} ({代码})
├─ 上市公司主体
│   ├─ 分部 1: XX 业务 (NN.N% 营收)
│   ├─ 分部 2: XX 业务 (NN.N% 营收)
│   └─ 分部 N: XX 业务 (≥ 5% 营收必须单列)
├─ 全资/控股子公司
│   └─ {子公司名} (持股 N%, 独立融资估值如有)
├─ 战略持股 ≥ 20%
│   └─ {合资公司名} (持股 N%, 估值锚)
└─ 不产生营收但有期权价值
    ├─ {资产 1: 开源/牌照/数据}
    └─ {资产 2: 同上}
```

#### 2B.2 竞争对手多维度 mapping

**两层维度结构**：
- **基础 2 维**（强制列）：产品/技术层 + 方案/服务层
- **扩展 2 维**（按需触发）：客户层 + 资本/IPO 同期
- **行业特定维度**（按需补充）：见下方"行业差异化维度"

**基础 2 维（任何标的都必须列）**：

| 维度 | 含义 | 应列对手 | Fail 条件 |
|---|---|---|---|
| **产品/技术层** | 谁卖同样的硬件/产品/服务？同类市场份额排名 | 直接对手 + CR3/CR5 | 漏报排名前 3 的同类产品对手 |
| **方案/服务层** | 谁交付同样的整套方案（含算法+服务）？可能不卖硬件，只卖软件+服务 | 整体方案商对手 | 漏报方案层主要对手——这是 v1 ingest 最容易漏的维度，因为"硬件出货排名表"看不到纯软件对手 |

**扩展 2 维（按触发条件列，避免强行凑数）**：

| 维度 | 含义 | 触发条件 | Fail 条件 |
|---|---|---|---|
| **客户层** | 谁抢同一个客户预算？包括客户自研团队 | **客户集中度 > 30%**（CR3 客户营收占比）或客户已宣布自研 | 触发情况下漏报关键客户自研动态 |
| **资本/IPO 同期** | 谁同期上市 / 融资？估值倍数对比 | **所在子行业近 12 个月有 ≥ 1 家同期 IPO 公司** | 触发情况下漏报同期 IPO 对估值锚的冲击 |

**行业差异化维度（应根据行业特点补充）**：

基础 2 维 + 扩展 2 维是**最低要求**，主作者应根据行业特点补充其他维度——例如：

| 行业类型 | 建议补充维度 |
|---|---|
| 周期股（钢铁/煤炭/水泥）| **产能区域**：同一区域产能集中度、运距决定的市场分割 |
| 银行 | **同质化产品**：存款/贷款/理财业务的零和竞争对手 |
| 消费品 | **价格带**：同一价格段消费者预算共享对手（如茅台 vs 五粮液） |
| 汽车 | **价格带 + 渠道**：4S 店覆盖 + 电商渠道（如比亚迪 vs 吉利） |
| 互联网平台 | **用户时长**：用户注意力共享对手（如美团 vs 抖音本地生活）|
| 医药 | **同适应症**：FDA / NMPA 同适应症已上市药 + 在研管线 |

不强求每个标的都凑齐 N 维度——**结构合理 > 维度数量**。

**输出**：对手 mapping 表 + 数据源 URL（每个对手必须有 ≥ 1 个数据源支撑）

```
| 维度 | 对手 1 | 对手 2 | 数据源 URL |
|---|---|---|---|
| 产品/技术层 | {名} ({份额}) | {名} ({份额}) | {URL} |
| 方案/服务层 | {名} | {名} | {URL} |
| 客户层（如触发）| {客户自研团队} | {第三方供应商} | {URL} |
| 资本同期（如触发）| {同期 IPO 公司} ({估值}) | — | {URL} |
| 行业特定（如适用）| {对手} | {对手} | {URL} |
```

#### 2B.3 反向 sanity check（30 秒自查）

完成 2B.1 + 2B.2 后做以下 self-check，任一项触发就回去补：

| 自查项 | 触发问题 |
|---|---|
| 业务地图里 ≥ 5% 营收的分部是否都列了？| 漏 1 个就回去补 |
| 基础 2 维对手（产品层+方案层）是否每维至少 1 个？| 任一维为空，强制 WebSearch 补充 |
| 扩展 2 维触发条件是否检查（客户集中度 > 30% / 同期 IPO）？| 触发但未列，强制 WebSearch 补充 |
| 子公司是否独立估值？| 不能粗略归"其他业务 × P/S"，必须单独锚定 |
| 战略持股是否独立估值？| 不能笼统并入主业，要给独立期权价值 |

**反向 case 提醒**（地平线 v1 失败案例，作为本步骤的"反面教材"）：

| 漏 # | 内容 | 后果 | 应在 2B 哪一节捕捉 |
|---|---|---|---|
| 1 | 地瓜机器人是全资子公司 + 独立 1 亿美元 A 轮融资 | SOTP 漏 60-100 亿 HKD 估值 | 2B.1 合并报表层子公司 |
| 2 | HoloBrain / HoloMotion 是不产生营收的期权资产 | 长期护城河漏估 | 2B.1 不产生营收但有期权价值 |
| 3 | Momenta 是 HSD 直接对手（方案层）+ 港股 IPO 估值压制（资本同期）| 行业格局缺 / P/S 锚未校准 | 2B.2 方案层 + 资本同期 |

#### 2B.4 输出落地

| 输出 | 喂给哪个 Step |
|---|---|
| 业务结构地图 | Step 4 SOTP（分部估值的完整列表）+ wiki "业务全景" |
| 对手 mapping（基础 2 维 + 扩展/行业维度如触发）| Step 4 P/S 同业可比表（含交叉业务模式对手）+ wiki "行业格局" |
| 客户层 / 资本同期对手（如触发）| Step 4-6 风险章节 + wiki "风险点" |

**重要约束**：Step 4 SOTP 输入必须从 2B.1 业务结构地图取——不允许 Step 4 "自己想到哪些分部就估哪些"，避免遗漏。

### Step 2C: 质化深度评估（按企业类型差异化执行）

**为什么是独立步骤**：地平线 v1-v1.3 wiki 漏报了创始团队（余凯+黄畅"百度 IDL 系" 11+ 年稳定）+ 人才密度（研发占比 73.1% 接近 Mobileye 80%）+ 研发投入演化（2025 研发增速首次反超营收 +5.6pct 是反向运营杠杆拐点），直到 v1.4 用户 query 才补——这些是不易量化但影响长期估值 5-10pct 的**质化深度**维度。Step 2B 防"覆盖完整"，Step 2C 防"质化深度遗漏"。

**核心契约**：质化深度评估**按企业类型差异化**——不同企业类型查不同维度，**不允许"创始团队"框架硬套央国企**（结构性错位）。

#### 2C.1 企业类型质化分级（治理结构维度，独立于 Step 0）

| 企业类型 | 质化深度依赖 | 核心查什么 | 不查什么 |
|---|---|---|---|
| **AI / 科技创业型** | ★★★（强必查）| 创始人 + CTO 履历 / 人才密度 / 团队稳定性 / 战略 vision / 文化 | — |
| **民营成长股（一代+接班）** | ★★（中度查）| 创始人风格 / **二代接班准备** / 员工激励 / 文化 | 团队稳定性（已稳态）|
| **民营巨头（创始团队已退）** | ★（选查）| **接班传承稳定性** / 公司治理 / 大股东动作 | 创始人个人色彩 |
| **股份制金融 / 券商 / 保险** | ★★（特殊）| **合规文化** / **风控体系** / 高管稳定性 / 重大处罚 | 创始人 |
| **央国企** | ★（特殊查，框架完全不同）| **政策定位** / **国资委战略** / **上级部门关系** / 高管轮换节奏 / 股息率政策 | **创始人 / 团队稳定性**（结构性错位）|
| **真周期 / 资源股** | ☆（按需）| 管理层成本控制能力 / 周期高峰扩张能力 | 创始团队个人色彩 |

**与 Step 0 的关系（重要）**：

Step 0 7 类（按估值方法分：现金牛 / 利润改善 / 高成长 / 真周期 / 弱周期成长 / 高分红 / 困境反转）和 Step 2C 6 类（按治理结构分）**维度正交**——同一标的可能 Step 0 是"高成长型 PE 主"+ Step 2C 是"AI 科技创业型强质化"（如地平线）；也可能 Step 0 是"高分红型 DDM 主"+ Step 2C 是"央国企质化"（如中移动 / 长江电力）。**Step 2C 不是 Step 0 的延伸，而是独立的治理结构评估维度**。

**判断方法（6 类全覆盖）**：

| 判断条件 | → 质化框架 |
|---|---|
| 实控人是国资委 / 央企集团 / 国务院国资委 | → **央国企质化** |
| 主营银行 / 券商 / 保险 / 信托 + 制度化运营 | → **金融质化**（即使实控人是央企，金融业特殊性强，**优先**金融质化）|
| 主营钢铁/煤炭/水泥/有色/化工/猪肉 + 营收随商品价格大幅波动 | → **真周期质化** |
| 主营 AI/芯片/具身智能 + 上市 < 10 年 + 科技 founder 仍任 CEO（学术/技术背景为主）| → **AI 科技创业型强质化** |
| 个人/家族 ≥ 30% 控股 + 创始人在位 CEO 或董事长（实质控制）| → **民营成长股中质化** |
| 个人/家族 ≥ 30% 控股 + 创始人已退（不任 CEO 也不任董事长）| → **民营巨头弱质化** |

**边缘 case 处理**（避免分类困难时无所适从）：

| Case | 处理方式 |
|---|---|
| 创始人退任 CEO 但仍任董事长（如比亚迪王传福 / 海尔张瑞敏退 CEO 转董事长一段时间）| 视为"创始人在位" → 民营成长股中质化（实质控制力还在）|
| 股份制银行实控人是央企集团（如招商银行 = 招商局集团）| **优先金融质化**（金融业制度化运营 > 央企体制）|
| 港股科技股（腾讯 / 阿里）| 创始人色彩仍重但已巨头 → **民营巨头弱质化 + 创始人传承补充查**（如马云退后阿里"合伙人制度"是否稳定）|
| A+H 双重上市的央企（如紫金 H、招行 H、中信 H）| 看**实控人**决定（实控人央企 = 央国企质化，无论上市地）|
| 混改企业（联通 + BAT 战投 / 光大集团等）| 实控人仍国资委 → **央国企质化为主 + 加注混改进度** |
| 科创板硬科技股（半导体设备 / 创新药 CXO）| 创始人若仍 CEO → **AI 科技创业型强质化**（即使上市 > 10 年，业务高成长性是核心）|

#### 2C.2 六套差异化清单

**强质化（创业型科技）—— 5 项必查**：
1. 创始人 + CTO 学术 + 大厂背景（IDL/百度/字节/华为等"黄埔系"）
2. 团队稳定性（5+ 年核心不变 / 重大离职事件 / 内部组织变动）
3. 人才密度（员工总数 / 研发占比 / 人均薪酬）
4. 校友网络 / 学术派系（清华系 / 中科院系 / IDL 系 / 阿里系）
5. 战略 vision 一致性（CEO 多次公开发言连贯性 / 战略调整频次）

**中质化（民营成长股）—— 4 项查**：
1. 创始人风格 + 行业地位（如王传福理工男 / 张瑞敏管理型 / 江南春销售型）
2. **接班准备**（二代接班 / 职业经理人）—— 这是民营企业最大单一变量
3. 员工激励（股权 / 期权 / 限制性股票占比 + 兑现节奏）
4. 文化关键词（"狼性"/"敬天爱人"/"客户第一" 等）+ 体现度

**弱质化（民营巨头）—— 3 项查**：
1. 接班传承稳定性（已经过几次 CEO 更替 / 平稳过渡？）
2. 公司治理（独董比例 / 大股东占比 / 关联交易披露）
3. 大股东动作（近 12 个月减持 / 增持 / 质押）

**金融质化—— 4 项查**：
1. 合规文化（近 3 年重大处罚 / 内控事件 / 投诉率 vs 同业）
2. 风控体系（银行：不良率 / 拨备 vs 同业；保险：COR / 偿付能力；券商：自营风控）
3. 高管稳定性（行业正常轮换 vs 自身节奏；近 12 个月有无高管离职潮）
4. 主要股东动作（大股东增减持 / 战投退出）

**央国企质化—— 6 项查（与创始人框架完全不同）**：

> ⚠️ **结构性约束**：央企管理层 = 国资委任命，3-5 年轮换是**正常节奏**。**不查"创始团队"**（结构性错位）。"创始人"对央企不存在（中移动来自电信拆分 / 中建来自建工部转制 / 中信证券是央企背景）。

1. **政策定位**：公司在国家战略中扮演什么角色？被列入哪些重大文件？（例：中移动是"算力国家队"+"东数西算" / 中建是基建主力 / 长江电力是"双碳能源" / 紫金 H 是"全球矿业第二"）
2. **国资委战略**：主管部门 / 业绩考核口径 / 重组方向（如国资委央企总数 98 → 计划压缩到 80 / "市值管理"考核 KPI）
3. **股息率政策**：上级要求分红率 / 历史分红率 / 长期承诺（如国资委 2024 要求央企分红率 ≥ 70% / 长江电力 70%+ / 中神华 75%+）
4. **上级部门关系**：行业部委定价权 / 财政部分红权 / 国务院直接管的特殊性
5. **高管轮换节奏**：3-5 年常规 vs 异常信号（多任董事长同时退？董事长任期 < 2 年频繁更替？）
6. **重大事件背景**：政策驱动还是市场驱动？（影响估值锚的来源）

**真周期质化—— 2 项查**：
1. 管理层成本控制能力（低谷期 OPEX 反应速度 / 砍 CapEx 决断力）
2. 周期高峰扩张能力（是否过度举债 / 海外并购质量 / 套保策略）

#### 2C.3 输出落地

| 评估输出 | 喂给哪个 wiki 章节 |
|---|---|
| 强/中质化结果 | 护城河章节"创始团队 + 人才密度"小节 |
| 央国企质化 | 护城河章节"政策定位 + 央企战略"小节（**替代**而非附加"创始团队"小节）|
| 金融质化 | 风险章节"合规文化 + 风控体系"小节 |
| 真周期质化 | 风险章节"管理层周期反应"小节 |

**重要约束**：质化深度评估**是质化加分/减分项**，**不直接修改 SOTP 或 P/S 锚**——但可强化护城河评级 + 新增风险维度。如果发现重大组织/治理 red flag（如高管集体离职、合规重大处罚、二代接班失败），可作为安全边际**提升 5-10pct**的依据。

#### 2C.4 何时执行 vs 何时跳过

| 场景 | 是否执行 |
|---|---|
| **首次建档**（wiki 不存在）| ✅ **强制执行** |
| 估值章节大改 | ✅ 强制执行 |
| 季报数据更新（不变估值方法）| ⚠️ 按需：距上次 2C > 12 个月才刷新（质化数据变化慢）|
| 锚点修订 < 10% | ❌ 跳过 |
| 已建档 wiki retrospective 补全 | ⚠️ 按需 |

**硬触发条件**（任一发生 → **即使距上次 < 12 个月也强制重做** Step 2C，不允许"业务结构稳定"借口跳过）：

| 事件 | 影响 | 适用类型 |
|---|---|---|
| 创始人 / CEO 离任 / 任职变动 | 核心治理变化 | 强 / 中 / 弱质化 |
| 核心高管 / CTO 离职 | 团队稳定性变化 | 强 / 中质化 |
| 高管集体离职潮（3 个月内 ≥ 3 名高管离任）| 重大组织变动 | 所有类型 |
| 重大合规处罚 / 内控事件（监管立案 / 罚款 ≥ 千万）| 合规文化恶化 | 金融质化 / 上市公司 |
| 大股东重大减持（≥ 1% 股本 / 一次性套现 ≥ 5 亿）| 治理变化 | 民营巨头 / 中质化 |
| 战投退出 / 股权激励大规模行权 | 激励机制变化 | 中质化 |
| 国资委政策文件涉及该公司（重组 / 整合 / 分拆）| 政策驱动变化 | 央国企质化 |
| 周期高峰 / 低谷的重大决策（海外并购 / 砍 CapEx 决断）| 周期反应能力体现 | 真周期质化 |

**实际工作量（实测）**：
- 央国企 / 真周期质化：**20-30 分钟**（要看政策文件 + 国资委公告 + 周期数据，比想象的慢）
- 民营巨头弱质化 / 中质化：**25-35 分钟**（接班传承 + 治理结构 + 大股东动作）
- 强质化（AI 创业型）/ 金融质化：**30-60 分钟**（要查创始人/CTO 背景 + 内部组织动态 + 合规历史）

### Step 2D: 现金流与资产负债表质量深挖（按需触发）

> 详细子流程见 [`references/step-2d-cashflow-balancesheet.md`](references/step-2d-cashflow-balancesheet.md)。

**为什么单独成 Step**：对称于 Step 1B（利润表逐行分解）——1B 深挖利润表，2D 深挖**现金流量表 + 资产负债表**。AKShare 汇总只给"OCF/净利""资产负债率"裸评分，看不到逐行。茅台 v1.2 重估（2026-06-04）暴露三个盲点：① 2025 OCF -33% 实为控股财务公司"吸收集团成员存款减少"的会计扰动（年报 p.6 明确归因），裸评分会误判主业现金恶化；② 净现金 ~1700 亿 / 136 元/股（占股价 11%）的下行托底 + 趴账现金折价/催化全漏；③ DCF 1130-1340 区间过宽，因 FCF 没正常化。本 Step 建立真实现金生成基线 + 净现金口径，喂 Step 4 DCF（正常化 FCF）/ Step 6 安全边际（下行托底校验）。

**single source（不重复定义口径）**：OCF/净利含量、自由现金流、分红/FCF 覆盖度的**判据与门槛以 [`价值陷阱排雷.md` 第二层](../../wiki/strategies/价值陷阱排雷.md)（line 75-111）为 single source**。2D 只做"个股化深挖 + 喂估值"，不另立口径，避免两份文档漂移（同 CLAUDE.md single-source 原则）。

**何时执行**（满足任一）：
1. 货币资金 + 类现金金融资产 占总资产 **≥ 20%**（现金大户）
2. OCF/净利润 **近 3 年均值 < 0.85 或 > 1.2**，或**任一年 < 0.6 / > 1.5**（极端单年；用均值滤季节噪音、极端单年兜真异常）
3. 合并报表含**财务公司 / 类金融子公司**（出现"吸收存款 / 拆出资金 / 发放贷款及垫款"科目）——注意这是**实业主业 + 财务公司**（如茅台），是 2D 的**核心目标客户**，非金融股
4. 合同负债 / 预收款 **大幅波动（> ±30% YoY）且影响 OCF**
5. DCF 被赋予 **≥ 30% 定价权重 且 现金占比 > 15%**（纯参考型 DCF 不触发整套，只调用 2D.2 的正常化 FCF 单项）

**何时跳过**：
- **主业即金融（银行 / 券商 / 保险，Step 0 判为金融型）→ 跳过整套**（现金概念完全不同，走 PB/DDM）。判定锚点用 **Step 0 企业类型**，**不是"是否出现吸收存款科目"**——否则茅台这类实业+财务公司会被误判跳过
- 轻资产 + 净利 ≈ OCF（近 3 年 OCF/净利 0.85-1.2）+ 无金融子公司 + 现金占比 < 15% 的简单标的
- 锚点修订 < 10% / 30 天内已做过 2D

**口径契约（硬约束，防双重计算）**：

| 维度 | 口径 | 用途 |
|---|---|---|
| 四档锚点（合理价值/买入/减仓/清仓） | **含现金 PE 口径** | 与个股历史 PE 中枢同口径可比，是定锚唯一依据 |
| 净现金 / 扣现金 PE / 扣现金 EV | **辅助维度** | (a) 判经营主业贵贱；(b) Step 6/8 事后交叉验证下行托底；(c) 识别趴账折价/催化 |

> **硬规则（净现金只当安全边际，不抬估值）**：净现金 / 扣现金 EV **不进合理价值、不上调任何锚点或安全边际比例**，只作 ① 下行托底校验（如"悲观价对应主业 EV 是否已便宜"）② 主业贵贱判断。**资本返还催化**（公司明确启动特别分红 / 大幅提分红率时）只作为独立的"价值兑现路径"叙事写进催化章节（净现金 × 3-5 折估解锁空间），**同样不计入合理价值 / 四档锚点**。

**子步骤概要**（详见 references）：
- **2D.1 OCF-净利润勾稽 + 收现比 + 营运资本质量**：OCF/净利 3 年趋势 + 背离归因（营运资本 / 合同负债 swing / 财务公司存款流 / 大额非现金项）；收现比（销售商品收到的现金 / 营收）作背离归因抓手；应收 / 存货 / 应付周转趋势 + 营运资本占用率。**破除裸评分误读**。
- **2D.2 正常化 FCF + 分红覆盖**：OCF − 维持性 capex（剔扩张性，维持性 ≈ 近 3-5 年折旧摊销均值代理 + confidence 标注）− 一次性营运资本扰动 / 金融子公司流；输出**正常化 FCF 喂 Step 4 DCF**；算分红 / 正常化 FCF 覆盖度（[价值陷阱排雷] 判据，> 1 = 借钱分红陷阱）。
- **2D.3 净现金口径**：现金 + 类现金金融资产 − 有息负债 − 金融子公司对外负债（吸收存款）− 受限/质押货币资金 − 少数股东归属；逐项列 + 占总资产/市值 %。**金融子公司口径提醒**（拆出资金 = 自有现金塞财务公司赚息 = 资产；吸收存款 = 对集团成员负债 = 扣减项）。**优先读年报合并资产负债表正表**（MD&A 变动表会漏科目，如茅台买入返售 88.80 亿不在变动表）。
- **2D.4 扣现金估值**：扣现金 PE = (市值 − 净现金) / (净利 − 现金税后收益)，**分子分母同口径**（必剔现金收益，否则虚低）；判主业贵贱。重申口径契约。
- **2D.5 净现金双重角色**：① 下行托底（喂 Step 6.6：净现金/股 ÷ 股价 = 资产安全垫；悲观价对应扣现金 EV 校验；**受限资金不算可支配托底**）；② 趴账折价/催化（低收益现金被表观倍数低估；资本返还加速可解锁，3-5 折估）。

**输出落地**：

| 输出 | 喂给 |
|---|---|
| 正常化 FCF | Step 4 DCF（当期 FCF 基数；4B 远期利润与 DCF 平行，**不在 FCF 基数层互喂**） |
| 分红 / 正常化 FCF 覆盖度 | Step 2 财务质量 / 风险（价值陷阱判据） |
| 净现金/股 + 扣现金 EV | Step 6 安全边际（**下行托底校验，不改四档主锚口径**） |
| 趴账折价 / 催化 | wiki 风险 / 催化章节 |
| 全部 | 输出模板"净现金与现金流质量"小节 |

**实际工作量**：现金大户 / 有财务公司标的 **15-25 分钟**；简单标的直接跳过。

### Step 3: 合理PE定价模型（按需触发）

> 详细子流程见 [`references/step-3-pe-factors.md`](references/step-3-pe-factors.md)。

**何时执行**：仅当 Step 0 判定主估值 = PE 时执行本节。

**何时跳过**：
- P/S 主估值（弱周期成长，如汽车/家电）→ 跳到 Step 4 的 P/S 模型
- PB 主估值（真周期/金融）→ 跳到 Step 4 的 PB 模型
- PEG 主估值（高成长）→ 跳到 Step 4 的 PEG 模型

**为什么需要因子推导**：单纯查"消费 20x / 周期 8x"行业基础 PE 不足以反映个股差异。同样可选消费基础 PE 15x，茅台护城河+ROE+品牌力堆叠后合理 PE 可到 22x，普通家电股可能反而是 13x——靠的就是因子加减。

**合理 PE 公式**：

```
合理PE = 行业基础PE + 加分合计 + 减分合计
```

下限保护 8x（避免基本面尚可的公司被打到地板价）；上限保护 50x（防过度乐观）。

**子步骤概要**（详见 references）：
- 3.1 行业基础 PE（11 类行业基准表）
- 3.2 加分因子（护城河 / ROE / 现金流 / 成长 / 分红）
- 3.3 减分因子（财务风险：增速 / 现金流 / 负债 / 应收）
- 3.4 减分因子（行业风险：白酒 / 医药 / 科技 / 地产 / 周期 / 金融 各自预设）
- 3.5 公司特有风险微调
- 3.6 合理 PE 计算（含上下限保护）

### Step 4: 多模型估值与交叉验证

> 详细子流程见 [`references/step-4-multi-model.md`](references/step-4-multi-model.md)。

**为什么需要多模型**：单一估值方法对不同企业类型适用度不同——茅台用 DCF 比 PE 更稳，长江电力用 DDM 比 PE 准，长城汽车用 P/S 比 PE 准。Step 0 已选定主估值，Step 4 把主估值与 1-2 个辅助模型加权交叉验证，避免单一假设失真。

**7 类企业 → 主+辅模型对应表**（详见 references 4.1）：

| 企业类型 | 主模型 | 辅助 |
|---|---|---|
| 现金牛型（茅台、长电）| PE | DCF（高可靠性，等权）|
| 利润改善型（青啤、海天转型期）| PE | DCF（参考）|
| 高成长型（早期新能源）| PEG | PE 校验 |
| 真周期型（钢铁/煤炭/水泥）| PB | PE 仅周期底部参考 |
| 弱周期成长型 ★（汽车/家电）| P/S | 中周期 PE + SOTP（三模型加权 50/30/20）|
| 高分红型（银行、高速公路）| DDM | PE（等权）|
| 困境反转型 | 目标利润 × 合理 PE | — |

**关键交叉验证规则**（详见 references 4.3）：
- 模型间差距 > 30% → 检查假设是否合理，报告中说明分歧
- 弱周期成长股三模型差距 > 50% → 强制复查可比表 / 净利率假设 / SOTP 分部
- 综合估值 vs 市场实际定价偏离 > ±20% → 触发 Step 0 反向健康检查

**注意**：本节是 Step 0 判完类后的"查表确认"，**不是独立判类**——若与 Step 0 矛盾，回到 Step 0 重判，不在 Step 4 自行改变主估值。

**SOTP 分部来源契约**：如果主估值或辅助方法使用 SOTP（如弱周期成长股 / 主业占比 < 70%），**分部列表必须从 Step 2B.1 业务结构地图取**——不允许 Step 4 自行枚举分部，避免遗漏独立融资子公司 / 战略持股 / 不产生营收的期权资产（地平线 v1 SOTP 漏地瓜机器人就是此约束未建立时的反例）。同样，**同业可比 P/S 表必须包含 Step 2B.2 中"产品/技术层"和"方案/服务层"两维对手**——不允许只列同质对手。

**DCF 的正常化 FCF 来源契约**：若使用 DCF，其**当期 FCF 基数必须取自 Step 2D.2 的正常化 FCF**（剔一次性营运资本扰动 + 金融子公司现金流 + 区分维持性/扩张性 capex），不允许直接用未正常化的当年 OCF−capex（茅台 DCF 区间 1130-1340 过宽就是没正常化的反例）。**DCF 与 Step 4B 是平行的两个辅助模型**：4B 的远期利润不直接喂 DCF 的 FCF 基数（一个是现金口径、一个是利润口径），两者只在 Step 4B.6 的加权综合层面交叉验证，**不在 FCF 基数层互喂**，避免口径串味。**超额净现金不进 SOTP**——现金类资产走 Step 2D.5 折价处理（下行托底 + 趴账折价/催化），不作为 SOTP 分部，避免与净现金托底重复计价。

### Step 4B: 远期分析（1-2年前瞻估值，按需触发）

> 详细子流程见 [`references/step-4b-forward-analysis.md`](references/step-4b-forward-analysis.md)。

**何时执行**（任一）：
- 公司正在经历业务结构显著变化（新业务收入占比快速提升或下降）
- 存在已知的临时性费用/收入（闪购补贴、一次性减值、并购整合费用）
- 核心业务增速与新业务增速方向相反（如电商放缓但云加速）
- 当前 PE 因临时因素显著偏离合理 PE
- 弱周期成长型企业（汽车/家电/部分制造）—— 营收单边上行但利润率周期波动，远期分析重点是营收建模，配合 Step 4 P/S 主估值

**何时跳过**：
- 业务结构稳定、增速平稳的成熟企业（如茅台、长江电力），静态 PE 足够
- 真周期型企业（煤炭、钢铁、猪肉、大宗化工）—— 利润随行业周期大幅波动，1-2 年线性外推会严重失真。周期股用 PB 定价+周期位置判断即可

**为什么单独成 Step**：静态 PE 模型用的是 TTM/最近年报 EPS。对业务结构正在变化的公司（AI 转型、新业务放量、补贴退出），TTM EPS 不代表稳态盈利能力——本 Step 通过分业务建模估算 1-2 年后的利润水平和合理 PE，折现回当前与静态模型交叉验证。

**子步骤概要**（详见 references）：
- 4B.1 分业务营收建模（3-5 个板块，FY+1/FY+2 增速）
- 4B.2 利润率预测（按板块 OPM）
- 4B.3 远期 EPS 计算（含 SBC、回购）
- 4B.4 因子调整 SOTP PE（增速调整 + 因子吸收审查）
- 4B.5 远期目标价与隐含回报率（含息年化）
- 4B.6 与静态模型交叉验证（综合估值 = 静态 40% + FY+1 40% + FY+2 20%）
- 4B.7b 底部 P&L 重建交叉验证（前置条件：Step 1B 已执行）


### Step 4C: 格雷厄姆参考尺（可选）

纯参考，**不影响 Step 6/7/8 的任何结论**。详细公式、7 条清单、输出格式见 [`references/graham-filter.md`](references/graham-filter.md)。

触发：Step 4B 之后、Step 5 之前。跳过条件：亏损股 / BVPS 为负 / 金融股。

### Step 5: 预期差评估

市场下跌的核心驱动力不是"基本面差"，而是"基本面比预期差"。同样的6%增速，如果市场原本预期18%，PE会暴跌；如果市场原本就预期5%，PE反而可能稳住。安全边际的宽窄应该反映这种预期差风险。

#### 5.1 判断当前PE隐含的增长预期

将当前PE与不同增速假设下的"合理PE"对比，反推市场在定价什么水平的增长：

```
当前PE对应的隐含增速 ≈ 查看合理PE模型中，需要什么增速假设才能得到当前PE

示例（茅台）：
- 当前PE 20x，模型中增速18%时合理PE=29x，增速6%时合理PE=22x
- 当前20x < 22x → 市场甚至在定价比6%更差的预期
- 说明悲观预期已经充分Price in
```

#### 5.2 逐季度增速趋势分析

不只看最新一期增速，而是看趋势方向：

```python
# 提取逐季度累计增速，识别趋势
# 关键：拆出单季度增速（累计值相减），判断是加速、稳定还是减速

# 趋势判断标准：
# - 加速：最近2个单季度增速逐季上升
# - 稳定：最近3个单季度增速波动<3个百分点
# - 减速：最近2个单季度增速逐季下降
# - 失速：最新单季度增速<3%或转负
```

#### 5.3 预期差分类

综合当前PE位置和增速趋势，判断预期差状态：

| 状态 | 条件 | 含义 | 对安全边际的影响 |
|------|------|------|----------------|
| **预期过高** | 当前PE > 合理PE × 1.1，且增速在减速 | 市场还没反应过来，下行风险大 | 安全边际比例 **+10%**（更严格） |
| **预期合理** | 当前PE 在合理PE ±10%范围内 | 市场定价基本到位 | 安全边际比例 **不调整** |
| **预期偏低** | 当前PE < 合理PE × 0.9，且增速稳定或加速 | 市场过度悲观 | 安全边际比例 **-5%**（可适当放宽） |
| **预期已崩** | 当前PE < 合理PE × 0.8，增速减速但未失速 | 最坏预期已充分反映 | 安全边际比例 **-5%**，且标注"悲观预期已Price in，进一步大跌概率较低" |
| **基本面恶化** | 增速失速（单季<3%或负增长），且趋势未见拐点 | 不确定是否见底 | 安全边际比例 **+5%**，并标注"趋势未明，建议观望或小仓试探" |

#### 5.4 预期差调整示例

**茅台2024年初（回测）：**
- 当时PE约30x，合理PE 29x → 预期合理
- 但增速处于减速初期（尚未反映在PE中）
- 判定：**预期过高**（PE还在定价18%增速，实际已开始减速）
- 安全边际 +10% → 从20%变为30%

**茅台当前（2026年4月）：**
- 当前PE 20x，合理PE 22x → 当前PE < 合理PE × 0.9
- 增速减速中（25Q3单季仅0.3%），但属于"失速"级别
- 判定：**基本面恶化** vs **预期已崩** 的边界
- 如果认为0.3%是季节性/一次性 → 预期已崩，安全边际-5%
- 如果认为是趋势性恶化 → 基本面恶化，安全边际+5%
- **需要4月17日年报Q4数据来判断** → 当前暂按"预期偏低"处理，安全边际不调整，但标注不确定性

#### 5.5 市场定价校验

预期差评估关注的是"当前PE vs 合理PE"的瞬时偏差。但如果市场长期给出的PE中枢远低于模型合理PE，需要反思模型是否偏乐观。

**校验方法：用 baostock 日级 peTTM 直接算近半年中枢**

`fetch_data.py` 的 `calc_pe_band(df)` 在 df 含 `peTTM` 列时（baostock 数据），会自动输出：
- 全样本 PE 中位 / P25 / P75 / min / max
- 按年的 PE 中位与价格区间
- 近半年 PE 中枢（120 个交易日）
- 当前 PE
- 同步给出 PB 区间

无需手填 TTM EPS——baostock 已按日做完 TTM 计算。直接读 `recent_pe.median()` 即"近半年 PE 中枢"。

（港股/美股仍走旧逻辑：yfinance 取年高低价 + 手填 EPS 反推 PE。）

**校验流程：发现分歧 → 分析原因 → 判断谁对 → 决定修正**

**第一步：量化分歧程度**

| 市场PE中枢 vs 模型合理PE | 分歧程度 |
|-------------------------|---------|
| 偏差在 +/-15% 以内 | 无显著分歧，跳过后续分析 |
| 偏差 15-25% | 中度分歧，需分析原因 |
| 偏差 25% 以上 | 严重分歧，必须深入分析 |

**第二步：分析市场定价的原因（核心步骤）**

发现分歧后，不能机械修正，必须回答：**市场为什么给这个PE？市场看到了什么模型没捕捉到的？**

需要分析的维度：

1. **利润率改善空间分析**（针对利润改善型企业）
   - 毛利率提升空间：对标行业天花板（如啤酒行业重庆啤酒高端化成熟期毛利率~48%）
   - 费用率压缩空间：当前费用率是否已到合理下限
   - 净利率天花板：参照同行最优水平，估算还剩多少提升空间
   - 剪刀差趋势：营收增速 vs 净利增速的差值是否在收窄（收窄意味着利润率改善的加成效应在减弱）

2. **增长可持续性分析**
   - 营收增长是靠量还是价？量增逻辑是否见顶？
   - 提价空间还有多大？消费者对价格敏感度如何？
   - 行业总量是增长、平稳还是萎缩？

3. **可比公司定价参照**
   - 同类型（零增长+高分红）公司市场给多少PE？
   - 银行股（零增长+高分红）：5-7x
   - 公用事业（零增长+稳定分红）：10-12x
   - 消费品（低增长+品牌溢价）：15-20x
   - 消费品（稳定增长）：20-25x
   - 当前企业更像哪一类？

**第三步：判断谁对并决定修正**

| 分析结论 | 修正方式 | 示例 |
|----------|---------|------|
| **市场合理**：模型加分项过于乐观，或未充分反映增长放缓/天花板 | 合理PE直接采用市场中枢PE（±1x微调） | 青啤：利润率改善接近天花板，营收零增长，市场18-19x定价合理 → 合理PE采用19x |
| **市场略悲观**：基本面没那么差，但市场担忧有一定道理 | 合理PE = (模型PE + 市场PE) / 2 | 某公司短期利空但长期逻辑未破 |
| **市场显著悲观**：市场因短期恐慌过度杀跌，基本面不支持这么低的PE | 合理PE保持模型值，不修正 | 2024年茅台PE杀到20x，但品牌和盈利能力未受损 |
| **市场偏贵**：市场PE高于模型 | 合理PE保持模型值（本模型偏保守，不上修） | 牛市中消费股PE普遍偏高 |

**关键原则：修正必须附理由。不允许无分析的机械修正。**

**第四步：修正联动**

修正合理PE后，以下全部重新计算：
- 合理价值
- 安全边际买入价（锚点A和锚点B上限）
- 减仓价和清仓价

**示例（青岛啤酒）：**
- 模型合理PE: 24x，市场近半年PE中枢: 18.5x，偏差-23% → 中度分歧
- 原因分析：
  - 净利率从8%→14%，但对标重庆啤酒天花板约18%，剩余空间仅3-4个百分点
  - 费用率已从22%压至17%，继续压缩空间有限
  - 剪刀差从+35%收窄至+4%，利润率改善加成效应接近耗尽
  - 营收零增长，一旦净利率见顶，利润增速≈营收增速≈0%
  - 定价参照：零增长消费品公司通常15-20x
- 结论：**市场合理**，18-19x充分反映了"增长故事接近尾声"的现实
- 修正：合理PE从24x修正为 **19x**（采用市场中枢，品牌溢价给+0.5x取整）

预期差评估的输出格式见末尾"## 输出格式"统一模板。

### Step 6: 安全边际计算

**重要说明**：如果执行了远期分析（Step 4B），则 Step 6、Step 7、Step 8 中所有提到的"综合合理价值"统一替换为 Step 4B.6 的综合估值结果（即含远期分析的加权综合估值），而非 Step 4 的纯静态估值。

安全边际不能只用合理价值打固定折扣，必须结合历史估值区间做现实性校验。一个永远到不了的买入价没有实操意义。

#### 6.1 获取历史估值区间

A 股直接读 baostock 日级 peTTM/pbMRQ。直接跑脚本即可一次性看到全部 PE/PB 区间（`fetch_data.py` 主流程内已调用 `fetch_history_with_pe` + `calc_pe_band`）：

```bash
python3 skills/value-invest/scripts/fetch_data.py 600600
```

输出含：全样本 / 按年的 PE 中位 / 区间，近半年 PE 中枢，当前 PE，PB 同步输出。

港股/美股 yfinance 不带 PE 时序，需手填 EPS 后用 `calc_pe_band(df, eps_data={...})` 退化路径反推（在 Python REPL 中调用，从 `skills/value-invest/scripts/` 目录起 import）。

然后用当年EPS计算各年低点PE和高点PE，得出：
- **历史低点PE区间**：取近5年低点PE的中位数
- **历史高点PE区间**：取近5年高点PE的中位数

#### 6.2 三锚定价法

安全边际买入价由三个锚点综合决定：

| 锚点 | 计算方式 | 含义 |
|------|---------|------|
| 锚点A：固定折扣法 | 综合合理价值 × (1 - 安全边际比例) | 基于内在价值的理论买入价 |
| 锚点B：历史低点PE法 | 历史低点PE中位数 × 当前TTM EPS | 市场实际给过的低估值 |
| 锚点C：悲观情景法 | 综合合理价值 × 0.7 | 考虑极端下行情况 |

**定价规则：**

```
# 锚点B受最低折扣约束，防止安全边际形同虚设
锚点B上限 = 综合合理价值 × (1 - 最低折扣)
有效锚点B = min(锚点B原始值, 锚点B上限)

安全边际买入价 = max(锚点A, 有效锚点B)
```

**最低折扣**（锚点B的硬约束）：

| 确定性等级 | 最低折扣 | 含义 |
|-----------|---------|------|
| 高确定性 | 10% + 预期差调整 | 预期过高时+10%，预期偏低时-5% |
| 中确定性 | 15% + 预期差调整 | 同上 |
| 低确定性 | 20% + 预期差调整 | 同上 |

预期差调整量来自 Step 5 的预期差评估结果。最低折扣下限为5%（即使预期已崩也保留最少5%折扣）。

**取值逻辑：**
- 锚点A是理论最优买入价，基于固定折扣
- 有效锚点B用历史数据做现实性校验，但不允许突破最低折扣门槛
- 取两者较高者，兼顾安全边际充足性和价格可达性
- 锚点C仅作参考展示，不参与定价

**示例（青岛啤酒，中确定性）：**
- 合理价值 74元，锚点B原始值 = 20.8x × 3.36 = 70元
- 锚点B上限 = 74 × 0.85 = 63元（最低折扣15%）
- 有效锚点B = min(70, 63) = 63元
- 锚点A = 74 × 0.75 = 55元
- 安全边际买入价 = max(55, 63) = **63元**（而非之前的70元）

#### 6.3 安全边际比例（用于锚点A）

根据企业确定性浮动：

| 确定性等级 | 安全边际 | 适用条件 |
|-----------|---------|---------|
| 高确定性 | 20% | 合理PE加分项>=10x，且无-3x的单项减分 |
| 中确定性 | 25% | 默认级别 |
| 低确定性 | 35% | 减分合计绝对值>加分合计，或有多个-3x减分 |

**Step 2C red flag 联动（强约束）**：

如果 Step 2C 质化深度评估发现以下 red flag，**安全边际比例 +5-10pct**（在上表基础上加紧）：

| Red flag 信号 | 安全边际调整 | 适用类型 |
|---|---|---|
| 创始人 / 核心高管离任 / 重大组织变动 | **+5pct** | 强质化 / 中质化 |
| 二代接班失败 / 接班人争议 | **+10pct** | 中质化（民营成长股）|
| 近 3 年重大合规处罚 / 内控事件 | **+5-10pct** | 金融质化 |
| 央企高管 1-2 年内频繁更替（< 2 年任期）| **+5pct** | 央国企质化 |
| 上一轮周期低谷管理层应对失误 | **+5pct** | 真周期质化 |

调整后安全边际下限 5%、上限 40%（避免过度调整）。多个 red flag 同时触发时，**取最高单项调整 + 累加上限 10pct**，不简单叠加。

**Step 2C 加分项不调整安全边际**（仅 red flag 才调整）——质化深度优质（如百度 IDL 系强血统）已通过护城河评级体现，不重复加分。

#### 6.4 盈利趋势修正

对于盈利能力处于明确改善趋势的公司（净利率或ROE连续3年提升），合理PE额外+2x。这反映了当前EPS可能低估了未来的盈利中枢。

#### 6.5 价格计算

```
综合合理价值 = 由 Step 4 多模型交叉验证得出

锚点A = 综合合理价值 × (1 - 安全边际比例)
锚点B = 历史低点PE中位数(近5年) × TTM EPS  （周期型用历史低点PB × 每股净资产）
锚点C = 综合合理价值 × 0.7  # 悲观情景，仅展示不参与定价

安全边际买入价 = max(锚点A, 锚点B)
```

如果有最新季度数据，用年化EPS计算更贴近实际：
- 前三季度数据：年化EPS = 前三季度EPS / (近3年前三季度占全年EPS比例均值)
  示例：白酒Q4占比约30%，则前三季度占比70%，年化EPS = 前三季EPS / 0.70
- 半年报数据：年化EPS = 半年报EPS / (近3年上半年占全年EPS比例均值)

#### 6.6 净现金下行托底校验（仅 Step 2D 触发的现金大户）

若跑了 Step 2D，用其净现金做**下行托底的事后校验**（不参与定锚）：

- **资产安全垫** = 可支配净现金/股 ÷ 当前股价（剔除受限/质押资金 + 少数股东归属后的口径，取自 Step 2D.3）。占比越高，深跌时资产托底越厚。
- **悲观价 EV 校验** = (悲观价 × 总股本 − 净现金) ÷ (净利 − 现金税后收益) = 悲观情景下经营主业的扣现金 EV 倍数。若该倍数已显著低于主业合理水平，说明悲观价对主业的隐含定价很便宜，悲观价成色足。

> **硬规则（防双重计算）**：本节净现金/扣现金 EV **只做事后背书**，**严禁反向上调锚点 A/B/C、减仓/清仓价或安全边际比例**——四档锚点的口径是含现金 PE（与历史 PE 同口径），净现金价值已隐含其中，再加一次就是重复计价。净现金的"解锁价值"仅在公司明确启动大额资本返还时，于远期/催化章节单列（打 3-5 折），不并入四档。

### Step 7: 高估卖出价计算

市场有时会非理性定价（如2021年茅台PE 70x），需要有纪律性地卖出。

#### 7.1 卖出价格计算（双锚校验）

与买入价类似，卖出价也用双锚定价：

| 锚点 | 计算方式 | 含义 |
|------|---------|------|
| 锚点D：溢价倍数法 | 合理价值 × 减仓/清仓倍数 | 基于内在价值的理论卖出价 |
| 锚点E：历史高点PE法 | 历史高点PE中位数(近5年) × TTM EPS | 市场实际给过的高估值 |

**减仓价 = min(锚点D减仓, 锚点E) 附近取值**（取较低者，偏保守）
**清仓价 = 锚点D清仓**（超过合理价值的大幅溢价，纪律性卖出）

#### 7.2 溢价系数

根据企业确定性浮动，高确定性企业可以多给一些溢价空间：

| 确定性等级 | 减仓倍数 | 清仓倍数 | 理由 |
|-----------|---------|---------|------|
| 高确定性 | ×1.3 | ×1.5 | 优质企业可适当容忍溢价，但不追高 |
| 中确定性 | ×1.25 | ×1.4 | 确定性一般，溢价空间更窄 |
| 低确定性 | ×1.2 | ×1.3 | 不确定性大，稍有高估就应离场 |

### Step 8: 投资价值判断

根据当前价格与计算结果的关系，给出明确结论：

| 当前价位 | 结论 | 标签 |
|----------|------|------|
| 当前价 ≤ 安全边际买入价 | 显著低估，安全边际充足 | **买入区间** |
| 安全边际买入价 < 当前价 ≤ 合理价值×0.9 | 低估，但安全边际不足 | **关注区间** |
| 合理价值×0.9 < 当前价 ≤ 合理价值×1.1 | 合理定价 | **持有区间** |
| 合理价值×1.1 < 当前价 ≤ 减仓价 | 偏贵 | **谨慎区间** |
| 减仓价 < 当前价 ≤ 清仓价 | 高估，分批减仓 | **减仓区间** |
| 当前价 > 清仓价 | 显著高估，考虑清仓 | **清仓区间** |

### Step 9: 独立校验（subagent，按需触发）

**为什么是独立校验**：主 LLM 是"数据采集 + 建模 + 写作"角色，对自己产出的数字看不到盲点（确认偏差）。CLAUDE.md 五项 sanity check 是纪律存在但执行靠自觉。独立 subagent 提供"另一双不带上下文的眼睛"，是结构性的解决方案。过去案例：中国建筑 v1（PE 反推错 16% 高估）/ 平安银行 5/9（PB 漏扫）/ 招行 v1.0（-3bp 接受、0.85 PB 心算）/ 焦点科技 v1（Q1 -12% 没追一阶原因）。

**触发与跳过条件** —— **single source 见** [`skills/value-invest-verify/SKILL.md` 的 "何时触发" 章节](../value-invest-verify/SKILL.md#何时触发)。本节不重复列出，避免两份文档失同步。简言之：首次建档 / 锚点修订 > 10% / 多模型差距 > 30% 触发；轻量更新或 < 30 天内已校验则跳过。

**实施方式**：调用独立 sub-skill **`value-invest-verify`**，它会用 `Agent` 工具调起 `general-purpose` subagent 执行**零上下文**校验（subagent 不读主对话历史，只读最终 wiki 文件、独立跑脚本、独立 WebSearch）。

详细规范见 [`skills/value-invest-verify/SKILL.md`](../value-invest-verify/SKILL.md) + [`skills/value-invest-verify/prompt-template.md`](../value-invest-verify/prompt-template.md)。

**Step 9 在主流程中的执行顺序**：

```
Step 1-8 完成 → 写 wiki/raw articles → [Step 9 校验] → 根据校验报告决定是否修订 → 提交
                                          ↑
                                这里调起独立 subagent
```

**重要**：Step 9 是在 wiki 已写好之后执行——校验员核对**已写定的最终版本**，而不是分析过程。这保证了"独立性"（subagent 不被主作者的思路引导）。

**禁止行为**：

- ❌ 跳过 Step 9 仅因为"我自己核对过了"——这违背独立校验的本意
- ❌ 在 subagent prompt 里塞主分析的结论（"市场过度悲观"、"NIM -5bp"、"合理价 46 元"）——破坏零上下文
- ❌ **未经层次 1 独立 fetch 核对就直接信任 subagent 报告**——这是"用一个偏差替换另一个偏差"。subagent 报告**不是终态**，必须走 Step 3.5 层次 1 仲裁后才能定终态（详见 [`value-invest-verify/SKILL.md`](../value-invest-verify/SKILL.md) Step 3.5）
- ❌ **未经层次 1 独立 fetch 核对就直接驳回 subagent 报告**——主 agent 不能凭"我觉得 sub 错了"修改结论；必须独立 fetch 后给出仲裁结论

**校验报告处理**：

| 校验结果 | 主 agent 行动 |
|---|---|
| ✅ Pass 全部 | 直接提交，校验报告归档至 `raw/articles/stocks/<name>/<date>_verify_report.md`（verified: true）|
| ⚠️ Warning 项 | 标注但不强制修订，问用户是否修订 |
| ❌ Fail 项 | **必须修订** wiki 对应章节，frontmatter 加 `v1.x 校验修订`，log.md 加 LINT 条目 |

## 输出格式

按 `templates/stock-analysis.md` 模板输出。模板包含：投资结论价格表、合理PE推导表、多模型估值、远期分析（如适用）、利润分解与交叉验证（如已执行Step 1B）、安全边际与买卖价锚点、核心财务数据、同行对比、风险提示、关键关注点。

## 与 Wiki 联动

分析完成后询问用户是否更新 wiki：
- 如果 `wiki/stocks/{股票名}.md` 已存在 → 更新估值章节
- 如果不存在 → 按 CLAUDE.md 中的个股模板创建新页面
- 更新 `wiki/index.md` 和 `wiki/log.md`

## 区间术语规范（自检）

**为什么需要严格白名单**：区间判定术语会被下游 skill（periodic-review、portfolio-review 等）和 wiki 索引消费——同一只股票今天写"买入区间"、下周写"加仓区间"、月末写"低估区间"，会让下游 grep 不到一致信号、误判持仓位置。所以这里做契约化约束：写 wiki 时从下方白名单选词，下游就能稳定 parse。遵循 `wiki/strategies/价值投资区间判定框架.md`，写 wiki 前对照下列清单自检：

### 标准术语白名单

**个股 6 档**（`wiki/stocks/*.md` 中区间判定的白名单）：
- `买入区间`、`关注区间`、`持有区间`、`谨慎区间`、`减仓区间`、`清仓区间`
- 位置修饰允许：`XX 区间下沿/上沿/中段/中位`

**分散 ETF / 指数 5 档**（`wiki/funds/*.md` 中指数型 ETF 适用）：
- `深度买入`、`加仓区间`、`持有区间`、`减仓区间`、`卖出区间`

**特殊档位**（在该 wiki 明确定义触发条件后才可使用）：
- `悲观价`、`极端买入` — 仅针对个别标的（如茅台悲观价 985、中信极端买入 19）

### 禁用词（违规术语）

| 违规术语 | 正确替换 |
|---|---|
| `深度买入`（在个股 wiki 中）| 跌破买入价 × 0.85 触发重做估值的逻辑，不机械加仓 |
| `加仓区间`（在个股 wiki 中）| `买入区间` |
| `高估区间`、`低估区间` | 从 6 档中选对应项（如 `清仓区间` / `关注区间`）|
| `合理PE区间`（表示价格档位时）| 从 6 档中选对应项；若表示"PE 取值范围"则改写为"**合理 PE 范围**"避免歧义 |
| 无锚点的模糊说法（"有点贵"、"偏低"）| 映射到 6 档之一 |

### 写入 wiki 前的自检步骤

1. **确认档位**：当前价是否落在锚点 {买入价/合理价×0.9/合理价×1.1/减仓价/清仓价} 切分的哪一段？
2. **查白名单**：该档位在个股/ETF 的对应术语是否在上表白名单？
3. **grep 违规词**：写入前对该 wiki 文件 grep 禁用词，有则重写
4. **跌破 B×0.85 特殊处理**：当前价 < 买入价 × 0.85 时，**不要**写"深度买入"或自动加仓——这种深度下跌往往意味着基本面有问题，应改为"已跌破买入价 ×0.85，需重做估值（可能是基本面问题）"

### Step 8 区间判定的术语输出

Step 8 的区间标签从 6 档白名单中取（这是契约化约束的核心，下游 skill 依赖此一致性）。典型场景示例：

- 当前价 ≤ 买入价 → `买入区间`
- 当前价 ≤ 买入价 × 0.85 → `买入区间（已跌破 B×0.85，建议重做估值）`（而非"深度买入"）
- 当前价 > 清仓价 → `清仓区间`（而非"高估区间"）
- 合理价附近 ±10% → `持有区间`（可加"下沿/上沿"修饰位置）

