/serenity-bottleneck-hunter
给定一个投资主题/趋势,复用交易者 Serenity(@aleabitoreddit)的"供应链瓶颈逆向映射"方法论,独立挖出被市场忽视的上游瓶颈股(而非分析他已喊过的标的)。当用户给出一个主题(如"AI 数据中心电力""人形机器人""HBM 内存")并想要候选标的+论证时使用。仅供研究教育,非投资建议。
$ npx -y skills add Mrjie7205/serenity-bottleneck-hunter --skill serenity-bottleneck-hunter --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/serenity-bottleneck-hunter
Context preview
The summary Claude sees to decide when to auto-load this skill.
给定一个投资主题/趋势,复用交易者 Serenity(@aleabitoreddit)的"供应链瓶颈逆向映射"方法论,独立挖出被市场忽视的上游瓶颈股(而非分析他已喊过的标的)。当用户给出一个主题(如"AI 数据中心电力""人形机器人""HBM 内存")并想要候选标的+论证时使用。仅供研究教育,非投资建议。
SKILL.md
serenity-bottleneck-hunter.SKILL.mdname: serenity-bottleneck-hunter
description: 给定一个投资主题/趋势,复用交易者 Serenity(@aleabitoreddit)的"供应链瓶颈逆向映射"方法论,独立挖出被市场忽视的上游瓶颈股(而非分析他已喊过的标的)。当用户给出一个主题(如"AI 数据中心电力""人形机器人""HBM 内存")并想要候选标的+论证时使用。仅供研究教育,非投资建议。
Serenity Bottleneck Hunter
把一个**投资主题**转成一份**被忽视的上游瓶颈候选股名单 + 论证 + 目标价/时间框架**。核心不是抄 Serenity 的票,而是**复用他的逻辑去选新股**。
> 📓 每条纪律是怎么用一次真实翻车换来的,见 `reference/lessons.md`。本文件只讲"做什么";完整事故复盘在那边,用 `〔… → lessons.md#锚点〕` 指过去。
何时用
- 用户给出一个主题/趋势,想要"沿这个方向能买什么"。
- 用户给一个上游环节/材料,想找对应的瓶颈公司。
- ❌ 不要用于:已知标的的纯财务分析、抄作业式"他买了啥"。
核心理念
> 逆向拆解供应链,在机构与分析师发现之前,埋伏那个**无人察觉的上游瓶颈**,用催化剂兑现。 > alpha 来自"**早于机构发现主题**",不是抄到最低点。
---
v0.2 工具入口
- 首次安装后可执行 `python scripts/run_demo.py`:不联网的历史演示,输出与正式跟踪表分开;说明见 [examples/README.md](examples/README.md)。演示不替代真实研究。
- 实际 A 股/美股/港股取价与估值设置见 [reference/DATA_SOURCES.md](reference/DATA_SOURCES.md)。保留来源、行情日期及质量提醒;不得按跳空幅度自行猜除权。
- 报告 SPEC 中相对路径从本技能根目录解析;可用 `tracking_file` 选择自己的 CSV。现有默认路径兼容保留。`shell_from` 缺省时使用内置模板,无需私库或驾驶舱。
- 发布前可用 `python scripts/verify_report.py <报告> --scan <输入> --tracking <跟踪表> --strict` 完整对账。严格模式的输入缺失和数字错配必须先解决。
可选驾驶舱
只有用户需要管理、跟踪或复盘已有研究时,才使用 [cockpit/README.md](cockpit/README.md) 的本地驾驶舱。核心研究流程不依赖它。
默认 `python cockpit/run.py` 读取只读历史演示,不抓取行情。用户自己的研究须明确指定目录;报告 SPEC 的 `out` 与 `tracking_file` 应指向该目录。取价、告警核对和定时任务分别由用户手动触发或显式启用。驾驶舱的“猎手/覆盖”是显示范围,不是龙头视角。
个人目录的星级用 `tracking/cross_theme_scan.py --input <个人跟踪表> --output <个人星级表>` 重建,避免把公库历史样本的星级混入个人研究。
工作流(7 步)
**Step 1 · 确认资本开支确定性** 这个主题的钱为什么"一定"会花?规模、周期多长?需求确定性 > 个股故事性。先归类:**Bottleneck(瓶颈)/ Disruption(颠覆)/ Evolution(演进)**?(本 skill 主攻 Bottleneck)
- **标明需求来源**:政府/国防(节奏慢、看订单与预算周期)还是商业(超大规模厂商 capex、节奏快)?二者估值锚与择时节奏不同,Step 6/7 据此调整。
**Step 2 · 逆向拆链 + 广扫纪律(5 层产业链 + 跨主题 root + 可选第 6 层独有 IP)** 列出 **5 层** 从下游到上游:**下游对照 → 中游系统 → 中游器件 → 上游设备 → 上游材料/代工**。**跳过人人都盯的下游龙头**。
- **必做"广扫供应商"**:除最上游材料层外,单独再搜一轮该主题的子系统/器件/卖铲子供应商,否则漏 ④ 原型标的。〔教训:商业航天漏 Redwire → lessons.md#redwire〕
- **广扫颗粒度**:覆盖 5 层,每层至少 2-3 个标的。**广扫不到位 ≠ 板块没机会** —— 停手前先问"是真没机会,还是没扫够"。〔教训:800VDC 6 只→15 只才挖出 STM → lessons.md#breadth-stm〕
- **跨主题 root 节点**:**ARM / CDNS / SNPS 放在 chain-viz 上方独立的"跨主题 root"小卡片,显示一次,不画进每个主题的产业链层**(三家是所有芯片设计驱动主题共用的根)。〔教训:7 份报告 IP/EDA 层 100% 重复 → lessons.md#ip-eda-root〕
<div class="cross-theme-root">
<span class="label">跨主题 root(芯片设计驱动主题共用)</span>
ARM ⭐⭐ + CDNS ⭐⭐ + SNPS ⭐⭐
</div>其 ⭐⭐ 状态来自 `tracking/cross_theme_index_snapshot.csv`,不每个主题重画。
- **可选第 6 层 · 主题独有 IP/EDA 玩家**(仅当主题真有独立玩家才画):
- **自动驾驶 L4** → 真有独立 IP:**MBLY**(Mobileye 授权给 BMW/Audi/Geely)— 必须画
- **个人 AI PC** → ARM 在 PC 是**真单源**(Apple M + Qualcomm Snapdragon X + AMD AI300)— 保留画在产业链顶层 + 标本主题真单源
- **AI Agent / 物理 AI / AMR** → 无独立 IP 玩家 → 不画第 6 层,root section 提一次即可
- **MLCC / 800VDC / 商业航天** → 不依赖芯片设计,完全跳过 IP/EDA
- **凑数禁令**:没有真独立玩家的主题不强制画第 6 层 —— IP/EDA 是 optional 不是 mandatory。
- **A 穷尽性 · 已知玩家全集**:每个主题开扫前**先列已知玩家全集**(全球+全市场,涵盖上市/私有/被并购),逐一显式标记 `covered` / `private`(跳过+原因)/ `acquired`(标合并实体)/ `delisted` / `untracked`(EODHD/yfinance 无数据)。**不允许"默认遗漏"**,不允许"我扫了 5 家就够了"。写在报告底部"已知玩家全集 audit"块。〔示例:L4 LiDAR 全集枚举 → lessons.md#player-census〕
- **A+ ETF audit(强制工具化兜底)**:**A 项"凭记忆列全集"不够,会漏主仓玩家。** 每个新主题开 forward_picks 扫描前,**必跑** `python scripts/theme_etf_coverage.py --etfs <ETF1>,<ETF2>,... --theme "<主题名>"` → 拉主题 ETF top 25 持仓、与 forward_picks diff、输出 `tracking/_etf_audit_<theme>.json`。对每只 new candidate 人工判定产业链层 + 原型 + 是否纳入;**top 25 持仓 100% 必 audit**(主仓占权重 >70%,小权重 me-too 可跳)。〔教训:Dogfood #10 漏 PANW/CRWD 等 34 只、covered 率 50% → lessons.md#etf-audit〕
- **主题 ETF 映射**:
- AI Agent / SaaS / Software → `IGV` + `WCLD` + `AIQ`
- 网络安全 → `CIBR` + `BUG` + `HACK`
- 半导体 → `SOXX` + `SMH` + `PSI`
- AI 算力/GPU → `AIQ` + `BOTZ`
- 网络/算力基础设施 → `WCLD` + `CLOU` + `SKYY`
- 物理 AI 机器人 → `BOTZ` + `ROBO` + `IRBO`
- 自动驾驶 → `DRIV` + `IDRV`
- 电网/能源 → `GRID` + `XLU` + `URNM`
- 清洁能源/电气化 → `ICLN` + `LIT` + `KARS`
- 国防/航天 → `ITA` + `XAR` + `UFO`
- 5G / 通信 → `FIVG` + `NXTG`
- 数据中心 / 算力 → `DTCR` + `CLOU` + `SRVR`
- **报告 audit section 必列**:① ETF 清单 ② ETF top 持仓全集数 ③ covered/private/跳过原因逐一分类 ④ ETF coverage %。**< 80% 必须诚实标"穷尽性纪律未达标"**。
- 注:A 股无 stockanalysis ETF 持仓数据 → 改用申万行业指数成分 + 人工列已知玩家全集。
- **A++ ticker 双向验证(强制)**:**广扫前用 EODHD search 反查"代码 → 公司名"双向验证**——A 项穷尽 + A+ ETF audit 都不防"错标"(标对公司名但 ticker 指向另一家)。每只候选必验:
curl "https://eodhd.com/api/search/<COMPANY_NAME>?api_token=$KEY&fmt=json"
curl "https://eodhd.com/api/search/<TICKER>?api_token=$KEY&fmt=json"
→ 两次返回的 `Name` 必须一致。**禁止凭记忆写 ticker**,哪怕"我很确定"也必须 search。**A 股尤其踩坑**:6(沪市)/ 0(深市)/ 3(创业板)/ 688(科创板)/ 002(中小板)代码段交叉,同 5 位数字可能是不同公司。工具:`scripts/ticker_truth.py`(ground-truth 库)+ `scripts/verify_tickers.py`(git pre-commit hook 自动拦截)。**验证通过才写入 _scan_*.py。** 〔教训:绿的谐波/信质电机/ASEKY/EHGO 共 4 个真错位 → lessons.md#ticker-verify〕
- **公司状态检查(写判定前必查)**:每只候选(含链路图非候选节点)搜一次当前状态——收购/被收购/私有化/**IPO 上市**/退市/破产重组(搜 `<公司名> acquisition/IPO/merger`)。收购中的标的 🔴 剔除(被收购反向验证选股方向、记进报告当佐证)。**"私有/不可投"是状态性断言,LLM 的"某某私有"先验是训练快照、极易过期,必须当场搜证**,状态写进 company_desc 带日期的 status 字段。〔教训:SkyWater 被 IonQ 收购 + SpaceX IPO 当天报告还标"私有" → lessons.md#company-status〕
- **私有公司诚实跳过**:每个主题都有"真单源但私有/子部门"的标的。**禁止为凑标的硬塞不纯/不可投的公司**;在报告里显式列"已识别但跳过的瓶颈 + 原因"(本身就是高密度信号)。例:物理 AI 六维力传感器(坤维/字节灵犀/宇立全私)、鼎智科技(北交所 EODHD 不支持)→ 跳过。坦诚标"无干净纯 play"比硬凑更有价值。
- **主题边界声明**:跑大类主题(物理 AI / AI 算力 / 能源转型)时,**报告顶部必须界定本期边界** —— 大类下常有 3+ 个供应链差异显著的子领域,显式说"本期聚焦 X,其他子领域作为独立专题分批跑"。命名:`<大类>_<子领域>_完整分析报告.html`。〔教训:物理 AI v1 默认=人形 → lessons.md#theme-scope〕
**Step 3 · 对每层套「9 大瓶颈原型」**(详见 `reference/supply-chain-and-archetypes.md` Part D): ①上游材料/衬底垄断 ②单一来源卡脖子 ③产能售罄/已锁定=去风险 ④进每个设计的BOM/普适 ⑤估值对标套利 ⑥测试/设备瓶颈 ⑦冷门/前机构 ⑧巨头依赖护城河 ⑨宏观二阶/错杀。 命中原型越多的环节,越是猎区。
**Step 4 · 产出候选(偏上游、冷门、小市值)** 每个环节挑 1-3 家最纯正的公司。优先:小市值、卖方覆盖少、散户没听过(原型⑦)。用 EODHD search 校验代码与上市地(含海外,见 A++ 纪律)。
- **别只押"最上游材料咽喉(①②)"**:也纳入"普适器件/卖铲子(④)"——两档都列,避免选股偏科。
- **最纯的瓶颈常在海外/OTC**(如 5N Plus 在 TSX、Umicore 在布鲁塞尔)→ 主动去海外交易所找,注明流动性/准入限制。
- **若瓶颈落在私有公司或大公司的一个部门** → 必须给"暴露路径":买含该业务的母公司(说明稀释/纯度),或如实标"无干净纯 play、跳过"。不硬凑不纯标的充数。
- **跨主题节点检查(强制)**:产出候选后立即跑 `python tracking/cross_theme_scan.py`,与历史 `forward_picks.csv` 对照:
- 同 symbol 跨
Read more
name: serenity-bottleneck-hunter description: 给定一个投资主题/趋势,复用交易者 Serenity(@aleabitoreddit)的"供应链瓶颈逆向映射"方法论,独立挖出被市场忽视的上游瓶颈股(而非分析他已喊过的标的)。当用户给出一个主题(如"AI 数据中心电力""人形机器人""HBM 内存")并想要候选标的+论证时使用。仅供研究教育,非投资建议。
Serenity Bottleneck Hunter
把一个**投资主题**转成一份**被忽视的上游瓶颈候选股名单 + 论证 + 目标价/时间框架**。核心不是抄 Serenity 的票,而是**复用他的逻辑去选新股**。
> 📓 每条纪律是怎么用一次真实翻车换来的,见 `reference/lessons.md`。本文件只讲"做什么";完整事故复盘在那边,用 `〔… → lessons.md#锚点〕` 指过去。
何时用
- 用户给出一个主题/趋势,想要"沿这个方向能买什么"。
- 用户给一个上游环节/材料,想找对应的瓶颈公司。
- ❌ 不要用于:已知标的的纯财务分析、抄作业式"他买了啥"。
核心理念
> 逆向拆解供应链,在机构与分析师发现之前,埋伏那个**无人察觉的上游瓶颈**,用催化剂兑现。 > alpha 来自"**早于机构发现主题**",不是抄到最低点。
---
v0.2 工具入口
- 首次安装后可执行 `python scripts/run_demo.py`:不联网的历史演示,输出与正式跟踪表分开;说明见 [examples/README.md](examples/README.md)。演示不替代真实研究。
- 实际 A 股/美股/港股取价与估值设置见 [reference/DATA_SOURCES.md](reference/DATA_SOURCES.md)。保留来源、行情日期及质量提醒;不得按跳空幅度自行猜除权。
- 报告 SPEC 中相对路径从本技能根目录解析;可用 `tracking_file` 选择自己的 CSV。现有默认路径兼容保留。`shell_from` 缺省时使用内置模板,无需私库或驾驶舱。
- 发布前可用 `python scripts/verify_report.py <报告> --scan <输入> --tracking <跟踪表> --strict` 完整对账。严格模式的输入缺失和数字错配必须先解决。
可选驾驶舱
只有用户需要管理、跟踪或复盘已有研究时,才使用 [cockpit/README.md](cockpit/README.md) 的本地驾驶舱。核心研究流程不依赖它。
默认 `python cockpit/run.py` 读取只读历史演示,不抓取行情。用户自己的研究须明确指定目录;报告 SPEC 的 `out` 与 `tracking_file` 应指向该目录。取价、告警核对和定时任务分别由用户手动触发或显式启用。驾驶舱的“猎手/覆盖”是显示范围,不是龙头视角。
个人目录的星级用 `tracking/cross_theme_scan.py --input <个人跟踪表> --output <个人星级表>` 重建,避免把公库历史样本的星级混入个人研究。
工作流(7 步)
**Step 1 · 确认资本开支确定性** 这个主题的钱为什么"一定"会花?规模、周期多长?需求确定性 > 个股故事性。先归类:**Bottleneck(瓶颈)/ Disruption(颠覆)/ Evolution(演进)**?(本 skill 主攻 Bottleneck)
- **标明需求来源**:政府/国防(节奏慢、看订单与预算周期)还是商业(超大规模厂商 capex、节奏快)?二者估值锚与择时节奏不同,Step 6/7 据此调整。
**Step 2 · 逆向拆链 + 广扫纪律(5 层产业链 + 跨主题 root + 可选第 6 层独有 IP)** 列出 **5 层** 从下游到上游:**下游对照 → 中游系统 → 中游器件 → 上游设备 → 上游材料/代工**。**跳过人人都盯的下游龙头**。
- **必做"广扫供应商"**:除最上游材料层外,单独再搜一轮该主题的子系统/器件/卖铲子供应商,否则漏 ④ 原型标的。〔教训:商业航天漏 Redwire → lessons.md#redwire〕
- **广扫颗粒度**:覆盖 5 层,每层至少 2-3 个标的。**广扫不到位 ≠ 板块没机会** —— 停手前先问"是真没机会,还是没扫够"。〔教训:800VDC 6 只→15 只才挖出 STM → lessons.md#breadth-stm〕
- **跨主题 root 节点**:**ARM / CDNS / SNPS 放在 chain-viz 上方独立的"跨主题 root"小卡片,显示一次,不画进每个主题的产业链层**(三家是所有芯片设计驱动主题共用的根)。〔教训:7 份报告 IP/EDA 层 100% 重复 → lessons.md#ip-eda-root〕
<div class="cross-theme-root">
<span class="label">跨主题 root(芯片设计驱动主题共用)</span>
ARM ⭐⭐ + CDNS ⭐⭐ + SNPS ⭐⭐
</div>其 ⭐⭐ 状态来自 `tracking/cross_theme_index_snapshot.csv`,不每个主题重画。
- **可选第 6 层 · 主题独有 IP/EDA 玩家**(仅当主题真有独立玩家才画):
- **自动驾驶 L4** → 真有独立 IP:**MBLY**(Mobileye 授权给 BMW/Audi/Geely)— 必须画
- **个人 AI PC** → ARM 在 PC 是**真单源**(Apple M + Qualcomm Snapdragon X + AMD AI300)— 保留画在产业链顶层 + 标本主题真单源
- **AI Agent / 物理 AI / AMR** → 无独立 IP 玩家 → 不画第 6 层,root section 提一次即可
- **MLCC / 800VDC / 商业航天** → 不依赖芯片设计,完全跳过 IP/EDA
- **凑数禁令**:没有真独立玩家的主题不强制画第 6 层 —— IP/EDA 是 optional 不是 mandatory。
- **A 穷尽性 · 已知玩家全集**:每个主题开扫前**先列已知玩家全集**(全球+全市场,涵盖上市/私有/被并购),逐一显式标记 `covered` / `private`(跳过+原因)/ `acquired`(标合并实体)/ `delisted` / `untracked`(EODHD/yfinance 无数据)。**不允许"默认遗漏"**,不允许"我扫了 5 家就够了"。写在报告底部"已知玩家全集 audit"块。〔示例:L4 LiDAR 全集枚举 → lessons.md#player-census〕
- **A+ ETF audit(强制工具化兜底)**:**A 项"凭记忆列全集"不够,会漏主仓玩家。** 每个新主题开 forward_picks 扫描前,**必跑** `python scripts/theme_etf_coverage.py --etfs <ETF1>,<ETF2>,... --theme "<主题名>"` → 拉主题 ETF top 25 持仓、与 forward_picks diff、输出 `tracking/_etf_audit_<theme>.json`。对每只 new candidate 人工判定产业链层 + 原型 + 是否纳入;**top 25 持仓 100% 必 audit**(主仓占权重 >70%,小权重 me-too 可跳)。〔教训:Dogfood #10 漏 PANW/CRWD 等 34 只、covered 率 50% → lessons.md#etf-audit〕
- **主题 ETF 映射**:
- AI Agent / SaaS / Software → `IGV` + `WCLD` + `AIQ`
- 网络安全 → `CIBR` + `BUG` + `HACK`
- 半导体 → `SOXX` + `SMH` + `PSI`
- AI 算力/GPU → `AIQ` + `BOTZ`
- 网络/算力基础设施 → `WCLD` + `CLOU` + `SKYY`
- 物理 AI 机器人 → `BOTZ` + `ROBO` + `IRBO`
- 自动驾驶 → `DRIV` + `IDRV`
- 电网/能源 → `GRID` + `XLU` + `URNM`
- 清洁能源/电气化 → `ICLN` + `LIT` + `KARS`
- 国防/航天 → `ITA` + `XAR` + `UFO`
- 5G / 通信 → `FIVG` + `NXTG`
- 数据中心 / 算力 → `DTCR` + `CLOU` + `SRVR`
- **报告 audit section 必列**:① ETF 清单 ② ETF top 持仓全集数 ③ covered/private/跳过原因逐一分类 ④ ETF coverage %。**< 80% 必须诚实标"穷尽性纪律未达标"**。
- 注:A 股无 stockanalysis ETF 持仓数据 → 改用申万行业指数成分 + 人工列已知玩家全集。
- **A++ ticker 双向验证(强制)**:**广扫前用 EODHD search 反查"代码 → 公司名"双向验证**——A 项穷尽 + A+ ETF audit 都不防"错标"(标对公司名但 ticker 指向另一家)。每只候选必验:
curl "https://eodhd.com/api/search/<COMPANY_NAME>?api_token=$KEY&fmt=json" curl "https://eodhd.com/api/search/<TICKER>?api_token=$KEY&fmt=json"
→ 两次返回的 `Name` 必须一致。**禁止凭记忆写 ticker**,哪怕"我很确定"也必须 search。**A 股尤其踩坑**:6(沪市)/ 0(深市)/ 3(创业板)/ 688(科创板)/ 002(中小板)代码段交叉,同 5 位数字可能是不同公司。工具:`scripts/ticker_truth.py`(ground-truth 库)+ `scripts/verify_tickers.py`(git pre-commit hook 自动拦截)。**验证通过才写入 _scan_*.py。** 〔教训:绿的谐波/信质电机/ASEKY/EHGO 共 4 个真错位 → lessons.md#ticker-verify〕
- **公司状态检查(写判定前必查)**:每只候选(含链路图非候选节点)搜一次当前状态——收购/被收购/私有化/**IPO 上市**/退市/破产重组(搜 `<公司名> acquisition/IPO/merger`)。收购中的标的 🔴 剔除(被收购反向验证选股方向、记进报告当佐证)。**"私有/不可投"是状态性断言,LLM 的"某某私有"先验是训练快照、极易过期,必须当场搜证**,状态写进 company_desc 带日期的 status 字段。〔教训:SkyWater 被 IonQ 收购 + SpaceX IPO 当天报告还标"私有" → lessons.md#company-status〕
- **私有公司诚实跳过**:每个主题都有"真单源但私有/子部门"的标的。**禁止为凑标的硬塞不纯/不可投的公司**;在报告里显式列"已识别但跳过的瓶颈 + 原因"(本身就是高密度信号)。例:物理 AI 六维力传感器(坤维/字节灵犀/宇立全私)、鼎智科技(北交所 EODHD 不支持)→ 跳过。坦诚标"无干净纯 play"比硬凑更有价值。
- **主题边界声明**:跑大类主题(物理 AI / AI 算力 / 能源转型)时,**报告顶部必须界定本期边界** —— 大类下常有 3+ 个供应链差异显著的子领域,显式说"本期聚焦 X,其他子领域作为独立专题分批跑"。命名:`<大类>_<子领域>_完整分析报告.html`。〔教训:物理 AI v1 默认=人形 → lessons.md#theme-scope〕
**Step 3 · 对每层套「9 大瓶颈原型」**(详见 `reference/supply-chain-and-archetypes.md` Part D): ①上游材料/衬底垄断 ②单一来源卡脖子 ③产能售罄/已锁定=去风险 ④进每个设计的BOM/普适 ⑤估值对标套利 ⑥测试/设备瓶颈 ⑦冷门/前机构 ⑧巨头依赖护城河 ⑨宏观二阶/错杀。 命中原型越多的环节,越是猎区。
**Step 4 · 产出候选(偏上游、冷门、小市值)** 每个环节挑 1-3 家最纯正的公司。优先:小市值、卖方覆盖少、散户没听过(原型⑦)。用 EODHD search 校验代码与上市地(含海外,见 A++ 纪律)。
- **别只押"最上游材料咽喉(①②)"**:也纳入"普适器件/卖铲子(④)"——两档都列,避免选股偏科。
- **最纯的瓶颈常在海外/OTC**(如 5N Plus 在 TSX、Umicore 在布鲁塞尔)→ 主动去海外交易所找,注明流动性/准入限制。
- **若瓶颈落在私有公司或大公司的一个部门** → 必须给"暴露路径":买含该业务的母公司(说明稀释/纯度),或如实标"无干净纯 play、跳过"。不硬凑不纯标的充数。
- **跨主题节点检查(强制)**:产出候选后立即跑 `python tracking/cross_theme_scan.py`,与历史 `forward_picks.csv` 对照:
- 同 symbol 跨
Given an investment theme, this skill reverse-maps the supply chain to surface overlooked upstream "bottleneck" stocks — distilled from the publicly shared methodology of X/Twitter trader Serenity (@aleabitoreddit).

