# ETF Analysis

> 股票型 ETF 的可复算估值分析——按持仓权重把前十成分股的合理估值区间加权汇总成 ETF 层面的合理价区间，并披露覆盖率。用于"这只 ETF 现在能不能买 / 贵不贵 / 适不适合建仓"这类需要算出数的问题

- Skill: `b-m-capital-research/etf-analysis` (Agent Skill)
- Install (CLI): `npx skillmds@latest add b-m-capital-research/etf-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/b-m-capital-research/etf-analysis/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: b-m-capital-research (https://skillmd.com/u/b-m-capital-research)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/b-m-capital-research/etf-analysis

---


## ETF 分析 Skill

ETF 问题的难点不在描述基金，而在**算出这只 ETF 值多少钱**。基金目标、集中度、Bull/Bear 这些运行时既有的 ETF 九段已经覆盖；本 skill 只补两件既有链路没有的事：

1. **把前十持仓逐个估完，再按权重加权汇总成 ETF 层面的合理价区间**；
2. **结论落到数**——合理价区间、现价在区间里的位置、覆盖率，而不是只给一个「持有区（中置信度）」的标签。

只写出分档标签而没有 ETF 合理价区间和现价位置，视为这一轮没有给结论。

### 这两件事写进九段的哪一段（不要另起编号）

运行时对 ETF 问题注入九个编号章节，而第 4、5 步本身没有编号，不点名落位就会被整段跳过。本 skill 不新增章节，只往三处填：

- **第 3 段（持仓、集中度与主要暴露）**：第 4 步的逐家表（每行带口径标签），一家一行。
- **第 6 段（费用、跟踪误差与底层资产估值口径）**：4.4 的整套加权与算出的 ETF 合理价区间。这一段只写一句"费率与跟踪误差本轮未核验"就翻篇，等于第 4 步没做。
- **第 1 段（结论）**带上这个区间和现价在区间里的位置，**第 9 段（动作建议）**带上第 5 步的触发条件。

### 取数顺序

1. `search` 解析 ETF → `profile` 确认 `isEtf/isFund` → `quote` 取现价、涨跌口径与 52 周区间。
2. `etf_holdings` 取持仓与权重。**没有本轮权重就没有第 4 步的加权**：此时只对能取到的持仓做定性排序，并在正文明说本轮未做加权测算，不从记忆补权重名单。
3. 前十成分股逐个取数，**默认就分档，不要按十家全口径起手**（十家各取 `earnings_outlook` + `valuation` 就是 20 次调用，补 `financials` / `peers` 还要更多，一轮跑不完，结果往往十家都没估完）。允许并行：
   - **A 档 = 权重最大的 5 家**：`earnings_outlook`（现价、机构目标价低/中枢/高、评级分布、FY 一致预期）+ `valuation`（PE/PS/EV-EBITDA/ROE/DCF），走完 4.1–4.3 的自算。需要历史倍数区间或判断周期位置时才补 `financials`，需要同业中枢时才补 `peers`。
   - **B 档 = 第 6–10 家**：只取 `earnings_outlook`，不补 `valuation`、不做自算倍数，隐含空间按 4.3 末的机构口径直接算。目标价四字段与评级分布 `earnings_outlook` 一次就带回，不要再单独调 `price_target_consensus` / `grades_consensus` 拆成两次。
   - 两档合计 15 次调用。预算有富余就把 B 档里权重最大的那家提到 A 档，并说明提了哪几家。
4. ETF 层面的 `news`；指数最近一次再平衡、成分或权重调整用带绝对日期的 `web_search` 补。
5. **降级口径必须写出来**：正文点名哪几家走的自算口径、哪几家走的机构口径，以及两档各占前十权重多少（例："自算口径覆盖 31.4%，机构口径覆盖 11.5%"）。混合区间的置信度按低的那一档算。不要为了凑十家把十家都降到机构口径却不说明。

两条容易踩的口径：

- **ETF 本体不查公司财务，但成分股是公司，必须走公司口径。** 既有约束禁止对已确认的 ETF/基金调用公司利润表或公司财报日历，那是针对 ETF 这个代码本身；前十成分股是独立公司，逐个用它自己的 `entity_route` 取公司财务和估值，不复用 ETF 的路线键。
- **同一发行人的多类股必须合并成一家**（GOOGL + GOOG、BRK.A + BRK.B）：权重相加，只做一次估值。不合并会让前十出现十一个位置，且同一家公司的权重被拆散、加权失真。

### 第 1–2 步：这只 ETF 是什么、装了什么

跟踪哪个指数、编制规则（市值加权还是等权、有没有单一成分权重上限）、再平衡频率、发行人、费率与规模——两三句写完即可，这部分是背景不是结论。

成分要给出前十逐一的权重与合并口径、前五与前十的合计集中度，并按行业或主题把权重归类（算力硬件 X%、软件 Y%、消费 Z%），指出这只 ETF 的实际暴露和它的名字是否一致。集中度是第 4 步加权的前提：前十占比越低，第 4 步算出的区间代表性越弱，要在覆盖率里如实说明。

### 第 3 步：现估值与现涨幅

- **涨幅**：当日涨跌逐字采用行情给出的涨跌口径与标签，另给距 52 周高点/低点的百分比、相对 50 日与 200 日均线的位置；YTD 只在本轮能核验时写。
- **估值**：基金层面的组合倍数常常取不到。取不到就用持仓加权口径算，并注明只覆盖前十的多少权重、不是全基金 PE；不要拿公司概况里的某个 `pe` 字段冒充基金 PE。
- **组合 PE 用加权调和平均，不要用算术平均。** 组合 PE = 1 / Σ(ŵᵢ / PEᵢ)，因为组合市盈率是总市值 ÷ 总盈利。算术加权（Σ ŵᵢ × PEᵢ）会被个别高倍数或亏损公司拉高，系统性高估。亏损公司的 PE 不入这个公式，改用 EV/S 单独说明，并从 PE 口径的覆盖权重里扣掉。

### 第 4 步：前十持仓的估值分析与加权（本 skill 的重心）

#### 4.1 每家的机构口径

取数字段、区间写法与「近一月 vs 近一年迁移方向」按 `analyst-coverage`，此处不重写；4.1 只需按那套口径把前十逐家填出来，再接 4.2 的稀缺度调整。

逐家给出：目标价低 / 中枢 / 高、覆盖机构数、评级分布。这是外部交叉验证，不是结论本身——写完必须有一句"我的自算区间比机构中枢高/低约 X%，因为 Y"。写"多家机构看好"这类无法核验的话等于没写。

#### 4.2 每家的稀缺性与差异化，必须落到倍数上

按框架 2 的口径给每家两句：稀缺性回答需求相对供给紧不紧，差异化回答价值为什么落到这家；再加上最新一期财务的兑现证据（营收/毛利率/自由现金流其中至少一项的当轮数字）。

**关键判定：稀缺性与差异化必须明确把倍数往上还是往下调、调到多少。** 写法是"基准倍数 26x → 调整后 30x，因为先进制程产能是全行业唯一瓶颈且已被长期协议锁定"。只写"护城河强""格局好"而倍数没动，等于第 4 步没做。

这一条只对 A 档要求。B 档本轮没有自算倍数可调，压成一句"哪一型 + 一项当轮数字"即可；如果某家 B 档的稀缺性判断强到足以推翻机构中枢，那说明它该被提到 A 档，提上去重算，而不是在机构口径上手动加价。

#### 4.3 每家的合理价区间

一家一行可复算算式，摆成表最清楚：

```
合理价 = 分母（口径 + 数值 + 性质） × 倍数（基准 → 调整后）
```

- **分母优先级**：FY1E / FY2E 一致预期 EPS（写清对应自然年段与 GAAP/Non-GAAP）> TTM 稀释 EPS。亏损或微利成长股不硬套 PE，改用 EV/S 或利润率桥，方法选择与红旗自检沿用估值审计那套，不在这里重写。每家先一句给出公司类型（估值审计一问）再选倍数族，不是五家一律套 Forward PE。
- **倍数区间三个来源，至少用两个交叉**：① 该公司自身历史倍数区间；② 机构目标价隐含倍数（目标价 ÷ 同一分母）；③ provider 同业中枢。只有一个来源时降置信度并说明。这三个来源是同一族倍数的三个锚，不等于跨族交叉验证。
- 每家给低 / 基准 / 高三个价，对应倍数区间的下沿、中枢、上沿。
- **B 档不走上面这套自算**，用机构口径一步到位：合理价ᵢ^低/基准/高 = `targetLow` / `targetMedian` / `targetHigh`（用中位数不用均值，理由在 `analyst-coverage`）。它照常按权重进 4.4 加权，但表里要标出"机构口径"，不能和 A 档的自算区间混报成同一件事；B 档只有目标价没有自算交叉验证，4.1 那句"我的自算比机构中枢高/低 X%"对它不适用。

#### 4.4 加权汇总

记前十持仓 i 的原始权重 wᵢ，前十合计 W₁₀ = Σ wᵢ。设 S 为本轮**既取到现价、又至少有一个可复算估值锚**的持仓集合，可算权重 W_S = Σ_{i∈S} wᵢ。

1. **覆盖率**：c = W_S / W₁₀，正文必须写出这个数（例："前十合计 48.2%，其中 42.9% 完成了本轮估值测算，覆盖率 89%"），并按取数顺序第 5 条拆出自算口径与机构口径各占多少权重。
2. **归一化权重**：ŵᵢ = wᵢ / W_S。取不到数的持仓从分母里剔除，用剩余权重重新归一，不要按零涨跌塞进分子——那等于替它做了一个没有依据的判断。
3. **每家的隐含空间**：rᵢᵏ = 合理价ᵢᵏ / 现价ᵢ − 1，k ∈ {低, 基准, 高}。
4. **前十口径的加权空间**：Rᵏ = Σ_{i∈S} ŵᵢ × rᵢᵏ。**这一步用算术加权**（组合收益率就是成分收益率的市值加权算术平均），与第 3 步组合 PE 用调和平均不冲突，两者算的不是同一个量。
5. **推到整只 ETF 必须显式选一个假设并写出来**：
   - 保守口径：前十之外的权重按零涨跌计，R_ETF = W₁₀ × Rᵏ；
   - 同步口径：前十之外与前十基准同步，R_ETF = Rᵏ。
   两者差额就是 (1 − W₁₀) × Rᵏ，给一句话让用户看到这个假设值多少钱。不写明用了哪个口径，后面的价格区间不成立。
6. **ETF 合理价区间** = 现价 × (1 + R_ETF^低 / ^基准 / ^高)，直接给美元区间，并给出现价落在区间里的位置（距下沿、距上沿各多少百分比）。

#### 4.5 覆盖率不够时怎么降级（永远有输出，不空手而归）

- c ≥ 0.8：正常给 ETF 合理价区间，置信度按研究结论分级判定。
- 0.5 ≤ c < 0.8：仍给区间，但标注"仅覆盖前十的 c%"，置信度降一档。
- c < 0.5，或 S 里不足 5 家：不给精确 ETF 价格区间，改给方向性判断（现价相对已核验部分的合理区间偏高还是偏低），列出缺的是哪几家、缺的是哪一项输入、补齐后结论如何升级。
- 任何一档都要写出缺口清单。"数据不足"是合法结论，但停在"无法判断"四个字不是。

### 第 5 步：投资建议

- 给一个明确研究区间（机会 / 持有观望 / 风险 / 数据不足）**加上第 4 步算出的 ETF 合理价区间与现价位置**。两者缺一，这一轮就没有回答用户的"能不能建仓"。
- 给 2–4 个会改变结论的可观察条件，优先用权重最大那几家的下一次财报、指数再平衡、前十成分的目标价修订、板块层面的供需变化。
- 建仓节奏可以给（分批与触发价位），但**具体仓位比例走组合框架，不在这里定死数字**。
- 结论里的价格必须和第 4 步的算式一致；对不上先改到一致再输出。

### 什么时候不走第 4 步

第 4 步依赖成分股有可估的盈利锚。以下类型只做第 1、2、3、5 步，并说明为什么不做加权测算：

- **商品型 ETF**（GLD、SLV、USO）：底层是商品不是公司，估值锚是现货价格、持仓成本与展期损益，宏观驱动走黄金那条线。
- **债券型 ETF**：锚是久期、到期收益率与信用利差，不是 PE。
- **货币、波动率、杠杆与反向 ETF**：路径依赖决定持有结果，衰减口径走期权与衍生品那条线。
- **持仓极度分散的宽基**（前十合计低于约 15%）：前十加权代表不了整只基金，改用板块权重与指数层面倍数讨论，并说明这一点。

