# Moat Analysis

> 公司侧壁垒的取证与判定——护城河来源分型、每一型对应的当轮可取数证据、护城河到估值倍数上下沿的传导，以及护城河正在被侵蚀的观察信号

- Skill: `b-m-capital-research/moat-analysis` (Agent Skill)
- Install (CLI): `npx skillmds@latest add b-m-capital-research/moat-analysis`
- Raw SKILL.md: https://api.skillmd.com/api/skills/b-m-capital-research/moat-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/moat-analysis

---


## 护城河 Skill

护城河回答的只有一句话：**客户为什么不能轻易换掉它**（这句口径来自 `hari-invest`「判断主干」，此处不重述）。本 skill 负责三件事：把这句话拆成能取数的分型、给出取数后怎么判定、把判定接到倍数上。

一条纪律贯穿全篇：**护城河是取证算出来的，不是形容出来的。** 评测里被扣分的写法就是三条排比句——"生态不可替代""技术明显领先""客户粘性极强"——通篇没有一个份额、一个毛利率、一个客户占比。

### 边界

| 情形 | 去哪 |
|---|---|
| 行业需求相对供给紧不紧、板块之间谁更稀缺 | `scarcity-differentiation`（产业侧） |
| 倍数锚从哪来、往上下调多少、合理价区间与现价位置 | `valuation-audit` |
| 九段结构、胜负手、四档结论与价格区间收口 | `stock_research` + `hari-invest` |
| 某条新闻或异动动没动护城河 | `market_analysis` 的事件流程，本 skill 只提供分型与证据字段 |
| 历史研究卡的护城河基线、长期档案里的 `moat_trend` | `company-thesis-ratings`、`company_portrait` |

归属只用一个问题判定：**这条证据换成同板块另一家还成立吗？** 成立的（光模块整体产能紧张、token 增长拉动存储）是稀缺，属产业侧；不成立的（它的 SerDes 已进入 N 家云厂商机架方案，换供应商要重过信号完整性验证）才是护城河。

### 一、来源分型与对应证据

分型清单本身在 `company_portrait/references/profile-framework.md` 已列过，这里补的是**每一型本轮去哪取数、数字长什么样**：

| 来源 | 成立的判定问题 | 本轮取数 | 数字形态 |
|---|---|---|---|
| 成本优势 | 同样的产品，它的单位成本是不是结构性更低 | `financials`（`hone_ttm` 毛利率/营业利润率、`income_annual` 多年区间）+ `peers` 同业对照 | TTM 毛利率 X% vs 同业中位 Y%；行业降价的两个季度里毛利率只降 Z pct |
| 切换成本 | 客户换掉它要付多少时间与代价 | `sec_filings`（10-K 客户集中度与供货/验证条款）、`transcript`、`press_releases` | 单一客户占收入 X%（哪份 10-K）；重新认证 N 个月；长协覆盖 Y% 产能或 bit |
| 网络效应 | 一侧变多是否让另一侧更离不开 | `segments`（平台业务线收入与增速）、`press_releases`、`transcript`、`web_search` | 两侧规模与同比（用户 / 商户 / 开发者）；take rate 或 ARPU 的方向 |
| 无形资产与品牌 | 提价之后销量和毛利掉不掉 | `income_annual`（5–10 年毛利率区间）、`segments`（授权与版税收入）、`sec_filings`、`web_search` | 提价后销量与毛利率变化；授权收入占比及增速；核心专利到期年份 |
| 认证与监管壁垒 | 一个新进入者从零到量产要多久 | `transcript`、`sec_filings`、带绝对日期的 `web_search` | 送样到量产 N 个月；全球通过认证的合格供应商 M 家；牌照数量与有效期 |
| 数据与生态 | 换供应商要不要连数据和工具链一起搬 | `press_releases`、`transcript`、`web_search` | 生态方数量与增速（开发者 / ISV / 合作方）；独占数据的规模与年限；迁移成本的公开表述 |
| 规模与产能位置 | 它在瓶颈环节占了多大一块，别人补得上吗 | `web_search`（第三方份额，必须写口径与期间）、`transcript` / `press_releases`（backlog、产能、扩产周期）、`financials` | 份额 X% 及前后两期方向；backlog 或 RPO 金额与覆盖季数 |

> `transcript` 当前订阅只返回可用日期列表，正文受限；需要管理层原话时改用 `press_releases` 或带绝对日期的 `web_search`。

跨分型的财务显影补一条：`valuation` 里的 ROE / ROIC。**连续 3 年以上高于同业中位数才是"在收租"的证据**（仓库没有 WACC 字段，用 `peers` 的同业中位数做门槛，不要口算资本成本）；单年高 ROIC 可能只是景气高点，周期股必须配 `income_annual` 的多年区间一起看，否则会把周期误判成壁垒。

### 二、写成什么样才算做完

