mcpField
S
serenity-bottleneck-hunter

serenity-bottleneck-hunter

github.com/mrjie7205生産性41142 回インストール4 週間前に更新
リポジトリ

serenity-bottleneck-hunter について

Serenity Bottleneck Hunterは、投資テーマから上流のボトルネック候補株を分析するリサーチスキルです。サプライチェーンの分解、候補選定、データ検証を経て、目標価格と期間を含むHTMLレポートを作成します。

主な機能

  1. 015層構造でサプライチェーンを分析
  2. 02ボトルネック企業や供給企業を選定
  3. 03業界プレイヤーとETF保有銘柄を監査
  4. 04ティッカー、企業状況、株価を検証
  5. 05HTML調査レポートを生成・検証

活用シーン

  1. 01投資テーマから上流の候補企業を探す
  2. 02サプライチェーン各段階のボトルネックを比較
  3. 03価格モメンタムから参入時期を評価
  4. 04リスクと無効化条件を含むレポートを作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mrjie7205/serenity-bottleneck-hunter --skill serenity-bottleneck-hunter

インストール後、Claude Code で/serenity-bottleneck-hunterを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.env.example
.gitignore
README.md
LICENSE
agents/
openai.yaml
reference/
example_commercial_space.md
TICKER_HYGIENE.md
methodology.md
glossary.md
supply-chain-and-archetypes.md
report_template.html
lessons.md
company_desc.md
ticker_truth.csv
scripts/
install_pre_commit.ps1
init_ticker_truth.py
render_report.py
theme_etf_coverage.py
price.py
ticker_truth.py
verify_tickers.py
verify_report.py
tracking/
_full_scan.py
_scan_AIAgent_v1.json
_scan_AIAgent_CN_v1.json
_scan_AMR_v2.json
_scan_agent.py
cross_theme_index_snapshot.csv
_scan_agent_cn.py
check_desc_freshness.py

詳細

Serenity Bottleneck Hunter

把一个投资主题转成一份被忽视的上游瓶颈候选股名单 + 论证 + 目标价/时间框架。核心不是抄 Serenity 的票,而是复用他的逻辑去选新股。

📓 每条纪律是怎么用一次真实翻车换来的,见 reference/lessons.md。本文件只讲"做什么";完整事故复盘在那边,用 〔… → lessons.md#锚点〕 指过去。

何时用

  • 用户给出一个主题/趋势,想要"沿这个方向能买什么"。
  • 用户给一个上游环节/材料,想找对应的瓶颈公司。
  • ❌ 不要用于:已知标的的纯财务分析、抄作业式"他买了啥"。

核心理念

逆向拆解供应链,在机构与分析师发现之前,埋伏那个无人察觉的上游瓶颈,用催化剂兑现。 alpha 来自"早于机构发现主题",不是抄到最低点。


