今日やったこと(要約)
朝、AVGO の Q2 FY26 決算(6/4 AMC)が beat-monitoring の /beat-monitoring/AVGO ページに反映されていないのを画面で見つけた。手で AVGO.json を直す前に、まず /make-diary の中から決算発表があった銘柄を拾って自動でチェーン更新する仕組みに変えた。流れで HOOD と TSM の2銘柄も追加し、最後に「構造転換済み / ビート継続成長期待 / 継続ウォッチ」の3カテゴリを個別ページのヘッダーにバッジ表示した。
1. AVGO Q2 FY26 を手で当ててから自動化に倒した
AVGO の Q2 FY26 は 6/4 引け後の発表。朝開いたページの最新行はまだ Q1 FY26(3/4発表)のままだった。「/check-earnings でコンセンサスは取れているのに、tripleBeat/AVGO.json の四半期行が伸びていない」のがズレ。
最初に /update-ticker-quarter AVGO 相当の手順を Claude Code に踏ませて Q2 FY26 行を入れた。
- 売上 / EPS / 次Q売上ガイドは x-search で複数投稿(@ESB36121、@DTechtrends ほか)から数値を拾わせた
reportCloseは Koyfin OHLCV の 2026-06-04 RTH 終値 $418.91nextCloseは AH 速報の -13% をいったん暫定値で入れ、tableNotesに「6/5 RTH 終値確定後に更新」を明記- highlightQuarter を Q1 FY26 → Q2 FY26 へ切り替え
Q1 で示した「FY27 AI $100B 超」テーゼに対する答え合わせとして Q2 を文脈化する形になった。
AVGO はガイダンス据置で株価が落ちた → 通年ガイダンスのモニタリング欄を追加
「AVGO って通年ガイダンス出してないですよね、今回そこに上方修正がなかったから株価が落ちたんで、年間ガイダンスの修正有無をモニタリングするのは重要」とユーザーから指摘された。実際 Broadcom は総売上・EPS の通年ガイドは出さず、代わりに「AI 半導体の通年見通し(FY26 56B / FY27 100B 超)」を出す方式だった。
Q2 で売られた根本原因は「FY27 AI > $100B が 据え置き だった」こと。これは決算ビートだけ見ていると拾えない。
types.ts に汎用 aiOutlook フィールドを追加し、AVGO の Q1/Q2 に履歴を入れて、ticker ページ末尾に「AI半導体 長期見通しの変化」セクションを新設した。Q2 FY26 の FY27 据え置き はグレーバッジで明示し、上方修正なしを視覚的に拾えるようにした。
/update-ticker-quarter のコマンド md にも「aiOutlook の集め方」を追記して、次回からこの観点が抜けないようにした。
2. /make-diary 一発で他銘柄も自動更新される形に
ユーザーから「マイクロンの決算が6月末。/make-diary を1回叩けば MU も自動で同じように修正される状態にしてほしい」と指示が出た。
.claude/commands/make-diary.md の Step 11 と Step 12 の間に Step 11.5「beat-monitoring の自動チェーン更新」 を挿入した。中身はざっくり以下。
1. /check-earnings の Step 1(SEC EDGAR 8-K Item 2.02)でヒットした銘柄
+ Step 2 で |Avg Δ%| > 5% の銘柄
+ /earnings-beat-scan で記事化した銘柄
を和集合で候補化
2. apps/web/app/data/tripleBeat/<T>.json 登録済みフィルタを通す
3. 該当銘柄ごとに .claude/commands/update-ticker-quarter.md の
Step 1〜5 をインライン実行(B案)
4. AMC 発表で翌日 RTH 終値が未確定なら暫定値で入れ、tableNotes に
「翌日終値確定後に更新」を明記。翌朝の /make-diary で grep して再上書き
スラッシュコマンドを /make-diary 内から機械的にループ呼びするのは難しいので、B 案(コマンド md をその場で読んで実行)に倒した。並列化は将来の Dynamic Workflow 化で検討する(x-search のクオータ消費と tool-call-malformed 予防のため、今は直列)。
設計メモは memo/2026-06-05/beat-monitoring-auto-update-plan.md に残した。
3. HOOD(Robinhood)追加 — リサーチした結果 tier を変えた
/add-ticker HOOD で追加に入った。最初は「ビート継続・成長期待」で雛形を切ったが、サブエージェント3本を直近6四半期に並列で派遣してリサーチさせたら、
| Q | rev beat | eps beat |
|---|---|---|
| Q4 2025 | miss | beat |
| Q1 2026 | miss | miss |
直近2四半期で売上ミス、Q1 2026 は EPS もミスで株価も大幅反落、というデータが返ってきた。tier を「継続ウォッチ」に再判定。tickerMeta.ts の登録位置も差し替えた。
HOOD は次Q ガイダンスを出していないため、guidance は全四半期 null。tableNotes で明示。
Koyfin 接続 → KID 取得(eq-74v2z9) → Turso 取り込み → valuation.ts 再生成までで、HOOD カードの上段(price=88.33 / NTM EPS=2.30 / NTM PE=38.4x)が埋まった。
継続ウォッチ tier の個別ページは current price を非表示にする仕様(INTC でも同じ)。HOOD は仕様通り。
4. TSM(台湾セミコンダクター)追加 — NVDA 起点に揃えて 12Q に拡張
/add-ticker TSM で「ビート継続・成長期待」「直近8Q」で始めた。途中で「NVIDIA の AI 構造転換始点(2023/5/24 Q1 FY24 発表)と起点を揃えたい」と指示が入り、Q2 FY23(2023/7/20 発表)から 12四半期に拡張した。
セクターは TSM が純粋ファウンドリのため新規「半導体(ファウンドリ)」を追加した(既存「半導体(CPU/ファウンドリ)」は INTC 専用にする整理)。
Koyfin の ADR 比率補正
Koyfin 経由で NTM PE を Turso に取り込んだら 133.92x という異常値が出た。TSM ADR の妥当値は ~28x。Koyfin が普通株ベース USD(1 ADR = 5 普通株)でデータを返していたのが原因。
generate-beat-valuation.mjs に ADR 比率補正(TSM 1ADR=5普通株)を追加した。将来 ADR 銘柄が増えてもこの1箇所で対応できる形にしてある。補正後は price=444.92 / NTM EPS=16.61 / NTM PE=26.8x で妥当値に落ちた。
ガイドビート率を X-search で12Q分埋めた
「ビート率とかも知りたいんで、ちゃんと全部調べてください。X サーチして」と指示。
x-search スキルを Python スクリプトで4本並列起動し、各四半期の「当時の次Q売上ガイドコンセンサス(中央値)」を取りに行かせた。12Q 全てに guidance ビート率が入った。Q2 FY23(-3.3%)が唯一のミスで、AI 立ち上がり前の弱気ガイドだった、という構図が出てきた。
subtitle のハードコード「直近8四半期」
ticker ページのテンプレに subtitle が 直近8四半期 で hardcoded で残っており、TSM だけ 12四半期にしたら subtitle が嘘になった。データ長から動的に計算するようにして、MU=5Q、TSM=12Q、NVDA=12Q が全部正しく出るようにした。
5. 3カテゴリのタグを個別ページに可視化した
ユーザーから「MU は構造転換済みカテゴリに入っているが、ページに行っても今どのカテゴリに属しているのかわからない。3つ(構造転換済み / ビート継続成長期待 / 継続ウォッチ)を全部出して、現在属しているものだけハイライトしてほしい」と指示が出た。
[ticker].vue のヘッダーの h1 と subtitle の間に .tier-badges を追加。
- 3つの tier を常に表示
- 非アクティブはグレー文字、アクティブはブランド色
#ed1e79(マゼンタ)で白文字ハイライト - データソースは
TICKER_METAのtierを見て判定
最初 class="active tier-badge" の class 順序問題で grep が引っ掛からず、active が付いていないと誤判定しかけた。{{ currentTier }} を template に直書きしてデバッグ。CSS の .tier-badge.active は class 順序に依存しないので、実装は意図通り動いていた、というオチ。
MU(構造転換済み)と TSM(ビート継続・成長期待)の両ページで、属するカテゴリだけマゼンタにハイライトされる挙動を確認。
このバッジを出した意図
ticker 単体を見ていると「この銘柄が beat-monitoring の中でどういう位置づけなのか」が消える。3カテゴリは銘柄選定の前提(構造転換済み=構造転換が確認できた銘柄/ビート継続・成長期待=期待先行で売上ガイド上方修正を追う/継続ウォッチ=再加速の入口を待つ)なので、ticker ページに常設すると、毎朝の dev 確認や記事作成のときに迷子にならない。
学びメモ
- 「ガイダンス据置」もモニタリング対象: AVGO Q2 FY26 で FY27 AI > $100B が据え置きになっただけで株価が落ちた。決算ビートだけ見ていると拾えないので、
aiOutlookをtypes.tsに足して通年ガイドの履歴を JSON に残す形にした。次回 Q3 FY26 で +α が出れば変化が即見える - ADR 銘柄は補正を1箇所に集約: TSM で NTM PER が 133x と表示されたとき、データ取り込み層で補正するか表示層で補正するかで迷ったが、
generate-beat-valuation.mjsに集約した。次に ADR 銘柄を増やすときに同じ罠を踏まない - 直近Q数を hardcode しない: subtitle が「直近8四半期」で固定されていたせいで、TSM だけ 12Q にした瞬間に嘘表示になった。データ長から動的に計算する形に倒した
- 継続ウォッチ tier の意思を見える化: HOOD はリサーチ結果が「直近2Q売上ミス、EPS もミス」だったので、初期判定の「ビート継続・成長期待」を「継続ウォッチ」に下げた。サブエージェントに過去 6Q を並列リサーチさせる手順を
/add-tickerに組み込んでいたのが効いた
明日以降やること
-
turso-replicas/scripts/check_earnings.pyの--tickersデフォルトをMU,NVDA,SNDKからtickers.koyfin_kid登録済み全銘柄に変える(Step 11.5 の SEC EDGAR フックを全銘柄に効かせる前提) - 翌日 RTH 終値で
nextClose/changePctを上書きする--refresh-stockフラグを/update-ticker-quarterに追加 - 1〜2 週間運用して誤検知・抜けを観察してから C 案(Dynamic Workflows での並列銘柄処理)への移行を検討
- MU FY26 Q3 発表(6月末予定)で
/make-diary一発の自動反映を実地検証する