git:20261031.2df6834 to git:20261101.c5a5005

9 added, 2 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 更接近总股本 |
+ | 股本(官方) | `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),不能把“有配售/盈警”直接当买卖理由;
+ - **事件当 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)
## 收益拆解(基准/乐观/悲观)
## 历史路径与建仓方式
## 风险
## 结论(条件化 + 数据缺口)
```