[{"data":1,"prerenderedAt":405},["ShallowReactive",2],{"content-/earnings-monitoring-automation-kioxia":3,"all-pages-for-dir":403,"og-image-/earnings-monitoring-automation-kioxia":404},{"id":4,"title":5,"body":6,"category":384,"description":385,"extension":386,"meta":387,"navigation":388,"path":389,"project_name":390,"published":391,"publishedAt":392,"seo":393,"stem":394,"tags":395,"todo":401,"unpublished":391,"updatedAt":401,"__hash__":402},"pages/2026-06/2026-06-03/earnings-monitoring-automation-kioxia.md","決算モニタリングを毎朝の自動運用へ — earnings-beat-scanのガイダンス突合とキオクシア追加",{"type":7,"value":8,"toc":369},"minimark",[9,13,17,22,39,50,69,79,89,93,96,103,129,132,147,151,158,162,173,191,195,214,225,228,236,239,242,249,262,269,272,289,299,306,320,323,327,334,337,352,355,366],[10,11,12],"h1",{"id":12},"決算モニタリングを毎朝の自動運用へ",[14,15,16],"p",{},"半導体・メモリ決算の監視基盤をずっと手で回してきたが、今朝はそれを「毎朝勝手に回る」状態まで押し上げる作業をした。あわせてキオクシアを1銘柄追加し、トップページの並びも直した。後で自分が思い出せるように、判断したことと詰まったところを書き残す。",[18,19,21],"h2",{"id":20},"_1-earnings-beat-scan-のガイダンス突合を仕組み化する","1. earnings-beat-scan のガイダンス突合を仕組み化する",[14,23,24,25,29,30,33,34,38],{},"朝の ",[26,27,28],"code",{},"/make-diary"," の末尾で ",[26,31,32],{},"earnings-beat-scan"," を回すと、過去24時間に決算を出した米国銘柄のうち「ビート&レイズ」を X サーチで拾ってくれる。今朝の窓（2026-06-02 引け後）で引っかかったのは ",[35,36,37],"strong",{},"PANW・GTLB・ULTA"," の3社だった。",[14,40,41,42,45,46,49],{},"ところが PANW の出力が ",[26,43,44],{},"Forward Guidance: raised (surprise% n/a)"," で止まっていた。「上方修正した」とは書いてあるが、",[35,47,48],{},"何%上振れたのかが空欄","。これでは「ビートかどうか」を自分で判断できない。",[14,51,52,53,56,57,63,64,68],{},"そこで Koyfin の画面を開いて、PANW（KID: ",[26,54,55],{},"eq-1kz0lb","）の次四半期コンセンサスを自分の目で確認した。会社ガイダンスは EPS ",[26,58,62],{"className":59},[60,61],"language-math","math-inline","0.97・売上 ","3.35B、Koyfin のアナリストコンセンサスは EPS ",[26,65,67],{"className":66},[60,61],"0.938・売上 ","3.28B。手で並べると完全に一致した。",[70,71,76],"pre",{"className":72,"code":74,"language":75},[73],"language-text","次四半期ガイダンス\n🟢 EPS：$0.97 (予想 $0.938)\n🟢 売上高：$3.35B (予想 $3.28B)\n","text",[26,77,74],{"__ignoreMap":78},"",[14,80,81,82,84,85,88],{},"つまり「会社ガイダンス vs Koyfinコンセンサスを突き合わせてビート率を出す」手続きが ",[26,83,32],{}," のスキルに",[35,86,87],{},"そもそも無かった","のが原因。手順を足せば次回から数字で出せる。SKILL.md に Step 1.7（突合手続き）を追加し、Forward Guidance を「次四半期／通年」の2段構成にした。今朝の記事の PANW ブロックも、空欄だった surprise% を実数値に差し替えて、生きた手本として残した。",[18,90,92],{"id":91},"_2-gitlabulta-beauty-も突合してみたら明暗が割れた","2. GitLab・Ulta Beauty も突合してみたら明暗が割れた",[14,94,95],{},"「次回から全部自動で回せるようにドキュメントも整えて。GitLab と Ulta Beauty もできるならやって」と頼んで、GTLB・ULTA も同じ突合をかけさせた。",[14,97,98,99,102],{},"ここで予想外のことが起きた。実績はビートでも、",[35,100,101],{},"ガイダンスを突き合わせると結論が割れた","のだ。",[104,105,106,118],"ul",{},[107,108,109,112,113,117],"li",{},[35,110,111],{},"GTLB",": 次Q売上ガイド ",[26,114,116],{"className":115},[60,61],"272-274M、通年 ","1.112-1.118B。Koyfinコンセンサスと突合すると微妙な水準で、手放しのレイズとは言いにくい",[107,119,120,123,124,128],{},[35,121,122],{},"ULTA",": 次Qガイダンスを会社が出しておらず、通年 売上 ",[26,125,127],{"className":126},[60,61],"13.136-13.260B・EPS ","28.36-28.80 のみ。突合の土俵が片方しか無い",[14,130,131],{},"「実績ビート」と「ガイダンス突合の判定」は別物だ、というのを画面の数字で突きつけられた。記事のサマリ表・見出し・各銘柄ブロックを、この明暗が伝わる書き方に直した。",[14,133,134,135,138,139,142,143,146],{},"仕組み化で効いたのは2点。Koyfin で KID が解決できなかった銘柄は ",[35,136,137],{},"X サーチのコンセンサスにフォールバック","する分岐を入れたこと。そして KID 解決の検索 API のリクエスト形を SKILL.md に具体的に書いたこと。GTLB（",[26,140,141],{},"eq-ico28x","）・ULTA（",[26,144,145],{},"eq-r1an5d","）は無料プランでも estimates が 200 で取れた。これで翌朝からは突合まで含めて全自動で回る。",[18,148,150],{"id":149},"_3-add-ticker-でキオクシアを1本追加する","3. /add-ticker でキオクシアを1本追加する",[14,152,153,154,157],{},"別セッションで ",[26,155,156],{},"/add-ticker"," を使ってキオクシア（Kioxia）を beat-monitoring に追加した。これが今日いちばん手こずった。",[159,160,161],"h3",{"id":161},"東証銘柄という前提を最初に潰す",[14,163,164,165,168,169,172],{},"キオクシアは",[35,166,167],{},"東証上場（285A、JPY建て）","。SEC 8-K も CIK も持たないし、Koyfin の ",[26,170,171],{},"\u003CTICKER>:US"," でも引けない。最初は「米国外だから難しいのでは」と身構えたが、直近のコミットで韓国メモリ2社（Samsung 005930・SK Hynix 000660、KRW建て）を入れた前例があったのを思い出した。さらに日本企業のイビデン（4062）も既にデータに入っている。雛形は揃っている。",[14,174,175,176,179,180,183,184,187,188,190],{},"Koyfin の検索 API でキオクシアを叩くと、東証メインの ",[26,177,178],{},"285A:JP"," が KID ",[26,181,182],{},"HO-dcpDpY"," で見つかった。",[26,185,186],{},"isLiveTicker:false"," だが、IPO日の 2024-12-18 から JPY 建ての全履歴が取れる（直近終値 ¥77,540）。米国OTC（KXIAY）は2025年10月以降しか無く短いので、迷わず ",[26,189,178],{}," を採用した。",[159,192,194],{"id":193},"非gaap予想が無いという壁","非GAAP予想が「無い」という壁",[14,196,197,198,201,202,205,206,209,210,213],{},"estimates を JPY で取りに行って、ここで詰まった。Koyfin はキオクシアの",[35,199,200],{},"非GAAP（調整後）EPS予想を持っていない","（",[26,203,204],{},"fest_esteps"," が全期間「データなし」）。一方、valuation の ",[26,207,208],{},"ntm_eps"," は ",[26,211,212],{},"eps_adj","（非GAAP）からしか計算されない設計だった。このままだとバリュエーションカードの NTM EPS とフォワードPER が「—」になる。",[14,215,216,217,220,221,224],{},"対処は、estimates レスポンスに ",[35,218,219],{},"GAAP予想を eps_adj として流し込む","こと。これで取込は通り、price ¥77,540・NTM EPS ¥8,978.47・フォワードPER 8.64x が入った。あわせてフロントの通貨フォーマッタが USD/KRW しか対応していなかったので、韓国KRW追加のときと同じ要領で ",[35,222,223],{},"JPY（¥）対応を横展開","した。",[159,226,227],{"id":227},"リサーチの数字を疑う",[14,229,230,231,235],{},"実績・会社ガイダンスのリサーチを並列で走らせたら、Q2 FY26 のガイダンスが「",[26,232,234],{"className":233},[60,61],"5,000-5,500M / ","1,000-1,500M」と返ってきた。桁が明らかにおかしい。キオクシアの規模でドル建て5,000億ドルはあり得ない。",[14,237,238],{},"実績（売上 ¥5,436億・営業利益 ¥1,447億）と株価反応（+7.9%）に照らすと、これは**「億円」をドルに誤抽出したもの**だった。円建て ¥5,000-5,500億 / ¥1,000-1,500億 と読めば実績とビート＋株価まで完全に整合する。AIが拾ってきた数字でも、自分が単位の違和感を拾わないと事故る、というのを地で行った。会社ガイダンスは円建て・Non-GAAP で入れ直した。",[159,240,241],{"id":241},"散布図に点が出ない",[14,243,244,245,248],{},"dev で確認したら、個別ページも index カードも完璧にレンダリングされた。が、",[35,246,247],{},"散布図にキオクシアの点が出ていない","。",[14,250,251,209,254,257,258,261],{},[26,252,253],{},"buildScatterSplit",[26,255,256],{},"ltmEps == null"," の銘柄を除外する。デフォルトの Non-GAAP 基準は valuation.ts を使うが、キオクシアは Koyfin に実績EPS配列が無く ",[26,259,260],{},"ltmEps"," が null。だから「LTM未充足」で弾かれていた。",[14,263,264,265,268],{},"LTM実績EPS（IFRS純利益÷期中平均株式数 約5.42億株、Q4は Koyfin報告 ¥752.4 でアンカー）を算出して Turso に注入し、再取込した。",[26,266,267],{},"ltm_eps ¥1,023.23","・成長率 +777% が入り、散布図に13銘柄すべてがプロットされた。X軸は +856% まで自動拡張してキオクシアの +777% を収容した。NAND市況の谷からの回復で LTM が小さく、「低PER × 極端な高成長」の右下に位置する。scatter.vue の見出しも「12銘柄」→「13銘柄」に直した。",[159,270,271],{"id":271},"毎朝の自動取込で壊れないようにする",[14,273,274,275,209,278,281,282,285,286,288],{},"ここが恒久運用の肝だった。毎朝の ",[26,276,277],{},"/check-earnings",[26,279,280],{},"tickers.koyfin_kid"," 登録済みの",[35,283,284],{},"全銘柄を自動列挙","するよう拡張済み。285A も KID 登録したので、放っておくと翌朝から標準キー（非GAAP）で上書きされ、GAAP流し込みが効かず ",[26,287,208],{}," が null になってカードが壊れる。",[14,290,291,294,295,298],{},[26,292,293],{},"import_koyfin_batch.py"," 側には ",[26,296,297],{},"compute_ntm_metrics"," に**「非GAAPが無ければGAAP予想にフォールバック」**を入れた。非GAAPが揃う既存27銘柄はフォールバックが発火せず挙動不変、キオクシアだけ救済される。turso のテスト20件は pass。",[14,300,301,302,305],{},"ただし daily が 285A を ",[35,303,304],{},"USD建てで取得する","問題が残った（通貨選択は KRW だけ現地通貨扱いで、TSE は USD に落ちる）。これを直すには check-earnings.md の通貨ロジックに JPY を足す必要があるが、add-ticker タスクの認可範囲外として自己改変が拒否された。",[14,307,308,309,312,313,316,317,319],{},"そこで",[35,310,311],{},"安全側に倒す","判断をした。285A の ",[26,314,315],{},"koyfin_kid"," を NULL 化して daily の自動列挙から外す。これで検証済みの完全なスナップショット（¥77,540 / NTM ¥8,978 / LTM ¥1,023 / PER 8.64x / JPY）が保持され、毎朝の上書きで壊れない。可逆だし、KID ",[26,318,182],{}," は手動再取込でいつでも使える。「自動化を頑張った先で、自動化の対象から1銘柄だけ手動退避させる」という落としどころになった。",[14,321,322],{},"最終的に beat/ticker 関連の8ファイル132テストは全 pass。tickerMeta・gaapValuation・summaries（29銘柄に）まで整合した。",[18,324,326],{"id":325},"_4-トップの構造転換済みブロックを2段組みにする","4. トップの構造転換済みブロックを2段組みにする",[14,328,329,330,333],{},"最後はレイアウトの細かい要望。「",[26,331,332],{},"/beat-monitoring"," の構造転換済みのところ、MU・NVDA・SNDK の3つを1行目に、それ以外を改行して並べて」。",[14,335,336],{},"最初は「散布図のゾーン分け」かと取り違えて聞き返してしまった。実際はトップページ（index.vue）の銘柄チップの並びの話だった。",[14,338,339,340,343,344,347,348,351],{},"各 tier の銘柄を ",[35,341,342],{},"「主力3銘柄（MU→NVDA→SNDK）」と「その他」の2行に分割","する純粋関数 ",[26,345,346],{},"splitRows"," を追加し、テンプレートを2段化、薄い区切り線を入れた。SSR出力を見ると、1行目が MU・NVDA・SNDK、改行して 285A・005930・000660… と続く。",[26,349,350],{},"priority-row"," は構造転換済みブロックの1箇所だけに出ていて、意図どおりだった。",[18,353,354],{"id":354},"今日の地点",[104,356,357,360,363],{},[107,358,359],{},"earnings-beat-scan に「会社ガイダンス × Koyfinコンセンサス」の突合手続きを入れ、次四半期／通年の2段で出るようにした。次回から PANW・GTLB・ULTA まで数字付きで自動運用できる",[107,361,362],{},"キオクシア（285A）を beat-monitoring に追加。東証・JPY建て・非GAAP予想欠損という三重苦を、GAAP流し込み＋JPY横展開＋LTM手動注入で乗り越えた。daily からは安全のため手動退避",[107,364,365],{},"トップの構造転換済みブロックを「主力3銘柄＋その他」の2段組みに",[14,367,368],{},"人間は単位や並びの違和感を拾う係、突合とデータ整備は回させる係、という分担が今日ははっきりした。残る宿題は check-earnings.md の JPY 通貨対応で、これを入れればキオクシアも daily に戻せる。",{"title":78,"searchDepth":370,"depth":370,"links":371},2,[372,373,374,382,383],{"id":20,"depth":370,"text":21},{"id":91,"depth":370,"text":92},{"id":149,"depth":370,"text":150,"children":375},[376,378,379,380,381],{"id":161,"depth":377,"text":161},3,{"id":193,"depth":377,"text":194},{"id":227,"depth":377,"text":227},{"id":241,"depth":377,"text":241},{"id":271,"depth":377,"text":271},{"id":325,"depth":370,"text":326},{"id":354,"depth":370,"text":354},"dev","earnings-beat-scan / check-earnings を毎朝全自動で回せるよう整備。Koyfinの次四半期ガイダンス突合を仕組み化し、GitLab・Ulta Beautyを追加。/add-tickerでキオクシアをbeat-monitoringに1本追加し、トップの構造転換済みブロックも2段組みにレイアウト変更した。","md",{},true,"/earnings-monitoring-automation-kioxia","financial-data",false,"2026-06-03T00:00:00.000Z",{"title":5,"description":385},"2026-06/2026-06-03/earnings-monitoring-automation-kioxia",[396,397,32,398,399,400],"決算","beat-monitoring","Koyfin","キオクシア","Kioxia",null,"kosG2EkroBsIUfnP2syCD6GODjhTUA3CvVaUrRzcuqE",[],"https://log.eurekapu.com/og/blog/earnings-monitoring-automation-kioxia.png?v=2026-06-03T00%3A00%3A00.000Z&title=%E6%B1%BA%E7%AE%97%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%92%E6%AF%8E%E6%9C%9D%E3%81%AE%E8%87%AA%E5%8B%95%E9%81%8B%E7%94%A8%E3%81%B8%20%E2%80%94%20earnings-beat-scan%E3%81%AE%E3%82%AC%E3%82%A4%E3%83%80%E3%83%B3%E3%82%B9%E7%AA%81%E5%90%88%E3%81%A8%E3%82%AD%E3%82%AA%E3%82%AF%E3%82%B7%E3%82%A2%E8%BF%BD%E5%8A%A0&author=Kei%20Komatsu&sig=ff46c801dfdbea87",1780560550666]