stock-valuation
Pass内生增长分红估值模型(V1.0)—— 通过 ROE、分红率、EPS 计算股票安全买入价。 当用户说以下内容时触发: - 帮我估值、计算股票估值、安全买入价 - 这只股票值多少钱、合理价格是多少 - 用分红模型算一下、内生增长估值 - Yield on Cost、YoC 估值 - 分红折现、DDM 估值 - 该股票现在贵不贵、能不能买
(0)
0
2
5
Install Skill
Skills are third-party code from public GitHub repositories. SkillHub scans for known malicious patterns but cannot guarantee safety. Review the source code before installing.
Install globally (user-level):
npx skillhub install linuxyan/skills/stock-valuationInstall in current project:
npx skillhub install linuxyan/skills/stock-valuation --projectSuggested path: ~/.claude/skills/stock-valuation/
SKILL.md Content
---
name: stock-valuation
description: |
内生增长分红估值模型(V1.0)—— 通过 ROE、分红率、EPS 计算股票安全买入价。
当用户说以下内容时触发:
- 帮我估值、计算股票估值、安全买入价
- 这只股票值多少钱、合理价格是多少
- 用分红模型算一下、内生增长估值
- Yield on Cost、YoC 估值
- 分红折现、DDM 估值
- 该股票现在贵不贵、能不能买
---
# 内生增长分红估值模型(V1.0)
## 模型简介
本 skill 实现"内生增长分红估值模型",核心逻辑:
- 以公司的 **ROE**(盈利效率)与 **分红率(Payout)** 推导内生增长率
- 以"十年后分红收益率(Yield on Cost)达到 **8%**"为目标
- 反推**当前安全买入价**
> 参考文档:`references/model_spec.md`
---
## 工作流程
### Phase 1:获取财务数据
#### ⚠ 前置检查:确认依赖已安装(必须首先执行)
估值流程依赖两个组件,开始查询数据前**必须先检查它们是否存在**:
**检查 1:金融数据查询脚本**
```bash
QUERY_SCRIPT="$HOME/.workbuddy/plugins/marketplaces/cb_teams_marketplace/plugins/finance-data/skills/neodata-financial-search/scripts/query.py"
if [ ! -f "$QUERY_SCRIPT" ]; then
echo "❌ 金融数据查询插件未安装"
echo "请先在 WorkBuddy 客户端中安装以下插件:"
echo " 插件名: cb_teams_marketplace > finance-data > neodata-financial-search"
echo " 安装路径: $QUERY_SCRIPT"
exit 1
fi
echo "✅ 金融数据查询插件已就绪"
```
**检查 2:估值计算脚本**
```bash
VALUATION_SCRIPT="$HOME/.workbuddy/skills/stock-valuation/scripts/valuation.py"
if [ ! -f "$VALUATION_SCRIPT" ]; then
echo "❌ 估值脚本不存在"
echo "请确认 stock-valuation skill 已正确安装"
echo " 期望路径: $VALUATION_SCRIPT"
exit 1
fi
echo "✅ 估值脚本已就绪"
```
> **如果检查失败**:告知用户需要在 WorkBuddy 客户端中安装对应插件,**不要尝试绕过或手动下载**。安装完成后重新执行检查即可。
#### 1.1 完整数据清单
使用 NeoData 金融数据搜索 API 获取以下 **11 项数据**(可并行查询):
| # | 数据项 | 用途 | 查询关键词示例(替换 `{公司名}` 和 `{代码}`) |
|---|--------|------|------------------------------------------|
| **①** | **最新年报 EPS** | 估值核心输入 | `"{公司名}{代码} {年份}年年报每股收益EPS归母净利润"` |
| **②** | **最新股价 + 行情指标** | 与安全价对比 | `"{公司名}{代码} 最新股价收盘价{日期} PE PB 股息率"` |
| **③** | **近 5 年加权 ROE** | 计算模型输入 | `"{公司名}{代码} 2020-2025加权ROE净资产收益率历年"` |
| **④** | **近 5 年分红数据** | 确定分红率 + 筛选检验 | `"{公司名}{代码} 2020-2025历年分红送配每股派息分红率年度分红中期分红"` |
| **⑤** | **分红政策/承诺/规划** | 确定分红率 | `"{公司名}{代码} 分红政策规划承诺变更修订回报规划"` |
| **⑥** | **近 5 年经营现金流净额** | 筛选条件检验 | `"{公司名}{代码} 2020-2025经营现金流净额经营活动现金流量"` |
| **⑦** | **资产负债率 + 有息负债率** | 筛选条件检验 | `"{公司名}{代码} 2020-2025资产负债率有息负债率财务费用"` |
| **⑧** | **近 5 年每年 EPS** | g_final 可信度评估(历史增速) | `"{公司名}{代码} 2020-2025每年每股收益EPS历年数据"` |
| **⑨** | **行业趋势信息** | g_final 可信度评估(行业空间) | `"{行业名} 2025年2026年行业趋势调整产量增速市场规模消费"` |
| **⑩** | **最新季度业绩**(年报已发布时跳过) | 业绩说明章节 | `"{公司名}{代码} 2026年一季报营收净利润"` |
| **⑪** | **年度分红方案**(年报刚发布时可能查不到) | 确认全年分红率 | `"{公司名}{代码} {年份}年报分红方案每股股利派息"` |
> **调用方式**:所有查询使用相同的 API 脚本:
> ```bash
> python3 $HOME/.workbuddy/plugins/marketplaces/cb_teams_marketplace/plugins/finance-data/skills/neodata-financial-search/scripts/query.py \
> --query "查询关键词" --data-type api 2>/dev/null
> ```
#### 1.2 通用规则(⚠ 关键,严格执行)
**A. 年报时效判断**
- A 股年报截止 **4/30**,查询前先确认当前日期
- 如果当年年报已发布(API 返回截至该年度 12/31 的年报数据),**必须使用最新年报数据**,不要使用 TTM 或旧年报
- 如果年报尚未发布:用最新可用年报数据估值,同时查询最新季度数据写入"业绩说明"章节
**B. 股票代码格式**
- `ts_code` **必须带交易所后缀**:上交所 `.SH`(如 `600519.SH`)、深交所 `.SZ`(如 `000651.SZ`、`002304.SZ`)
**C. 数据年份识别**
- API 返回的多期数据可能混合不同年度,**务必检查每条记录的年份标注**,提取对应年度的数据
- 常见年份字段名:`end_date`、`m_anntime`、报告期
**D. 数据解读防错**
- **"预告" ≠ "实际"**:业绩预告区间 ≠ 年报终值,不能直接用于估值计算
- **避免过度推断**:拿到原始数据后先理解上下文和字段含义,再得出结论
- **数据不完整时降级处理**:如 5 年数据不全可用近 3 年替代,但需在报告中注明
#### 1.3 各数据项详细说明
##### ① 最新年报 EPS
- **取值规则**:必须使用最新年报的**基本每股收益**(非稀释每股收益)
- **优先级**:年报 EPS > 业绩预告 EPS > TTM EPS(降级使用需注明)
- **解读要点**:注意确认 EPS 对应的年度(年报 EPS 对应的是上一会计年度的利润)
- **验证方式**:可交叉验证 `归母净利润 ÷ 总股本 ≈ EPS`
##### ② 最新股价 + 行情指标
- **取值**:最新交易日的收盘价
- **配套查询**:同时获取 PE(TTM)、PB、股息率、年初至今涨跌幅等,写入报告参数表
- **用途**:与安全买入价对比计算安全边际
- **注意**:如果估值时为非交易时段(周末/节假日),使用最近一个交易日的收盘价
##### ③ 近 5 年加权 ROE
- **取值**:**加权平均净资产收益率**(非全面摊薄 ROE)
- **计算方式**:取近 5 个年度的加权 ROE,计算算术平均值
- **注意**:如果最新年报 ROE 异常低(如因一次性亏损),可考虑是否排除,但必须在报告中说明理由
- **API 字段**:`fina_indicator` 中的 `roe` 字段
##### ④ 近 5 年分红数据
- **必须获取的信息**:每年全年每股股利(元)、是否含中期分红、全年分红率
- **计算全年分红率**:`全年每股股利 ÷ 当年 EPS × 100%`
- **⚠ 必须区分"中期"与"年度"**(常见错误):
- A 股分红分为**中期分红**(H1,约 8-9 月公告)和**年度分红**(次年 4-6 月公告),两者独立
- API 返回的"分红送配方案"如果是 8 月份公告的,大概率是**中期分红**,而非全年
- **"中期不分红" ≠ "全年不分红"**——年度分红方案需待年报发布后确认
- 看到"不分配不转增"时,先确认是哪个期间(中期/年度)
- **错误案例**:洋河 2025-08-19 公告"2025年不分配不转增"实为中期方案,被误读为全年不分红
- **分红率 > 100% 的处理**:说明公司动用了留存利润分红,需在报告中注明原因(如兑现承诺)
##### ⑤ 分红政策/承诺/规划
- **查询要点**:同时搜索**当前有效规划**和**历史规划变更记录**
- **确定优先级(从高到低)**:
1. **公司最新分红规划**(如"2024-2026年分红率不低于75%"):优先采用,反映管理层未来意图
2. **⚠ 必须确认承诺是否仍然有效**:搜索"分红规划 变更/修订/取消/调整",确认是否有新规划替代旧规划
3. **绝对不能仅凭旧公告就采信**(如洋河 2026 年取消了"不低于70亿元"的硬承诺)
4. **近 3-5 年实际分红率均值**:在没有明确承诺时使用
5. **注意区分"年度分红"和"特别分红/中期分红"**:一年分两次的必须加总
- **报告中的标注**:
- 如有承诺:说明具体内容、承诺期限、是否已兑现
- 如承诺已变更:⚠ 标注变更时间和新旧差异(这是重大事项,需在报告头部注明)
- 如无承诺:说明情况,使用实际均值
##### ⑥ 近 5 年经营现金流净额
- **用途**:Phase 3 筛选条件"现金流健康"检验
- **检验标准**:近 3 年平均经营现金流 ≥ 净利润(比值 ≥ 100%)
- **解读要点**:
- 单年低于 100% 不一定有问题,但**连续多年低于 100% 是警告信号**
- **经营现金流为负是重大风险**(如洋河 2025 年 -7.63 亿),说明分红可能面临执行困难
- 计算"净利润现金含量"= `经营现金流净额 ÷ 归母净利润 × 100%`
##### ⑦ 资产负债率 + 有息负债率
- **用途**:Phase 3 筛选条件"负债率可控"检验
- **必须同时查询两个指标**:
- **资产负债率** = 总负债 ÷ 总资产(一般标准:< 70%)
- **有息负债率** = (短期借款 + 一年内到期的非流动负债 + 长期借款 + 应付债券) ÷ 总资产
- **判断"借钱分红"嫌疑**:如果资产负债率高 + 有息负债率高 + 分红率高 → ⚠️
- **辅助判断**:财务费用为负(利息收入 > 支出)说明公司资金充裕,不存在借钱分红
##### ⑧ 近 5 年每年 EPS(用于 g_final 可信度评估)
- **用途**:计算 EPS 复合增速 CAGR,与 g_final 对比
- **计算公式**:`CAGR = (EPS_最新年 / EPS_最早年)^(1/年数) - 1`
- **解读**:
- CAGR ≥ g_final → 历史增速支撑模型假设(高分)
- CAGR < g_final 的 50% 或持续下滑 → 增速假设不可靠(低分)
- **注意**:此数据可与 ① 合并查询(同一 API 返回多年 EPS)
##### ⑨ 行业趋势信息(用于 g_final 可信度评估)
- **查询方式**:搜索该行业的最新趋势分析,而非特定公司的数据
- **关键词示例**:`"白酒行业 2025 2026 趋势 产量 增速 消费"`、`"空调行业 存量 竞争 格局"`
- **需了解的信息**:
- 行业处于增长期 / 存量期 / 衰退期
- 行业产量/规模的近年增速趋势
- 是否有重大政策变化影响行业(如禁酒令、能效标准等)
- 主要竞争对手的动态
- **评分参考**:
- 行业仍有增长空间 → 高分
- 行业接近饱和但需求稳定 → 中分
- 行业衰退或深度调整 → 低分
##### ⑩ 最新季度业绩(年报已发布时跳过)
- **用途**:年报尚未发布时,在"业绩说明"章节展示最新季度/前三季/预告数据
- **获取**:最新一季度的营收、归母净利及同比变化
- **注意**:如果已有最新年报数据,此项不需要查询
##### ⑪ 年度分红方案(年报刚发布时补充查询)
- **场景**:年报刚发布(如 4 月底),分红方案可能尚未公告或尚未入库
- **查询**:`"{公司名}{代码} {年份}年报分红方案每股股利派息"`
- **处理**:如果查不到年度分红方案,在报告中注明"年度分红方案待股东大会确认",用承诺值或历史均值估算
#### 1.4 查询执行建议
- **可并行查询**:上述 11 项数据之间无依赖关系,应尽量并行发起查询以提高效率
- **关键词灵活调整**:如果第一次查询结果不理想,换关键词重试(如换"每股收益"为"EPS"、换"经营现金流"为"现金流量"等)
- **数据提取技巧**:API 返回 JSON 格式,可用 `python3 -c` 命令做初步过滤提取,只保留含关键字的行
- **交叉验证**:同一数据项(如 EPS)可通过不同查询关键词验证一致性
### Phase 2:执行估值计算
运行估值脚本:
```bash
python3 $HOME/.workbuddy/skills/stock-valuation/scripts/valuation.py \
--eps <EPS_curr> \
--roe <ROE_5y_avg> \
--payout <Payout_5y_avg> \
[--target-yield 0.08] \
[--years 10] \
[--stock-name "股票名称"] \
[--current-price <最新股价>]
```
#### Phase 2.5:g_final 增速可信度评估(⚠ 必须执行)
算出 g_final 后,**必须立即评估该增速在未来 10 年的实现概率**。g_final 是模型的核心假设——如果这个增速根本无法实现,安全买入价就是空中楼阁。
**评估维度(5 项,每项 1-3 分):**
| 维度 | 评估内容 | 3 分(高可信) | 2 分(中可信) | 1 分(低可信) |
|------|---------|--------------|--------------|--------------|
| **① 历史增速** | 近 5 年 EPS 复合增速 vs g_final | 历史 CAGR ≥ g_final | 历史 CAGR 在 g_final 的 50%-100% | 历史 CAGR < g_final 的 50% 或 EPS 持续下滑 |
| **② 再投资效率** | 留存利润再投资是否真的能创造价值 | 高分红率(≥70%):不依赖再投资,g_final 天然容易实现 | 中分红率(40%-70%):适度依赖再投资 | 低分红率(<40%):高度依赖再投资,需优质投资机会 |
| **③ 行业空间** | 行业渗透率、增速趋势、天花板 | 行业仍有增长空间或稳健需求 | 行业接近饱和但需求稳定 | 行业衰退或深度调整、需求萎缩 |
| **④ ROE 稳定性** | 近 5 年 ROE 波动幅度 | ROE 标准差 < 3个百分点 | ROE 标准差 3-6个百分点 | ROE 标准差 > 6个百分点或单年骤降 > 10个百分点 |
| **⑤ 模型适配性** | 股票特征与模型假设的匹配程度(见下方详细说明) | 适配:高分红+稳定/低增长,模型核心逻辑完全适用 | 部分适配:需要调整输入或解释口径(如含回购的综合分红率、跨币种折算) | 不适配:模型安全价仅作参考下限,不能作为决策依据 |
**总分与可信度等级:**
| 总分 | 等级 | 含义 | 报告标记 |
|------|------|------|---------|
| 12-15 | 🟢 **高可信** | g_final 实现概率大,模型结果可靠 | 🟢 高可信 |
| 8-11 | 🟡 **中可信** | g_final 有一定不确定性,需关注风险因素 | 🟡 中可信 |
| 5-7 | 🟠 **低可信** | g_final 实现困难,安全买入价可能偏高 | 🟠 低可信 |
**⑤ 模型适配性——详细评分指南:**
本模型以 **DPS(每股现金分红)** 为核心输入,推导逻辑为 `ROE × 留存率 → 内生增长 → DPS 增长 → 安全价`。因此模型天然适配**高分红、低增长、业务稳定的成熟价值股**。对于其他类型股票,需评估适配程度:
**股票类型与模型适配性:**
| 股票类型 | 典型特征 | 适配度 | 评分建议 | 处理方式 |
|----------|---------|--------|---------|---------|
| **高分红价值股** | 分红率 ≥50%,ROE 稳定,增长温和(如格力、分众、高速公路) | ★★★ 完美适配 | 3 分 | 直接使用模型结果 |
| **稳定白马股** | 分红率 30-50%,ROE 中高,增长中等(如茅台、部分银行) | ★★★ 基本适配 | 2-3 分 | 正常使用,注意增长假设 |
| **高回购低分红股** | 现金分红率低,但大量回购注销(如腾讯) | ★★ 部分适配 | 2 分 | 将回购折算为"综合分红率",注明折算方法 |
| **成长股** | 分红率 <20%,利润高增长(如科技、医药) | ★ 不适配 | 1 分 | 模型安全价仅作参考下限,g_final 严重低估实际潜力 |
| **周期股** | 利润波动大,分红不稳定(如钢铁、煤炭) | ★ 不适配 | 1 分 | ROE/EPS 周期波动使模型失效,不建议使用 |
| **金融/银行股** | ROE 高但受监管约束,分红率稳定但增长空间受限 | ★★ 部分适配 | 2 分 | 可使用,注意监管资本充足率约束对增长的影响。⚠ **回测验证(招商银行 2023-11)**:安全买入价作为"价值锚"有效(低估判断正确,2.5 年涨幅 66%),但实际上涨驱动力是**估值修复(PB 修复)+ 高股息率**,而非 EPS 增长(近乎零增长)。模型会系统性低估银行股的投资回报。银行股适用补充视角:股息率安全垫 + PB 估值修复空间 |
**港股/跨币种特殊处理:**
- 如果 EPS(利润表)和分红/股价的计价币种不同(如腾讯:EPS 人民币,分红/股价港币),**必须统一币种后计算分红率**
- 使用最新汇率折算,并在报告中注明汇率和折算方式
- 币种差异增加一层不确定性,评分时从 3 分降为 2 分
**评分规则总结:**
- 分红方式为**纯现金**且高分红 → 3 分
- 分红方式含**回购**或需要**跨币种折算** → 2 分
- 模型核心假设与股票特征**根本不匹配**(成长股/周期股/低分红)→ 1 分
**执行要点:**
1. **数据来源**:在 Phase 1 获取数据时,需额外查询近 5 年 EPS 数据(用于计算 CAGR)和行业趋势信息
2. **评分依据**:评分必须基于已查询到的客观数据,每项评分需在报告中注明具体理由
3. **g_base vs g_final 的差异**:如果 g_final = g_base(未被截断),说明增速来自实际留存再投资能力,可信度天然更高;如果 g_final = Cap(被截断),说明理论增速高于上限,需要更谨慎地评估
4. **特别关注**:当 g_final 被截断时(即 g_base > Cap),需额外说明"g_base 为 X% 但被截断至 Y%,截断幅度越大,说明模型越保守,可信度加分"
### Phase 3:筛选条件检验(一票否决)
计算完毕后,根据已获取的数据逐项检验:
| 筛选条件 | 要求 | 结果 |
|----------|------|------|
| 历史分红稳定 | 近 5 年每年分红率均 > 30% | ✅ / ⚠️ / ❌ |
| 现金流健康 | 近 3 年平均经营现金流 ≥ 净利润 | ✅ / ⚠️ / ❌ |
| 负债率可控 | 资产负债率平稳或下降,无"借钱分红"嫌疑 | ✅ / ⚠️ / ❌ |
| 业务确定性 | 商业模式简单,10年后仍被需要(主观判断) | 供参考 |
### Phase 4:输出报告
输出 Markdown 报告文件(`{股票名称}_估值报告.md`),**严格遵循以下固定格式**(六个章节,不得增减大节,不得加入与其他股票的对比章节):
#### 报告结构(固定模板)
```
# {股票名称}({代码})内生增长分红估值报告
> 估值时间:YYYY-MM-DD | 数据来源:NeoData 金融数据搜索
> ⚠ 本报告仅供学习参考,不构成投资建议
> (如有重大事项如分红承诺变更/取消,在此加一行注明)
---
## 一、核心输入参数
| 参数 | 数值 | 来源/说明 |
|------|------|----------|
| 当前股价 | **¥XX.XX** | 日期、涨跌幅、PE/PB/股息率等关键行情指标 |
| EPS({年份}年报) | **¥XX.XX** | 年报说明 |
| 5年均 ROE | **XX.X%** | 说明取值年份 |
| 分红率 | **XX.X%** | 说明取值依据(承诺值/实际均值) |
### ROE 与分红年度明细
| 年度 | EPS(元) | 加权 ROE | 每股股利(元) | 全年分红率 | 说明 |
|------|----------|---------|--------------|----------|------|
| ... | ... | ... | ... | ... | ... |
> *注:(分红相关注释,如超100%原因、中期/年度区分等)*
>
> **分红承诺**:(如有承诺,说明具体内容和状态;如无承诺,说明情况)
### {年份} 年业绩说明(年报待发)
> 仅在年报未发布时添加此子节,用表格列出已知数据(前三季/预告/研报预测等)
---
## 二、估值计算过程
### Step 1:确定 ROE 和分红率
(文字说明取值过程)
### Step 2:计算理论增速
(代码块展示 g_base 计算公式和结果)
### Step 3:ROE 档位截断 → g_final
(表格展示档位、上限、g_final)
### Step 3.5:g_final 增速可信度评估
> 模型假设未来 10 年 EPS 以 **{g_final}%** 年复合增长。这个增速能否实现?
| 评估维度 | 评分 | 评估依据 |
|----------|------|---------|
| ① 历史增速(近5年EPS CAGR vs g_final) | X/3 | (具体数据说明) |
| ② 再投资效率(留存比例 × 再投资机会) | X/3 | (分红率高→不依赖再投资→容易实现,说明具体逻辑) |
| ③ 行业空间(渗透率/需求趋势/天花板) | X/3 | (行业情况说明) |
| ④ ROE 稳定性(近5年 ROE 波动) | X/3 | (标准差或波动情况说明) |
| ⑤ 模型适配性(股票特征与模型匹配度) | X/3 | (说明股票类型、是否含回购/跨币种、核心适配逻辑) |
**总分:X/15 → 🟢高可信 / 🟡中可信 / 🟠低可信**
> (一段话总结:g_final 实现概率的核心判断,重点关注哪项拉低了分数,模型适配性是否影响结论可靠性)
### Step 4:计算安全买入价
(代码块展示 EPS→DPS→安全价计算过程)
---
## 三、估值结论
| 指标 | 数值 |
|------|------|
| ★ **安全买入价** | **¥XX.XX** |
| 当前股价 | ¥XX.XX |
| 安全边际 | **+XX.X%** |
| **估值状态** | 🟢🟠🔴 **低估/略微高估/明显高估** |
| **g_final 可信度** | 🟢高可信 / 🟡中可信 / 🟠低可信 |
> ⚠ g_final 可信度说明:(一句话说明 g_final 实现概率的高低原因,包含模型适配性判断,如"g_final=5%,高分红率80%降低了再投资依赖,但行业已进入存量竞争。模型适配性良好——高分红价值股,核心逻辑完全适用")
### 敏感性分析
| 假设变化 | EPS | 分红率 | 安全买入价 | 当前股价对比 |
|----------|-----|--------|----------|------------|
| **基准**(...) | ... | ... | **¥XX.XX** | ... |
| 乐观/悲观场景 | ... | ... | ¥XX.XX | ... |
> 💡 **核心判断**:(一段话总结核心观点)
---
## 四、筛选条件检验(一票否决)
| 筛选条件 | 要求 | 结果 | 说明 |
|----------|------|------|------|
| 历史分红稳定 | ... | ✅/⚠️/❌ | ... |
| 现金流健康 | ... | ✅/⚠️/❌ | ... |
| 负债率可控 | ... | ✅/⚠️/❌ | ... |
| 业务确定性 | ... | ✅/⚠️/❌ | ... |
**结论:...**
---
## 五、补充分析
### 核心优势
(列表 3-5 点)
### 风险因素
(列表 3-6 点)
---
## 六、风险提示
⚠ **本模型结果仅供参考,不构成投资建议。**
- (列表 4-7 条具体风险)
```
#### 格式要求(⚠ 严格执行)
1. **六大章节固定**:一、核心输入参数 → 二、估值计算过程 → 三、估值结论 → 四、筛选条件检验 → 五、补充分析 → 六、风险提示。**不得增加或减少大节**
2. **不得包含与其他股票的对比章节**(如"与茅台/分众对比"等),每份报告只评估单只股票
3. **估值计算必须使用 Step 1-4 格式**,不要用参数表+场景表的简化格式
4. **三、估值结论中必须包含敏感性分析表**,列出基准、乐观、悲观场景
5. **五、补充分析分为"核心优势"和"风险因素"两个子节**
6. **六、风险提示以"⚠ 本模型结果仅供参考,不构成投资建议。"开头**,后接列表
---
## 核心公式速查
```
安全买入价 = [ EPS_curr × (1 + g_final)^10 × Payout ] / 8%
g_base = ROE_5y × (1 - Payout_5y)
g_final 根据 ROE 档位截断:
ROE > 25% → min(g_base, 8%)
15% ≤ ROE ≤ 25% → min(g_base, 5%)
ROE < 15% → min(g_base, 3%)
```
---
## 回测经验库(历史验证)
> 以下为已完成的历史回测案例,用于校验模型有效性和发现模型局限。
### 招商银行(600036.SH)— 回测时点 2023 年 11 月底
**回测背景**:2023 年 11 月底,招商银行股价 ¥23.81(PB ≈ 0.55 倍),市场情绪悲观(LPR 多次下调、经济复苏不及预期)。
| 项目 | 回测输入(2023-11 视角) | 实际结果(2026-04) |
|------|------------------------|-------------------|
| 安全买入价 | ¥36.31(EPS ¥5.26,ROE 16.1%,分红率 33.9%) | 股价 ¥39.60,涨幅 66.3% |
| 安全边际 | +52.5%,🟢 明显低估 | 低估判断正确 ✅ |
| EPS 预期 | 10 年后 EPS ¥8.57(假设 5% 年增长) | 2025 年 EPS ¥5.70,近乎零增长 ⚠️ |
| ROE 预期 | 5 年均 16.1%,但 2022 年已降至 14.49% | 2025 年 ROE 13.44%,持续下行 ⚠️ |
| 分红率 | 5 年均 33.9% | 2025 年升至 35.4% ✅ |
**核心教训(已融入模型指导规则):**
1. **安全买入价是有效的"价值锚"**:低估时买入的判断正确,即使增长假设不准确,安全边际仍提供了足够的保护
2. **模型对银行股的回报路径估计不完整**:实际上涨驱动力是**估值修复(PB 0.55→0.91)+ 高股息率(8.4%)**,而非 EPS 增长。内生增长模型假设 EPS 持续增长,但银行股可以通过**估值修复**和**股息收益**实现回报
3. **g_final 可信度风险会兑现**:回测时已标记 ROE 下行风险和净息差收窄,2025 年 ROE 降至 13.44% 确认进入 3% 档位。低可信度(🟡 中可信)的警告应引起足够重视
4. **银行股需补充分析维度**:除模型安全价外,应额外关注 **PB 估值位置**(是否处于历史极端低位)和 **股息率**(是否已接近或超过目标收益率),这两个维度对银行股同样重要
### 贵州茅台(600519.SH)— 回测时点 2020 年 11 月底
**回测背景**:2020 年 11 月底,贵州茅台股价 ¥1,499.70(PE ≈ 45.7 倍),处于历史极高估值水平,受益于疫情后流动性宽松和白酒需求恢复。
| 项目 | 回测输入(2020-11 视角) | 实际结果(2026-04) |
|------|------------------------|-------------------|
| 安全买入价 | ¥452.85(EPS ¥32.80,ROE 30.2%,分红率 51.2%) | 股价 ¥1,405.00,5.4 年略跌 6.3% |
| 安全边际 | -231.2%,🔴 明显高估 | 高估判断长期正确 ✅(5 年零收益) |
| EPS 预期 | 10 年后 EPS ¥70.81(假设 8% 年增长) | 2025 年 EPS ¥65.66,年化实际增速约 14.9% |
| ROE 预期 | 5 年均 30.2% | 2025 年 TTM ROE 30.53%,极为稳定 ✅ |
| 分红率 | 5 年均 51.2% | 2025 年升至 75%+(公司承诺 2024-2026 ≥75%)✅ |
**核心教训(已融入模型指导规则):**
1. **高估判断在长期得到验证**:¥1,499.70 买入后 5.4 年几乎零收益(-6.3%),高估确实损害了投资回报。EPS 从 ¥32.80 翻倍至 ¥65.66(+100%),但 PE 从 45.7 降至 21.3(-53%),估值消化完全抵消了业绩增长
2. **高估 ≠ 立即下跌**:茅台在 2020 年底至 2021 年 2 月继续上涨至 ¥2,100+,模型无法预测市场情绪的延续时间。但模型的价值在于**纪律性**——避免高估追涨
3. **品牌溢价突破模型框架**:茅台拥有"类货币"和"社交货币"属性,市场长期给予远超模型安全价的估值溢价。对于品牌护城河极深的优质公司,安全买入价更像**"价值底线"**而非**"合理价格"**
4. **分红率提升超预期**:茅台 2024-2026 年承诺分红率不低于 75%,远超历史均值 51%。分红提升部分对冲了估值下跌,但不足以在高估值下产生正回报
5. **极端高估案例的警示**:PE 45+ 倍的价格意味着即使 EPS 未来 10 年以 8% 增长、分红率维持 51%,也仅能实现约 8% 的目标收益率。一旦增速不及预期或估值收缩,回报将显著低于目标。这是模型对极端高估最有效的警示场景
### 贵州茅台(600519.SH)— 回测时点 2018 年 11 月 2 日 ⚠️ 模型误判
**回测背景**:2018 年 10 月 28 日三季报 Q3 净利润增速骤降至 2.71%,10 月 29 日一字跌停(¥549.09),10 月 30 日最低 ¥509.02,随后快速反弹。11 月 2 日收 ¥599.90(PE ≈ 28 倍),恰处于恐慌性反弹阶段。上证指数从年初 3,500+ 跌至 2,500 附近。
| 项目 | 回测输入(2018-11 视角) | 实际结果(2026-04) |
|------|------------------------|-------------------|
| 安全买入价 | ¥295.57(EPS ¥21.56,ROE 30.9%,分红率 51%) | 股价 ¥1,405.00,7.4 年涨幅 134.3% |
| 安全边际 | -103.0%,🔴 明显高估 | **模型误判** ❌,总回报 172.7%(含分红) |
| EPS 预期 | 10 年后 EPS ¥46.55(假设 8% 年增长) | 2025 年 EPS ¥65.66,年化实际增速 17.3% |
| ROE 预期 | 5 年均 30.9% | 2025 年 TTM ROE 30.53%,极为稳定 ✅ |
| 分红率 | 51% | 2025 年升至 75%+ ✅ |
**核心教训(已融入模型指导规则):**
1. **模型首次"高估误判"——高估程度不同结果截然不同**:安全边际 -103%(PE 28)与 -231%(PE 46)的含义完全不同。PE 28 对 ROE 30%+ 的顶级消费品牌并非极端高估,模型应区分"明显高估"与"合理偏高"
2. **熊市恐慌中的"高估"可能是黄金坑**:2018 年 11 月全市场处于极端恐慌状态(上证 -30%),茅台跌停后 PE 降至 28 倍历史中低位,实际上是极好的买入机会。模型缺乏对市场情绪周期的判断能力
3. **顶级公司的成长能力持续超预期**:茅台 EPS 年化增速 17.3%,远超模型 8% 假设。ROE 连续 8 年 >24% 的公司,增速上限 8% 可能过于保守
4. **需要引入 PE 分位数和 ROE-PE 匹配**:ROE 30% 的公司合理 PE 应高于 ROE 15% 的公司,不能简单地用同一套安全边际标准。建议配合 PE 历史分位数辅助判断
---
## 注意事项
- 目标收益率默认 8%,极其确定的资产(如长电)可调整为 6%-7%(调用脚本时传 `--target-yield 0.06`)
- 模型仅供参考,不构成投资建议
- 数据质量决定结果质量,分红数据缺失时需明确说明
- **银行股的回报来源具有多样性**:内生增长模型以 EPS 增长为核心假设,但银行股实际回报可能来自股息收益 + 估值修复(PB 修复),而非 EPS 增长。对银行股估值时,应同时分析 PB 历史位置和当前股息率,不可仅依赖安全买入价
- **安全边际的"负值"需要分级解读**:-100%(PE 约 28)与 -230%(PE 约 46)含义不同。负值幅度较小时(-50% 至 -100%),需配合 PE 历史分位数综合判断,避免在熊市恐慌中误判"高估"而错过机会
- **顶级消费品牌享有结构性估值溢价**:ROE 持续 >25%、品牌护城河极深、现金流优异的公司,市场长期给予 PE 25-35 倍的估值溢价是合理的,不应简单以模型安全价判断"高估"