equity-analysis · diff
git:20261030.66b59f9 to git:20261030.8a4ae0e
10 added, 1 removed. Audit A to A.
---
name: equity-analysis
description: >
MUST USE when 分析一只/一组股票的中长期投资价值,或回答“贵不贵 / 值不值得长期买 /
财务质量如何 / 怎么估值 / 定投还是分批”。触发词:分析股票/基本面/财报/估值/PE/PB/ROE/
护城河/现金流/长期投资/定投/分批;银行/保险/券商等金融股也走本技能(含金融附录)。
本技能给出**业界口径的通用股票分析 SOP**:数据前置、财务质量、红旗、估值、情景、
历史路径、风险、组合与执行。输出必须条件化,不构成买卖建议。
---
# 通用股票分析 SOP(本项目的“个股尺子”)
> 目标:把“这只股票能不能长期买”拆成**可复算的财务指标 + 可证伪的估值情景**。
> 一句话:**先看生意与财务质量,再看现金流,最后看估值给没给足补偿。**
## 何时用
- 单只/一组股票的中长期(3–10 年)投资分析;
- 回答“PE 15 贵吗 / ROE 18% 能持续吗 / 现金流真不真 / 定投还是分批”;
- 金融股(银行/保险/券商)走本技能,并加第 9 节附录。
不适用:短线/技术形态/事件驱动(走 `hypothesis-validation`);纯指数/资产配置(走组合层面)。
---
## 0. 数据前置(先声明缺口)
| 需要 | 位置 | 说明 |
|---|---|---|
| 三表(年度/中期) | `data/fund_cache/{code}_*.pkl` | akshare 港股财报;2002→ |
| 价格 | `data/hk_broad/snapshot/{5位}.pkl` | 前复权;或实时行情 |
| 股本 | `shares = 归母净利 / 每股基本盈利` | 比 CCASS 更接近总股本 |
| 股息 | 现金流量表 `已付股息(融资)` | 不含回购 |
| 币种 | 内地企业多为 **CNY**,香港/英国多为 HKD/USD | **错误币种会让 PE/PB/股息率失真** |
**拿不到、必须看年报/公告的**:
- 分部收入/利润、客户与供应商集中度;
- 一致预期、指引、订单/产能;
- 银行:NPL、关注类、拨备覆盖率、CET1、地产/城投敞口。
⇒ 缺这些时,结论必须标注“未评估”,不得用“看起来不错”替代。
---
## 1. 生意与护城河(定性,但要有证据)
- 收入从哪来、是否周期性、监管强弱;
- 竞争格局(份额、定价权、转换成本、网络效应、成本优势);
- 管理层资本配置(分红/回购/并购/扩产是否理性);
- **只写有数据/公告支撑的判断**,不写故事。
## 2. 财务质量(核心表)
| 维度 | 指标 | 关注点 |
|---|---|---|
| 成长 | 营收增速、净利增速 | 是否可持续、是否靠并购/一次性 |
| 盈利 | 毛利率、净利率、ROE、ROA | 趋势比绝对值重要 |
| 杠杆 | 资产负债率、净负债/EBITDA | 周期底能否活下来 |
| 现金 | **OCF ÷ 净利** | <0.8 要查应收/存货/资本化 |
| 稀释 | 股本变化、股权激励、可转债 | 每股价值是否被摊薄 |
| 效率 | 资产周转、应收/存货周转 | 变慢是预警 |
## 3. 红旗清单(逐项排查)
1. 利润增长但经营现金流下降(OCF/净利 <0.8);
2. 应收/存货增速 > 营收增速;
3. 关联交易、大股东占款、质押比例高;
4. 频繁更换审计师、非标意见;
5. 资本化开支把费用藏进资产;
6. 持续股权融资/可转债稀释;
7. 一次性收益撑利润(处置、公允价值);
8. 客户/供应商高度集中。
## 4. 估值(先相对,后绝对)
1. **相对**:PE/PB/PS/FCF yield 与自身历史、同业比较;成长股用 PEG,周期股用中周期盈利;
2. **绝对**:DCF / DDM / 剩余收益,**给三档情景**(基准/乐观/悲观),不是单点;
3. **反向 DCF**:当前价格隐含了什么增长?能否实现?
4. **金融股**:用 PB-ROE 与合理 PB(见第 9 节),不要用 EV/EBITDA。
## 5. 收益拆解与情景
```
长期年化 ≈ 盈利增长 + 股息率 ± 估值变化
```
| 情形 | 假设 | 输出 |
|---|---|---|
| 基准 | 增长/利润率/估值不变 | 年化 |
| 乐观 | 增长超预期或估值修复 | 年化 |
| 悲观 | 增长失速/利润率下滑/估值下修 | 年化 |
> 三档是**情景**,不是预测;必须写假设与触发条件。
## 6. 历史路径与建仓方式
- 10 年 + 分段(牛/熊/震荡)+ 最大回撤 + 波动;
- **DCA vs 一次性**:长期上涨资产里一次性更优;定投是**时点风险管理**,不是收益增强;
严格比较看 **IRR(资金加权)**,不是终值。
+ ```bash
+ python3 scripts/dca_eval.py --code 0700.HK --start 2016-10-17 --end 2026-10-16
+ python3 scripts/dca_eval.py --index hsi --start 2016-10-17 --end 2026-10-16
+ ```
+
+ > 终值回答「最后谁的钱多」;IRR 回答「每一块钱在场上每年赚多少」。
+ > 定投终值低不一定是差,可能只是钱在场时间短。
+
## 7. 风险清单
业务/行业周期、客户集中、监管、汇率、负债/流动性、治理、稀释、估值、单票集中。
## 8. 组合与执行
- 单只 ≤5–8%,行业 ≤20–30%(按风险预算调整);
- 分批 6–12 个月建仓;股息再投;每年复核;
- **退出**:逻辑破坏、现金流恶化、估值远超合理、出现更好机会;
- **不做**:核心全仓单票、长期机械定投单票、加杠杆。
---
## 9. 金融股附录(银行/保险/券商)
银行额外指标:
| 指标 | 公式 | 备注 |
|---|---|---|
| ROE / ROA | 净利/权益、净利/平均资产 | 核心 |
| NIM(近似) | 净利息收入/平均总资产 | 低于披露值,只看趋势 |
| 成本收入比 | 经营支出/经营收入 | 效率 |
| 信用成本(近似) | 减值及拨备/平均贷款 | 越高越差 |
| 贷存比 | 贷款/存款 | 越高越吃流动性 |
| 派息率 / 股息率 | 已付股息/净利、DPS/价格 | 不含回购 |
| **合理 PB** | `(ROE−g)/(COE−g)`,`g=min(ROE×(1−派息),5%)` | COE 11%,±1% 敏感性 |
- **必须看年报**:NPL、关注类、拨备覆盖率、CET1、地产/城投敞口;
- 保险/券商:用 P/EV、新业务价值、ROEV、两融/自营敞口等(本技能不展开)。
---
## 硬规则(判据式)
```
G1 没算 ROE/毛利率/OCF÷净利就下结论 → FAIL
G2 只看单一倍数、不看成长/质量 → FAIL
G3 不看现金流质量(OCF÷净利) → FAIL
G4 不声明数据缺口(分部/预期/NPL/CET1) → FAIL
G5 把单点估值当预测/目标价 → FAIL
G6 用价格指数或当前池回填、不标幸存者 → FAIL
- G7 把定投说成收益增强 → FAIL
+ G7 把定投说成收益增强 / 只报终值不报 IRR → FAIL
G8 给个性化买卖指令 → FAIL(只给框架)
G9 金融股不评估 NPL/CET1(或声明缺失) → FAIL
G10 不与同业/自身历史比较就谈贵贱 → FAIL
```
## 失败模式库
- **价值陷阱**:PE/PB 低,但 ROE/现金流持续恶化;
- **成长陷阱**:高增长靠并表/一次性,OCF 不跟;
- **周期顶**:用周期高点利润算 PE,看起来便宜;
- **币种错误**:内地企业报表 CNY,未折算会把 PE/PB 低估约 8%;
- **稀释**:股本持续增加,EPS 增长被摊薄;
- **幸存者/单窗口**:当前池回填、只用一段牛市外推。
## 命令
```bash
# 通用
python3 scripts/stock_fundamentals.py --codes 0700.HK,1810.HK,0883.HK --ccy CNY
# 金融股附录
python3 scripts/stock_fundamentals.py --codes 0939.HK,1398.HK,3968.HK --bank --ccy CNY
# 输出到文件
python3 scripts/stock_fundamentals.py --codes ... --out output/_logs/equity.md
+ python3 scripts/dca_eval.py --code 0700.HK --start 2016-10-17 --end 2026-10-16
```
## 输出模板
```
## 生意与护城河(证据)
## 财务质量(成长/盈利/杠杆/现金/稀释)
## 红旗排查
## 估值(相对 + 绝对三情景 + 反向 DCF)
## 收益拆解(基准/乐观/悲观)
## 历史路径与建仓方式
## 风险
## 结论(条件化 + 数据缺口)
```