---
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` | 前复权；或实时行情 |
| 股本（官方） | `data/hkex_monthly_shares.csv`（FF301） | 优先 `issued`；缺失回退 `shares_history` / 净利EPS |
| 股息/回购 | 现金流量表 `已付股息(融资)`、`回购股份`、`发行股份` | 净回购=回购−发行；总回报=股息率+净回购收益率 |
| 公司行动 | `data/events/events_310.csv`（`build_event_table.py` 生成）+ HKEXnews | 配售/供股/CB/私有化/锁定；PIT 公告日 |
| 历史股本 | `data/hkex_monthly_shares_history.csv` + `data/shares_history.csv` | 30 只 FF301 月度；yfinance 代理逐日 |
| 权益披露 | `data/di/di_notices.csv` | 大股东/董事增减持（1101/1201） |
| CCASS | `data/ccass/` + `scripts/ccass_concentration.py` | 集中度/覆盖率；分母用 FF301 |
| 除牌/港股通 | `data/hkex_delisted.csv` / `data/stock_connect_northbound.csv` | 幸存者 / 合资格变化 |
| 币种 | 内地企业多为 **CNY**，香港/英国多为 HKD/USD | **错误币种会让 PE/PB/股息率失真** |

**拿不到、必须看年报/公告的**：
- 分部收入/利润、客户与供应商集中度；
- 一致预期、指引、订单/产能；
- 银行：NPL、关注类、拨备覆盖率、CET1、地产/城投敞口。

⇒ 缺这些时，结论必须标注“未评估”，不得用“看起来不错”替代。

---

## 0.5 公司行动扫描（必做，先于财务质量）

> 公司行动不是 alpha，是**稀释、供给、除权和治理风险**。
> 事件研究结论（D107）：310 只上没有稳定可交易信号；但**分析个股必须查**。

| 类型 | 数据源 / 命令 | 看什么 |
|---|---|---|
| 股息/特别息/以股代息 | 现金流量表、公告 | 派息率、FCF 覆盖、除息日 |
| 回购/库存股 | FF305/FF304、`stock_fundamentals.py` | **净回购=回购−发行**；库存股是否再出售 |
| 配售/先旧后新 | HKEX 公告、事件表 | 折价、稀释比例、用途、锁定期 |
| 供股/公开招股 | 公告、事件表 | 供股比例、折价、**TERP**、包销 |
| 可转债/权证/期权 | 公告、事件表 | 转换价、潜在股数、重定价条款 |
| 拆股/合股/红股 | 公告、复权价 | 价格按比例变，不改价值；每手股数 |
| 私有化/并购/协议安排 | 公告、事件表 | 要约价、条件、时间表、失败风险 |
| 大股东增减持/质押/锁定 | DI、公告 | 供给、平仓线、锁定期到期 |
| 指数/港股通调整 | 指数公告、交易所公告 | 被动流、生效日 |
| 停牌/复牌/审计/盈警 | 公告、事件表 | 流动性、治理、盈利下修 |

```bash
# 生成/更新事件表（310 只，PIT 公告日）
python3 scripts/build_event_table.py --universe 310
# 个股财务 + 净回购/总股东回报
python3 scripts/stock_fundamentals.py --codes 0700.HK,0005.HK --ccy HKD
# 事件影响（研究用；不是买卖信号）
python3 scripts/event_study.py --events data/events/events_310.csv
```

**逐项自检（答不出就不算完成）**
1. 最近 12 个月有没有配售/供股/CB/大股东减持/锁定到期？
2. 稀释比例多少？发行价相对现价折价多少？募资用途？
3. 回购是否**净缩股**（扣发行、扣库存股再出售）？
4. 股息是否由自由现金流覆盖？有没有借钱分红？
5. 有没有控制权变更/私有化/指数调整/停牌？
6. 除权日是否已复权？供股是否按 TERP 调整？
7. 股本用的是什么口径？FF301 / yfinance / 净利EPS 差异是否 >1%？
8. 是否已除牌/停牌？港股通合资格是否变化？

> 数据缺口：事件表基于**公告标题**，`confidence=review` 需回看原文；30 只/310 只均为当前池，缺退市股。

---

## 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
# 总回报口径（股息再投资；HSI 用 2800.HK 代理）
python3 scripts/dca_eval.py --code 0005.HK --start 2016-10-17 --end 2026-10-16 --total-return
```

> 终值回答「最后谁的钱多」；IRR 回答「每一块钱在场上每年赚多少」。
> 定投终值低不一定是差，可能只是钱在场时间短。
> 高分红/高回购股必须用 `--total-return`，否则会低估总回报。

### 回购质量检查（必做）

- **净回购 = 回购 − 发行**：只看回购不看增发会误判（例：小米 2025 回购 62 亿、发行 392 亿 ⇒ 净 −331 亿）。
- **净回购收益率 = 净回购 / 市值**；**总股东回报 = 股息率 + 净回购收益率**。
- **回购均价 vs 现价**：高于现价 = 短期买贵；低于现价 = 加分，但要结合内在价值。
- **可持续性**：看自由现金流、负债、是否借债回购；亏损公司回购尤其警惕。
- 数据：`scripts/stock_fundamentals.py` 已输出 `净回购(亿)`、`净回购收益率`、`总股东回报`（近似，数据源口径）。

## 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 把定投说成收益增强 / 只报终值不报 IRR                       → FAIL
G8 给个性化买卖指令                         → FAIL（只给框架）
G9 金融股不评估 NPL/CET1（或声明缺失）        → FAIL
G10 不与同业/自身历史比较就谈贵贱            → FAIL
G11 只看回购、不扣发行/不看回购价            → FAIL
G12 不检查最近 12 个月公司行动/稀释            → FAIL
G13 不复权/不看供股 TERP                     → FAIL
G14 股本只用净利/EPS、不查 FF301/稀释        → FAIL
```

## 失败模式库

- **价值陷阱**：PE/PB 低，但 ROE/现金流持续恶化；
- **成长陷阱**：高增长靠并表/一次性，OCF 不跟；
- **周期顶**：用周期高点利润算 PE，看起来便宜；
- **币种错误**：内地企业报表 CNY，未折算会把 PE/PB 低估约 8%；
- **稀释**：股本持续增加，EPS 增长被摊薄；只买回购不看增发/库存股再出售；
- **除权**：把供股/拆股/除息造成的价格下跌当亏损，未用复权/总回报；
- **事件当 alpha**：事件研究无稳定信号（D107/D110），不能把“有配售/盈警/大股东买卖”直接当买卖理由；
- **幸存者/单窗口**：当前池回填、只用一段牛市外推。

## 命令

```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）
## 收益拆解（基准/乐观/悲观）
## 历史路径与建仓方式
## 风险
## 结论（条件化 + 数据缺口）
```
