agentleFS
B-M-Capital-ResearchB-M-Capital-Research/honeclaw/skills/etf-analysis/SKILL.md

ETF Analysis

Skill748 starsChanged 3 months agoMITView on GitHub

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

Files
SKILL.md

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%):前十加权代表不了整只基金,改用板块权重与指数层面倍数讨论,并说明这一点。

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.