- **至少两项当轮数字或可核验事实，且来自上表不同的两行。** 同一型的两个角度（毛利率高 + 成本领先）只算一项。只有定性形容词的护城河段视为未完成：它不能进入第三节的倍数调整，也不能在结论里充当溢价理由。
- **每项数字带四要素**：口径（份额按收入还是出货量、毛利率是 GAAP 还是调整后）、期间、来源、日期。"份额领先"不是数字，"按某第三方 2026Q2 出货量口径的 X%、较上一季 -1.2pct"才是。
- **给方向，不只给水平。** 护城河的信息量在趋势里：份额在扩还是缩、毛利率在走高还是走低、客户集中度在集中还是分散。只给静态数字等于没回答"守不守得住"。
- **拿不到就点名缺项**：写清缺的是份额口径、客户集中度、backlog 还是认证周期，以及补上后判断会怎么变（"若单一客户占比确实超过 40%，切换成本这条要从加强改判为双刃"）。缺项写清楚是合格产出，用形容词补位不是。
- 面向非专业用户时，两项数字之外再给一句生意场景的解释（表达要求见 `hari-invest/references/conversation-contract.md`），不要只堆术语。

### 三、护城河 → 估值：它调的是倍数的上下沿，不是买卖

本轮提示里出现【本轮相关行业】时，先用行业块判断这一行的**结构性位置**（谁卡脖子、瓶颈在哪一环），再判断这家公司在这一行里占哪个位置——同一行里所有公司共享的东西不是护城河，能解释「为什么价值落到这一家」的才是。

护城河**不直接决定买卖，也不进分母**。它决定两件事：超额回报还能持续几年（年限），以及这段现金流被侵蚀得有多快（稳定性）。这两件事作用在**倍数的上下沿与折溢价**上。所以本节产出三行，直接交给 `valuation-audit` 的「三问之三」：

1. **年限**：超额回报可持续 <3 年 / 3–5 年 / >5 年，依据是上面哪两项数字；
2. **稳定性**：客户真要换需要多久、替代路线现在走到哪一步（送样 / 验证 / 小批量 / 量产）；
3. **一句调整语句**："护城河把倍数从 <锚> 往上（下）推到 <采用值>，因为 <那两项证据>"。锚从哪来、幅度纪律、偏离超过约 ±30% 要两条独立证据，全部按 `valuation-audit`，此处不另立。

**深护城河配低估值时，必须把差额归到护城河之外的那件事上。** 市场给的倍数明显低于护城河所隐含的水平，说明它正在为另一个变量定价：新一代技术落后、资本开支抬升压低自由现金流、监管、增长中枢下移、地缘或流动性折价。写法是"护城河支持的是 A 倍，市场在给 B 倍，差额来自 C（本轮证据）；C 改善则倍数向 A 收敛，C 继续恶化则 B 还有下行空间"。只写"护城河这么深所以被低估"是方向性错误——深护城河没能阻止倍数下移，这件事本身就是"当前定价的不是护城河"的证据。

反向同样要写：护城河一般却享受高倍数的，说明溢价来自产业稀缺（归 `scarcity-differentiation`）或未兑现叙事（按 `valuation-audit` 单列为期权价值），不要记到护城河账上，否则稀缺消失那天解释不了下跌。

### 四、正在被侵蚀的信号

每条都写清：看哪个数据、什么方向算触发、多久能看到。

| 信号 | 触发 | 频率与来源 |
|---|---|---|
| 份额下滑 | 同口径连续两期下降 | 季度；第三方统计 + 公司披露 |
| 毛利下行 | 毛利率同比与环比同向走低，且公司把原因归于价格竞争而非产品结构 | 季报 + `transcript` |
| 客户转单 | 大客户收入占比下降，同时对方公布二供、自研或转单 | 年报 10-K + 双方公告 |
| 替代技术进入验证 | 竞品在客户处进入送样 / 验证 / 小批量 | 电话会与行业信息，通常领先营收 1–3 个季度 |
| 定价权松动 | 从溢价定价转为跟随报价，或续约价下调 | `transcript`、`press_releases` |
| 锁定在缩 | backlog 或 RPO 增速连续两期低于收入增速 | 季报 |

**命中两条及以上时，把护城河判定从"加强 / 稳定"改为"削弱"，并把第三节给出的倍数溢价相应收回。** 只在风险段落里提一句"竞争加剧"、而倍数照旧，等于这一节没做。

### 五、产出形态

- **用户直接点名时**（"分析下 X 的护城河"）：不套九段模板，但这一问仍是一次完整研究：分型判定、两项数字、年限与稳定性、那句倍数调整、2–4 条侵蚀信号，每一项都展开写清取自哪个字段、数字是多少、为什么这样判，并用具体生意场景解释"客户为什么换不掉它"。本轮上下文里已有现价、股本与分母时，直接按 `valuation-audit` 第四步把区间乘完并标现价位置，不要以"要不要接着把估值区间算出来"收尾；确实缺分母时列缺项并给方向。数据时间首行由主 Agent 负责，本 skill 不自带。
- **点名护城河、同时又带着要判断的意思时**（哪几种问法算，见 `hari-invest` 资源路由表「追问护城河 / 稀缺与差异化」那一行）：上一条那句「要不要接着把估值区间算出来」就不要停下来问了，按 `hari-invest` 路由表那一行已经并载的 `valuation-audit` 第四步「收尾把倍数乘完」，每个标的出下沿、上沿两条算式与一句现价分位。本路径只交这三样，不套 `valuation-audit` 的终稿结构，对账表压成一句取数说明。
- **被其它 skill 加载时**：只交付这一维。`stock_research` 九段的护城河段按第一至四节展开；`sector-to-stock` 的护城河列填两项不同来源的数字；`market_analysis` 的事件分析只回答被事件触及的那一型；`etf-analysis` 的成分股逐个压成一句"哪一型 + 一项数字"。

