決算ビートモニタリングにソフトウェア枠を新設し、Snowflakeを追加した
朝のチェーンで拾った決算のうち、Snowflake の並びだけは後から何度も見返した。 売上のビートは +4.7% にとどまるのに、調整後EPSは +37.8% も上振れている。 売上が伸びているだけでなく、利益率のほうが効いている形に見えた。
モニタリングに入れておこう、と思った。 銘柄を1本足すだけの作業のつもりだった。 そこから、カテゴリを1つ新設して、既存の銘柄を1本引っ越しさせるところまで行った。
朝のチェーンが Koyfin のログイン切れで止まった
/make-diary を回して前日分の日記を作らせている途中で、決算チェーンが動かなくなった。
auth_token が消えていて、画面にも「Log In」が出ている。
Google SSO で入り直させたところ、アカウント選択の画面で止まった。
選択肢が1件しかなく、意図しないアカウントで新規登録される恐れがあった。
そこは自分でログインした。
チェーンは止めずに SEC EDGAR を先に走らせてもらっていたので、全体の進みは遅れずに済んだ。 ログインし直したあとの73銘柄バッチは、エラー0件で通った。 Turso への取り込みも ok=73 / ng=0 で終わっている。
同じチェーンの終盤で、Codex レビューが Reading additional input from stdin... のまま10分止まった。
過去の成功ログと突き合わせると、その行自体は正常な冒頭だった。
バックグラウンド実行で標準入力を待っているとみて、< /dev/null を付けて流し直したら通った。
同じところでまた止まると面倒なので、手順に1行足しておいてもらった。 スキル側だけでなく、make-diary の Step 15 に載っている同じコマンド例も揃えさせている。
何が +20% を動かしたのか
Snowflake は決算を受けて、時間外で +20% 動いていた。 EPS の上振れが効いたのだろう、と思っていた。 調べさせたら、そうではなかった。
主因は3点セットだった。 プロダクト売上が会社ガイダンス比で +5.1% 上振れたこと、通年の成長率ガイダンスが 31% から 36% へ上がったこと、非GAAP営業利益率のガイダンスが 13.5% から 14.5% へ同時に上がったことである。 EPS のビートは結果として付いてきたものだった。
通年のプロダクト売上ガイダンスも $5.84B から $6.07B へ引き上げている。 成長と採算を別々に振らず、同じ方向に揃えてきた。
プロダクト売上は前年同期比 +37% で、これで3四半期連続の加速になる。 NRR は 126% で、100万ドル超の顧客は +27% 増えた。 CEO は FY2028 の第4四半期に GAAP 黒字化と言っている。
途中で1件、訂正が入った。 非GAAP営業利益率の実績を 15.5% と聞いていた。 SEC の 8-K Exhibit 99.1 で確認させると、FY27Q2 の実績は 15.3%($236,985K ÷ $1,546.8M)だった。 15.5% は次の四半期のガイダンスのほうである。 会社ガイド 12.5% に対して +280bp の上振れ、という骨格は変わらない。
「モニタリングに入れてましたっけ」
数字を見たあとで、自分のモニタリングに登録済みかどうかを確認させた。 3か所とも未登録だった。
ここで1本足して終わりにはしなかった。
生成AIの初期フェーズでは、半導体のようなインフラ側が主役になる。 そこは今のモニタリングでも追えている。 ただ、そのうちソフトウェア側が AI を使って業績を伸ばす局面が来るのではないか、と考えている。 来るとすれば構造転換として現れるはずだが、今の並びにはその転換を置いておく場所がない。
だから、既存の並びの中にソフトウェアのカテゴリを新設させた。 セクターは既存の「ソフトウェア/インターネット」を流用し、階層(tier)として「ソフトウェア」を1段足す形にしている。 枠の注記は「AI活用による構造転換を監視」とした。
3四半期連続の加速をどこで見るか
四半期テーブルとビート率だけでは、加速しているかどうかが読み取れない。 そこで、SNOW 固有のチャートを4本作らせた。 売上成長率の推移、ガイダンス引き上げ幅、営業利益率、100万ドル超の顧客数である。
型は SNOW 専用にせず、汎用の KPI 時系列として足させた。 既存の任意フィールドと同じ流儀に合わせてある。 ヘッドラインのビート幅よりも KPI の傾きが評価を決める銘柄なら、他でも使い回せる。
export type KpiTrendSeries = {
key: string // 'productRevenueGrowth' など一意なキー
title: string
unit: string // '%' / '社' / '$B'
kind?: 'line' | 'bar'
points: KpiTrendPoint[]
}
詰まったところが3つあった。
Chart.js には値ラベル用のプラグインが入っていなかった。 点の上に数値をそのまま出したかったので、SVG で自作させた。
データを流し込む heredoc が長すぎて壊れた。 スクリプトをファイルに分けて流し直している。
ページを開いたら 500 が返った。
原因は import.meta.glob の再スキャン漏れで、これは前にも踏んでいる。
loader に HMR を効かせて 200 に戻した。
描画を見て1つ直した。 通年ガイダンスの棒グラフが0起点で、引き上げ幅が視覚的に潰れていた。 $5.84B から $6.07B への差は、0からの棒で描くと目に入らない。 折れ線に変えたら、引き上げの傾きがそのまま見えるようになった。
Koyfin 側の準備も並行して進めさせた。
KID は eq-8o3fqi で、Turso に永続化してある。
estimates と株価を取ったところ、9/2 の終値 $305.84 で一致した。
valuation を再生成しても、他銘柄への巻き添えはなかった。
JSON の検算8件も一致し、テストは64件とも通った。
隣に並べた2銘柄のフォワードPE
同じ性格の銘柄なので、Palantir も既存のカテゴリからソフトウェアへ移動させた。 これで枠に2銘柄が並んだ。
並べてから気づいた。 Palantir のフォワードPEが Snowflake より低い。
理由の一部は、比べている時点がずれていることにある。 Snowflake の NTM PER 144.2倍は、決算発表前の終値で計算した数字である。 9/2 の引けは -4.4% の $305.84 で、時間外の $374.25 は入っていない。 仮に NTM EPS が据え置きなら、時間外の水準では約176倍になる。 実際には決算を受けてコンセンサスが上方修正されるので、翌日以降はもう少し下がるはずである。
とはいえ、この気づきは並べるまで出てこなかった。 別々のカテゴリに散らばっている限り、2銘柄を横に置いて眺めることがない。 カテゴリを作るというのは、比較の単位を作ることでもあるらしい。
セッションの終わりに残っていたもの
作業を止める前に「積み残しはないですよね」と聞いた。 残っていないつもりで聞いた。 2件返ってきた。 1件は今回の SNOW 作業分の未コミット変更で、8ファイルあった。
ソフトウェア側の構造転換が本当に来るかは、まだ分からない。 来たときに気づける並びだけは、今日のうちに作った。