決算ビートモニタリングにAEHR・ASMLを追加 — /add-tickerを1日2本回して、ASMLのPER拡大に気づくまで
前日の決算ビート記事で拾ったAEHR Test Systemsを、朝いちで「モニタリングに追加しておいて」と指示するところから始めた。午後にはASMLも追加して、この日は/add-tickerを2本。どちらもリサーチ→JSON作成→tickerMeta登録→valuation生成→summaries再生成→表示確認まで崩れずに回った。そして後半、追加したばかりのASMLのチャートを眺めていて手が止まり、そこから出てきた疑問が公開記事1本になった。
朝: AEHRを/add-tickerで追加
/add-tickerで1銘柄追加するときの流れは、おおむねこう並んでいる。
- 重複チェック(tickerMeta・既存JSONに登録がないか)
- 決算ビート履歴のリサーチとJSON作成
- tickerMetaへの登録
- valuation(Koyfin / Turso経由)の生成
- summaries.tsの再生成
- devでの表示確認
AEHRでは未登録を確認させ、前日の記事とtickerMeta.ts・型定義・雛形JSONを読ませて、決算ビート履歴のJSONを組み立て、summaries.tsを再生成、というところまで一気に進んだ。個別ページがタイトル付きで開き(404なし)、indexカードまでスクロールして見た目を確認したところまでをChromeの実画面で見届けさせた。
途中の小さいつまずきはテストだった。18,519件中3件の失敗が出て、AEHR起因か既存問題かの切り分けに入ったが、最初は出力をtailで切ってしまって失敗テストを特定できず、該当テストを絞って再実行させることになった。全部流して末尾だけ見る、では切り分けにならない。
「ビートはすごいが、実績はいまいち」
追加が終わったチャートを見て、所感をそのままぶつけた。今回はコンセンサスを大幅にビートしているけれど、この会社、直近の実績はいまいちじゃないか。
返ってきた整理は、その読みを数字で裏づけるものだった。直近8四半期で売上ミスが5回。今回の+64%のビートは実績ではなくすべて先行きの話で、「実績で買われた」のではなく「受注簿で買われた」銘柄だという。ビート率の見出しだけでは銘柄の性格までは分からない、という感触を持ってセッションを閉じた。
午後: ASMLを追加 — リサーチの待ち時間にバリュエーションを先行
午後、同じ/add-tickerでASMLを投げた。今度の流れはこう進んだ。
- 重複チェック(grepのヒットはAMAT.jsonとtickerMetaのコメント内の言及のみ)
- KoyfinのKIDを検索APIで解決、SECのCIK確認、Tursoのtickersテーブルに登録
- estimatesと株価を取得してTursoへ取り込み
登録スクリプトを走らせたら前日のAEHR登録の残骸が残っていて、ASML用に上書きして再実行、という場面もあった。リサーチは2エージェントを並列で走らせ、その完了を待つ間にバリュエーション系(Track B)を先に終わらせる進め方。進捗報告に「あ、進行中ね。OK」と返し、「最後、表示確認してね」とだけ念押しして待った。
面白かったのは、ちょうどこの日がASMLのQ2 2026決算の発表日だったこと。リサーチのエージェントが「本日発表済み」として拾ってきた数字がそのまま最新行に入った。
- 売上€9.33B(+4.7%ビート)、EPS €7.59(+10.2%ビート)
- Q3ガイダンス€11–12B(コンセンサス€10.1B超え)
- FY2026通年ガイダンスを€36–40Bから€43–45Bへ引き上げ
時価総額もソース付きで$685Bと確認できたので、tickerMetaの値をそちらに合わせて微修正させた。
初のEUR建て銘柄だったので表記も確認させた。数値は自由書式の文字列で、SamsungのKRW表記(「86.1兆ウォン」)という前例があったので、「€9.33 B」「€7.59」の形式で揃えるだけで済んだ。summaries再生成は44銘柄。午後もテスト失敗3件が出てASML起因かを切り分けさせ、既存のテストパターンに合わせて€のケースを足させた。
チャートを見て引っかかった — PER、高くないか
完了報告のあと、8四半期並んだテーブルを眺めていて引っかかった。確かにガイダンスはビートしている。でも時系列で見ると、そんなに強いわけではない。なのに株価は伸びてきている。これ、PERがかなり高めになっていないか。
議論して出てきた整理はこうだった。
- ASMLはビート幅が小さく(平均+1.7%)、株価を動かしてきたのは四半期実績ではなく純受注と通年ガイダンスの改定
- 直近1年あまりの株価上昇の半分近くはEPS成長ではなくPER拡大で、フォワードPER 44.6xは自社の過去レンジと比べても高い水準
装置ビジネスは受注から納入まで1年以上かかり、四半期売上は受注残からほぼ決まっている。だからガイダンス精度が高く、ビート幅は原理的に小さい。beat-monitoringの「ビート率」列だけを追っても、この手の銘柄では材料にならない、という構造が見えた。
EUVはどこに入っているのか
もうひとつ、自分の理解を確かめたかった。HBMなどメモリ半導体の工場新設が発表されて実際に動き始めているからこそ、この辺りの数字が増えている、という理解で合っているか。
大筋合っていた。ただしメモリは2本柱の片方で、当日の決算でCEOが能力増強の理由に挙げたのは「AI起点の先端ロジックとメモリの両方の顧客の前倒し」だという。さらに突っ込んで、AIアクセラレーター向け増産とはつまりNVIDIAやAMD向けなのか、RubinとかBlackwellとかそういう系なのか、ASMLの機械はどのプロセスに入っているのか、と聞いた。答えは、NVIDIA/AMDがTSMCに製造委託しているGPUのロジックダイがまさにそれで、Blackwell/Rubinの先端ロジックと、HBM向け最先端DRAMの工場新設の両方がEUV露光装置の発注につながっている、というものだった。
面白かったので公開記事に
このあたりの議論が面白かったので、「記事にまとめて公開しといて」と指示した。書き始める前にファイル名(slug)だけ確認が来て、そこで合意してから本文へ。できあがったのがASML、決算日には下がるのに株価2倍 — ガイダンス改定銘柄のからくりとEUVの現在地。決算翌日の騰落率を8回分掛け合わせると約-26%なのに、同じ期間の株価は+107%という分解を軸に、PER拡大の中身とEUVの現在地を整理した内容になった。
記事の仕上げでは、honda-sakubunでの校閲に加えて、NTM EPS成長率は要約データの実数値から抽出させ、ドル金額をバッククォートで囲む既存記事の慣行にも合わせさせた。devでの表示確認中、Nuxt Contentの再インデックスと重なってリロードがエラー画面になる場面があったが、復帰後に修正箇所と記事末尾まで確認して完了。
学び
- /add-tickerの一気通貫フロー(リサーチ→JSON→tickerMeta→valuation→summaries→表示確認)が2銘柄連続で回った。リサーチをエージェント並列にして、待ち時間にバリュエーション系を先行させる順序が効く
- ビート率の数字だけでは銘柄の性格は分からない。AEHRは先行きの受注で、ASMLは受注とガイダンス改定で動く。どちらも「四半期実績のビート幅」の外に主因がある
- 通貨表記は自由書式の文字列にしてあったので、初のEUR銘柄も前例(KRW)に合わせるだけで済んだ。スキーマを固くしすぎなかったのが効いた形
- テスト失敗が出たら、まず新規追加起因か既存問題かを切り分ける。出力をtailで切ると失敗テストを特定できないので、該当テストを絞って再実行させる
- 決算発表当日に/add-tickerを回すと、発表されたばかりの数字がそのまま最新行に入る。モニタリングの起点としてはいちばん鮮度のいいタイミングだった
- チャートの並びに感じた違和感をそのまま質問にすると、議論が公開記事1本分まで伸びることがある。違和感を拾うのは自分の係、データで裏づけるのはAIの係