工作流(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 の上位 25 保有銘柄を取得して forward_picks と差分を取り、tracking/_etf_audit_<theme>.json を出力します。新規候補はそれぞれ、産業チェーン上の階層+原型+採用するかどうかを人手で判定します。上位 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 セクションに必ず記載:① ETF の一覧 ② ETF 上位保有銘柄の総数 ③ covered/private/スキップの理由を一社ずつ分類 ④ ETF coverage %。< 80%の場合は、「網羅性の規律を達成できていない」と正直に記載します。
    • 注:A 株には stockanalysis の ETF 保有銘柄データがないため、申万業種指数の構成銘柄を使い、既知プレイヤーを手作業で全件列挙します。
  • A++ ティッカーの双方向検証(必須):広範なスキャンの前に、EODHD search で「コード → 会社名」を検索して双方向検証します。A 項の網羅性と A+ ETF audit のどちらでも「誤った銘柄表記」(会社名は正しいが、ティッカーが別の会社を指すこと)は防げません。候補は一社ずつ必ず検証します。

    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"
    

    → 2 回の検索で返された Name が一致している必要があります。記憶を頼りにティッカーを書くことは禁止です。「絶対に合っている」と確信していても、必ず 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 の「某社は非公開」という事前知識は学習時点のスナップショットであり、古くなっている可能性が非常に高いため、その場で証拠を検索する必要があります。ステータスは日付付きの status フィールドとして company_desc に記載します。〔教訓:SkyWater が IonQ に買収されたこと、さらに SpaceX が IPO した当日に、レポートではまだ「非公開」と記載 → lessons.md#company-status〕

  • 非公開企業は正直にスキップ:どのテーマにも「真の単一供給源だが非公開/大企業の一部門」という銘柄があります。銘柄を無理にそろえるために、事業の純度が低い企業や投資できない企業を押し込むことは禁止です。レポートに「特定済みだがスキップしたボトルネック+理由」を明記します(それ自体が高密度なシグナルです)。例:フィジカル AI の 6 軸力センサー(坤維/字節霊犀/宇立はすべて非公開)、鼎智科技(北交所で EODHD に非対応)→ スキップ。無理に候補をそろえるより、「投資可能な純粋銘柄はない」と正直に記載する方が価値があります。

  • テーマの境界を明記:大分類テーマ(フィジカル 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 はブリュッセル)→ 海外取引所も積極的に調査し、流動性/投資アクセスの制限を明記します。
  • ボトルネックが非公開企業、または大企業の一部門にある場合 → 必ず「エクスポージャーを得る方法」を提示します。該当事業を含む親会社を購入する方法(希薄化度/事業純度を説明)を示すか、正直に「投資可能な純粋銘柄はなく、スキップ」と記載します。事業純度の低い銘柄を数合わせのために加えることはしません。
  • テーマ横断ノードの確認(必須):候補の選定後、ただちに python tracking/cross_theme_scan.py を実行し、過去の forward_picks.csv と照合します。
    • 同一 symbol が 2 つ以上のテーマに登場 = ⭐、3 つ以上 = ⭐⭐(希少な、真の「非線形な価格決定力」)。
    • 階層フィルターで大企業による薄まりを防ぎ、誤判定を避ける:中流のシステム/下流の比較対象/逆の参照対象は数えません。中流のつるはしを売る企業は、④の汎用性がある場合にのみ数えます。
    • ⭐ ノードは Step 5 の「機関投資家の未注目度」ゲートで自動的に加点します(複数の設備投資サイクルが同時に需要を生み、機関投資家のカバレッジがあっても mispriced の可能性があるため)。
    • eodhd_symbol の規則:米国株には必ず .US のサフィックスを付けます。付けないと、スクリプトが同じ銘柄を照合できません。〔初回の事例:AEHR が複数テーマに該当 → lessons.md#cross-theme-aehr〕

Step 5 · 3 つのゲートを一つずつ検証

  • 🔒 真のボトルネック:生産能力に制約がある/価格決定力がある/短期的に回避できない(「他社が 1~2 年以内に回避できるか?」)
  • 👁️ 機関投資家の未注目度:アナリストレポートが少ない、機関投資家の保有比率が低い、時価総額が小さい。⭐ テーマ横断ノードは自動的に加点
  • 💰 割安+リスク低減済み:バリュエーションが抑えられている+生産能力/受注が確保済み、または十分な現金がある

Step 6 · エントリーのタイミング(以下の 2 つのモードを参照し、取り違えないでください)

Step 7 · レポートを作成(単一ファイルの HTML。以下の出力テンプレート+reference/report_template.html を使用し、目標株価+時間軸+逆方向の調査+反証条件+リスク+免責事項を含める)→ 納品前に必ず scripts/verify_report.py による契約チェックに合格してください(以下の「納品契約」を参照)。


入场时机:两套模式(经价格回测校准,勿混用)

模式适用触发
A 主题瓶颈长线(本 skill 默认)主题里的上游瓶颈股主题刚点燃 + 早期上行/突破 + 仍前机构就进,主动放弃抄底。等回调=踏空。
B 波段超跌反弹成熟大票的非实质性错杀买恐慌回调(增发/稀释类实质利空则回避)

回测依据(11 只光子学标的):首 call 多在前 6 月区间 86%-237% 高位入场,之后 2-6 个月中位 ~+277%。→ 早于主题、容忍不抄底才是 alpha 来源(注:此为逻辑自洽校准,非业绩,见"验证状态")。

判定二轴(2026-06-21 核心修正):水位 ≠ 判定。 高水位(rng 高、贴顶)不再自动 = 🟡——单看水位是「均值回归」伪装成「动量」,会系统性把热门板块的真龙头判成"别追"、错过最大涨幅(闪迪式 melt-up)。判定必须叠加第二轴:这波涨基本面跟不跟得上——price.py 的 valuation() 出 forward P/E / PEG / 盈利&营收增速,扫描算 RS-rank(同主题内 3 月动量排名),Step 1 出周期 runway(早/中/晚)。render_report 标尺自动显示第二轴 + 给 hint:

基本面跟得上(forward P/E 压缩 / PEG≤2 / 盈利增速≥涨幅 / RS 领头 / 周期早)跟不上(纯重估 / forward P/E 扩张 / 周期晚 / RS 落后)
高水位(贴顶)🟢 贵但对——动量龙头,Mode A 持有/可加,别 fade🔴 真贴顶——再涨是博傻,回避
低水位🟢 经典埋伏(Mode A 早 / Mode B 超跌)🔴 落后有原因,排除

A股 forward/PEG 常缺(yfinance 估计覆盖薄)→ 退化用"盈利/营收增速 vs 涨幅"+ RS;标尺显示"—"即数据缺、不强判。limit:顶 vs 续涨本质难判,二轴只 tilt 概率、不根治,新规则对不对靠 L1 向前跟踪校准。〔教训:水位标尺均值回归伪装动量、系统性反龙头 → lessons.md#water-level-2axis〕

价格纪律(硬规则):

  • 强制用 scripts/price.py 拉真实价格(provider 自动回退:EODHD(EODHD_API_KEY)→ yfinance),输出 6 月区间位置、距高点、近 1/3 月动量、stage 标签。严禁 WebSearch 抓价格、严禁凭印象猜 early/extended——猜测 = 流程错误。海外股若 yfinance 拿不到,让用户提供 EODHD key 或换可解析代码重跑,不降级为定性。
  • 批量拉价必须走 price.py 接口:python -c "from scripts.price import analyze; print(analyze('6324.T'))" 或脚本里 from scripts.price import fetch_history。禁止 inline Invoke-RestMethod 调 EODHD(绕过 yfinance fallback)。〔教训:物理 AI v1 漏 4 只日股 → lessons.md#price-interface〕
  • 报告所有数字 100% 来自 price.py 输出,禁止手填/猜数:批量 scan 脚本输出必含全 9 字段(last / range_pos_6mo_pct / pct_off_6mo_high / ret_1m_pct / ret_3m_pct / above_sma50 / stage + high/low_6mo)+ 保留完整 log;写入 forward_picks 前逐字段 verify。〔教训:手填 9 个 off% 全错(HSAI -89% 真 -35.6%)→ lessons.md#hand-filled〕

输出模板(HTML)

交付物 = 一个自包含 HTML 文件(单文件、样式内联,仅 Google Fonts 可外链),写到 reports/<主题>_分析报告.html。骨架与配色复用 reference/report_template.html。生成后 Start-Process <file>.html(Win)/ open(mac)打开。

生成方式(硬规则):报告必须用 scripts/render_report.py 渲染——agent 只写一个薄「主题 SPEC」(纯数据:候选 / §A§B / 产业链节点+依赖边 / 文字;示例 tracking/_gen_mlcc_report.py),引擎负责:克隆最近一份合格报告的完整外壳(CSS + reveal/术语/chain-draw 脚本)、拉 scan 价(零手填)、渲染真 chain-viz(.cnode+.edge-list 喂 layoutChain 自动绘制判瓶颈)、水位标尺三价、§A 红队 + §B 证伪、写 forward_picks。严禁绕过引擎手搓 HTML / 画静态简版 chain-viz——引擎是唯一路,产出过 verify_report by construction。因预算/复杂度砍任何既定标准,当场说明、不把缩水版当完整品交。〔教训:契约≠保真,把"过自己造的闸"当"做好了" → lessons.md#chain-viz-fidelity〕

report_template.html 已内置的模板特征(生成时必用):① 本次行动点——头条位最多 2 张行动卡(设什么警报 / 什么条件做什么),无视排序置顶,读者 10 秒拿到本次唯一要做的事;② 水位标尺——动量用 贴顶/高位/中位/低位/贴底 + 距高点% + 1m/3m 的人话化标尺,且标尺两端标 6 个月最低/最高价、游标上方标现价(6 月低/高/现价三价,币种按交易所后缀);③ 产业链双规则瓶颈判定——漏斗型(入度≥2 出度≤1,金边)+ 枢纽型(入度≥2 出度≥2,多对多最难绕开,酒红边);④ 判定史——同标的历史判定(旧价→今价 ±%、对错复盘),体现框架连续性与诚实度;⑤ §A 红队 + §B 证伪——每候选折叠红队、🟢 带证伪(本次 Tier-1 新增,见上)。

交付契约(scripts/verify_report.py,交付前必过)

报告写完、宣布完成之前必跑一次,把"漏交付/漏状态/漏入库"挡在交付前:

EODHD_API_KEY=… python scripts/verify_report.py reports/<主题>_分析报告.html

它查契约(不查思路):区块齐全(chain-viz / leaderboard / 行动点 / 三道闸 / 免责)· 每候选有 §A、🟢 有 §B · 标尺三价齐 · ticker 过 ground-truth · 现价/6月低/高 逐字段对账 scan JSON(防手填/过期)· 状态断言带日期(过期 30 天提醒)· 每判定入轨 forward_picks 且 🟢 的 invalidation 非空 · 无占位符残留 · <details> 开合平衡。有【拦】先修再交付,只剩【警】方可交付。

报告必含区块(对应 7 步,所有项 hard rule 不允许跳过):

  1. 页眉 + 一句话结论:主题 | 资本开支确定性 | 类别 | 数据截止日 | 价格源 | 免责。
  2. 30 秒看懂这个主题(150-220 字大白话,hero 之后、Step 1 之前,class .thirty-sec)。
  3. Step1 资本开支确定性:为什么钱一定花 + 需求来源。
  4. 核心发现 callout:最该被先看到的那句(瓶颈在哪层、有没有干净纯 play)。
  5. ⚠ Step2 逆向拆链(网状视图)— 强制必含:每个子主题供应链都不同,禁止以"前面画过类似的"为由跳过。.chain-viz 容器 + 5 层 .chain-layer(+ 可选第 6 层独有 IP),跨主题 root 卡片在上方。每层 .cnode[data-id=...](data-id = forward_picks 一致的 eodhd_symbol,美股带 .US);供货关系写 .edge-list(data-from/to/weight 三档),JS 画 SVG + 判瓶颈点。跨主题节点加 <span class="star-inline">⭐</span>。〔教训:L4/AMR 漏此区块 → lessons.md#chain-viz-required〕
  6. 候选 leaderboard(与 forward_picks 入库解耦):
    • leaderboard 显示 top 15-20(按决策相关性:🟢 优先、⭐ 节点优先、stage 健康优先;超出折叠成"其他 N 只 → forward_picks.csv")。
    • forward_picks 入库无上限:广扫到的 🟢🟡🔴 全入库,不允许"为视觉舒服而漏入库"。
    • 上游咽喉(①②③) 与 中游卖铲子(④⑧) 分两档,按 stage 排序(early/basing-momentum 在前)。每只必含字段:
      • 代码+现价 · 档位/是什么 · 瓶颈逻辑(命中原型#) · 估值/增长 + 稀释红旗(亏损+ATM/增发+现金跑道短=标红) · 动量条(6 月区间位置 + 1m/3m,颜色=stage) · 三档判定 🟢/🟡/🔴 · 目标价/时间框架 · .why 块(20-40 字人话) · 风险。
      • 🟢/🟡 必含「反向研究」块(见下 Tier-1 §A) · 🟢 必含「证伪条件」块(见下 Tier-1 §B) · 🟡 必含重估触发条件。
  7. Step5 三道闸门:🔒真瓶颈 / 👁️前机构 / 💰便宜去风险,逐关诚实打分(过/半过/不过)。
  8. 跨主题信号区块:当前主题命中的 ⭐ 节点(来自 cross_theme_index_snapshot.csv)。
  9. 已知玩家全集 audit 块:列全球+全市场已知玩家,显式标 covered/private/acquired/delisted/untracked。
  10. 落地结论 + 数据备注 + 免责页脚。
  11. 底部 glossary 折叠速查表(JS 自动从 <abbr> 抽取)。
Tier-1 §A · 反向研究 / 红队(🟢🟡 候选强制,缺失或敷衍 = 报告不合格)

每个 🟢/🟡 候选必带一段红队,不许写"风险:估值高"这种套话。四问 + 一句最大杀点:

反向研究 · 杀死这个候选的最短路径
① 为什么可能不是真瓶颈?   → 谁能绕过 / 替代方案进度
② 瓶颈为什么可能不变现?   → 收入纯度 X% / 下游议价能力 / 毛利能否扩
③ 市场是否已定价?         → 【强制引用 price.py 的 off-high / 1m / 3m 数字对账,不许空谈】
④ 有没有更优替代?         → 必须点名一个对比标的 XXX.XX(且过 price.py / ticker 验证)
最大杀点(一句):________ (必须区别于"估值高/竞争加剧"的通用风险)

牙齿:③ 必须引用我们已拉到的 9 字段数字(off/1m/3m 就在 scan JSON 里,逼对账);④ 必须点名一个真实存在、可验证的对比 ticker。

Tier-1 §B · 证伪条件(🟢 候选强制)

每个 🟢 必带 2-4 条具体可检验的"什么会证明我错了",至少一条是价格/stage 机器可读(供 score_tracker 自动监控):

证伪条件(满足任一即承认判断错):
· 价格/stage:跌破 ¥X(entry)且 1m 转负        ← 机器可检,写进 forward_picks 的 invalidation 列
· 基本面:下季度订单/backlog 未随主题增长
· 估值:涨到 PS > 行业 +1σ 但毛利未扩

牙齿 + 闭环接口:至少一条要能落成机器规则(stop 价 / stage 失效),写进 forward_picks.csv 的 invalidation 列;score_tracker 重拉价时自动检查"证伪触发没有"。没有证伪条件的 🟢 = 故事不是投资假设。

  • 目标价/时间框架:给情景区间 + 时间框。⚠️ 基准率随主题而变,切勿套用光子学数字:高 beta 快速点燃(光子学 2-6 月 +1501000%)vs 慢周期政府驱动(航天/电网 1-3 年 +30150%)完全不同。按当前主题 beta 与催化剂节奏设定,显式标"情景非承诺、有幸存者偏差"。
  • 三档判定:每只必标 🟢/🟡/🔴(详见 methodology.md §7)。
    • 🟡 必填重估触发条件(价格点/财报指标/公司动作/政策事件)。
    • 🔴 极度克制:只用于商业模式作假/欺诈/业务死亡/个人原则。严禁"历史事件式硬排除"——"曾经重组/增发过"是过期信息,"1m 涨太多"是 stage 问题(降 🟡 等回调)。例:$WOLF 重组后是 NewCo,业务逻辑可独立评估 → 🟡 观望 + trigger,不永久排除。
  • 可读性纪律:语义化三档配色(🟢green/🟡amber/🔴red)、动量条让"谁已抛物线"一眼可见、清爽留白。
  • 术语友好度:① 顶部"30 秒看懂"块;② 每个 🟢/🟡 候选加 .why 一行(20-40 字人话);③ 专业缩写首次出现用 <abbr title="中文解释">缩写</abbr>,来源 reference/glossary.md(120+ 条),新术语先 append 再用;④ 底部 <details class="glossary-section"> 折叠速查表,JS 自动从 <abbr> 抽取。

页脚必带:⚠️ 仅供研究教育,非投资建议;估值为网页研究近似值需复核;微盘/诉讼/海外标的风险极高。


数据来源与边界

  • 价格/动量(择时):统一走 scripts/price.py,自动回退 ① EODHD(EODHD_API_KEY)→ ② yfinance → ③ 都失败=报错退出。Key 从环境变量读、不硬编码。WebSearch 仅用于公司基本面/定性研究,不用于抓价格。
  • EODHD 取不到:fundamentals(估值/增长/毛利率/市值)、screener、财报日历 → 用网页研究逐只补。
  • 瓶颈/单源/产能/客户等定性判断:靠财报+行业资料+新闻研究。

参考文件

  • reference/lessons.md —— 翻车档案 / 纪律的由来(每条纪律对应一次真实事故,SKILL.md 用 〔… → lessons.md#锚点〕 指向)
  • reference/methodology.md —— 完整方法论(理念、筛选清单、两套择时、回避清单、风险)
  • reference/supply-chain-and-archetypes.md —— 元框架、产业链速查表、Part D 9 大瓶颈原型库、EODHD 数据映射
  • reference/report_template.html —— HTML 报告骨架 + 配色模板
  • scripts/render_report.py —— 报告统一渲染引擎(克隆合格报告外壳 + 数据驱动渲染真 chain-viz / 标尺三价 / §A§B / forward_picks;agent 只写薄主题 SPEC,示例 tracking/_gen_mlcc_report.py)
  • scripts/verify_report.py —— 交付契约 linter(报告生成后必跑;查区块齐全 / §A§B / 标尺三价 / 价格对账 scan / 入轨 forward_picks / 真 chain-viz / 揭示类脚本 / 占位符,有【拦】先修再交付)
  • reference/example_commercial_space.md —— worked example(商业航天),示范分析内容与颗粒度
  • reference/glossary.md —— 术语库(120+ 条,LLM 自动 enrich);报告 <abbr> 注释来源
  • reference/company_desc.md —— 公司业务描述库:只存 business(主营/产业链位置/技术/客户),严禁含 price/stage/估值等动态数据。格式 - **SYM.EX** [YYYY-MM-DD] = 业务描述,每条带 last_updated 时间戳。
    • 拆分:🟢 business(本文件 + .cnode[data-desc=],带时间戳)/ 🔴 status(.cnode[data-status=],price/stage,每次重写带 [YYYY-MM-DD])。
    • 90 天 freshness:用 data-desc 前查 last_updated,≤90 天直接复用,>90 天重新评估战略漂移(有变更新+bump,无变只 bump)。工具 tracking/check_desc_freshness.py。〔三次迭代史 → lessons.md#company-desc-evolution〕
  • reference/ticker_truth.csv + reference/TICKER_HYGIENE.md —— ticker ground-truth 库 + L1/L2/L3 防御文档
  • tracking/forward_picks.csv —— 向前(样本外)跟踪表(带 invalidation 证伪列)
  • tracking/score_tracker.py + tracking/theme_benchmark.csv —— Alpha 打分(🟢-vs-🔴 内部对照为主、vs 主题 ETF/大盘为辅)
  • tracking/cross_theme_scan.py + tracking/cross_theme_index_snapshot.csv —— 跨主题节点扫描(Step 4 末尾强制跑)+ 快照

验证状态(诚实说明)

  • 逻辑自洽性(已做,非业绩回测):套到 Serenity 研究过的"AI 光子学"能重建其名单(AXTI/SIVE/LITE/TSEM/SOI/IQE/AEHR…);套到他没碰过的"AI 电力散热"能独立挖出 $CLF(GOES 电工钢独家)、$CC(浸没冷却液单源);"商业航天"挖出 $VNP/5N+($MTRN)。→ "拆链 + 原型"逻辑能指向真实瓶颈公司。
  • ⚠️ 这不是业绩回测:此前"光子学首 call 后 +X%"存在选股循环论证(用已知赢家倒推)、幸存者偏差、峰值未来函数,不能当收益预期。
  • 唯一可信的是向前(样本外)验证 + Alpha:对当下产出的候选,记录"建议日 + 当时价 + 事先定死的进出场/证伪规则",日后用 score_tracker 重拉价。关键纪律:量 Alpha = 标的收益 − 主题 ETF 同期收益(牛市里随便选上游小票也涨,raw return 看不出选股有没有 alpha);最硬的检验是 🟢 篮子 vs 🔴 篮子内部对照(同主题 beta 对消,差额 = 纯选股能力)。结论出来前,输出只当研究线索,不是业绩。每次出新候选都追加进 forward_picks.csv。

コメント