[{"data":1,"prerenderedAt":500},["ShallowReactive",2],{"content-/earnings-monitoring-ticker-expansion":3,"all-pages-for-dir":498,"og-image-/earnings-monitoring-ticker-expansion":499},{"id":4,"title":5,"body":6,"category":479,"description":480,"extension":481,"meta":482,"navigation":483,"path":484,"project_name":485,"published":486,"publishedAt":487,"seo":488,"stem":489,"tags":490,"todo":496,"unpublished":486,"updatedAt":496,"__hash__":497},"pages/2026-06/2026-06-02/earnings-monitoring-ticker-expansion.md","決算モニタリングの銘柄拡充とビート判定の精緻化 — GLW・CRDO・SK Hynixを追加",{"type":7,"value":8,"toc":462},"minimark",[9,13,18,21,33,49,52,62,69,75,79,82,89,95,101,104,108,111,137,155,167,171,178,182,189,199,202,206,221,232,236,239,243,250,260,275,281,292,296,303,314,318,335,338,342,349,392,403,406,445,448],[10,11,12],"p",{},"決算モニタリング（beat-monitoring）ページに、半導体・メモリー銘柄を一気に積み増した1日。GLW（Corning）の積み残しを片付け、Broadcomにはギャップ会計ベースのフォワードPERを併記し、Credo（CRDO）の本決算を取り込み、SK HynixとSamsungの韓国メモリ2社を追加してウォン建て対応まで通した。最後に散布図ページの表示バグを画面で見つけたが、その場で直さず翌日のメモに回した。",[14,15,17],"h2",{"id":16},"朝イチglwのバリュエーションカード積み残し","朝イチ：GLWのバリュエーションカード（積み残し）",[10,19,20],{},"前日のハンドオフメモを開いて、途中で止まっている作業を洗い出させた。GLW（Corning）のバリュエーションカードが未登録のまま残っていた。",[10,22,23,24,28,29,32],{},"実ファイルを確認させると、",[25,26,27],"code",{},"valuation.ts"," は21銘柄でGLWがない。",[25,30,31],{},"gaapValuation.ts"," にもない。未登録は事実だった。",[10,34,35,36,39,40,43,44,48],{},"Koyfin内部APIで取り直したところで足が止まった。ハンドオフメモに書かれたKID ",[25,37,38],{},"f6-Pk6Zsn"," で株価を叩くと404が返る。「Unknown KID in graph request」。検索APIでGLWを引き直させると、正しいKIDは ",[25,41,42],{},"eq-mb62wh"," だった。",[45,46,47],"strong",{},"メモに残したKIDが間違っていた","わけだ。しかも誤KIDでもestimatesのkeysエンドポイントはHTTPエラーを返さず、空データを黙って返していた。前日に「periods=0」で詰まった真因はこれだったと腑に落ちた。",[10,50,51],{},"正しいKIDで取り直すと一発で通った。",[53,54,59],"pre",{"className":55,"code":57,"language":58},[56],"language-text","GLW price=176.70 / NTM EPS=3.373 / フォワードPER=52.39x\n","text",[25,60,57],{"__ignoreMap":61},"",[10,63,64,65,68],{},"再生成時はMU/NVDA/SNDKのpriceがnull落ちする罠（add-ticker Step5-5）に注意させ、ログで全銘柄のpriceが生きているか確認した。MU=971、NVDA=211.14、SNDK=1694.98、すべて健在。GLWカードが ",[25,66,67],{},"/beat-monitoring"," のindexに表示された。",[10,70,71,72,74],{},"将来のためにTursoに残っていた誤KIDも ",[25,73,42],{}," に直させ、pitfalls issueに「真因はKID誤り」と書き足した。",[14,76,78],{"id":77},"broadcomgaapベースのフォワードperを併記する","Broadcom：GAAPベースのフォワードPERを併記する",[10,80,81],{},"beat-monitoringのページを開いて、Broadcom（AVGO）のフォワードPERが気になった。non-GAAP EPSベースで計算されている。GAAP EPSを使った場合のフォワードPERも並べて出したい、と頼んだ。",[10,83,84,85,88],{},"ここで会計の壁にぶつかった。直近4QのGAAP EPS実績はSECの8-Kから確定できた（LTM GAAP合計 $5.12）。だが",[45,86,87],{},"AVGOは会社としてGAAPガイダンスを出さない","ため、前方（フォワード）のGAAPコンセンサスが公開ソースに存在しない。前方GAAP PERは厳密には出せない。",[10,90,91,92,94],{},"そこで「前方GAAP PER（推計）」として載せる方針にした。直近実績のGAAP/non-GAAP比（Q1 FY26で約0.73）を非GAAP予想に掛けるブリッジ推計で、その旨を ",[25,93,31],{}," のnotesに明記させた。",[53,96,99],{"className":97,"code":98,"language":58},[56],"AVGO フォワードPER(非GAAP): 33.4x\nAVGO フォワードPER(GAAP):   45.7x  ← 約1.4倍\n",[25,100,98],{"__ignoreMap":61},[10,102,103],{},"GAAPデータが揃う全11銘柄（AVGO＋構造転換済み10銘柄）に同じGAAP行を出し、既存のPERには「(非GAAP)」と明示した。データ層→表示層の2コミットに分割してコミット。作業ツリーには別作業の未コミット変更が散らばっていたので、対象2ファイルだけを明示ステージして、他の作業を巻き込まないようにさせた。",[14,105,107],{"id":106},"credocrdoq4-fy2026決算を取り込む","Credo（CRDO）：Q4 FY2026決算を取り込む",[10,109,110],{},"CRDOがQ4 FY2026決算を出した。x-searchで決算サマリを拾わせると、ユーザー提供の数字と整合した。",[112,113,114,118,128,131,134],"ul",{},[115,116,117],"li",{},"売上 $437M（+157% YoY、+7.4% QoQ）",[115,119,120,121,127],{},"非GAAP EPS ",[25,122,126],{"className":123},[124,125],"language-math","math-inline","1.16 vs コンセンサス ","1.03",[115,129,130],{},"通期 $1.335B（+206%）",[115,132,133],{},"Q1 FY27ガイド $465〜475M",[115,135,136],{},"時間外で11〜14%下落（顧客集中：上位4社で約87%）",[10,138,139,142,143,146,147,150,151,154],{},[25,140,141],{},"CRDO.json"," に通期FY2026を含む ",[25,144,145],{},"FY26Q4","（6/1発表）を追加し、",[25,148,149],{},"summaries.ts"," と ",[25,152,153],{},"tickerMeta.ts"," を更新した。",[10,156,157,158,161,162,166],{},"ここで時刻の罠があった。作業時点は日本時間6/2の午前で、米国市場6/2はまだ開いていない。Koyfinの ",[25,159,160],{},"p_candle_range"," が返す最新ローソクは6/1終値＝**発表前の",[25,163,165],{"className":164},[124,125],"226.10**になる。発表後の時間外","193.6もFY27予想改定もKoyfinにはまだ乗っていない。実データを見たら案の定そうだったので、その事実を正直に報告させた。再生成は巻き添えnull化を避けるため、CRDO/MU/NVDA/SNDKをprice込みでまとめて取り込んだ。",[14,168,170],{"id":169},"add-tickermrvlは登録済みだった","/add-ticker：MRVLは登録済みだった",[10,172,173,174,177],{},"MRVL（Marvell）を ",[25,175,176],{},"/add-ticker"," で追加しようとしたら、4ファイルすべてに登録済みでコミット済み、しかも新鮮だった。新規追加の必要はなく、状態確認だけで終了。空振りだが、無駄に上書きしないのが正解だ。",[14,179,181],{"id":180},"add-tickersk-hynix000660を追加する","/add-ticker：SK Hynix（000660）を追加する",[10,183,184,185,188],{},"ここが今日の本丸だった。SK Hynixは韓国上場（KRX 000660）。beat-monitoringが前提とする「米国上場・SEC 8-K・Koyfin ",[186,187],"us",{},"・USD」と折り合うのか、最初に見極める必要があった。",[10,190,191,192,194,195,198],{},"既存の ",[25,193,153],{}," に ",[25,196,197],{},"4062","（イビデン＝日本・東証）が居た。非米国銘柄を扱える前例だ。4062はKoyfin非対応でカード上段の株価/PERは「—」、YoYと翌日株価反応で代替している。SK Hynixも同じ構造でいける、と当たりをつけた。",[10,200,201],{},"x-searchで直近4四半期からデータを集めさせた。SK Hynixは寄り前（午前）発表なので、株価反応は「前営業日終値→発表当日終値」で取る。2025 Q3は10/28の521,000→10/29の558,000で+7.10%、ポストの数値と完全一致した。全9四半期の実績・コンセンサス・発表日・株価3値が揃った。",[203,204,205],"h3",{"id":205},"ウォン建てでチャートが壊れた",[10,207,208,209,212,213,216,217,220],{},"JSONを組んでチャートを描かせたら、線が引けない。原因は ",[25,210,211],{},"parseCurrencyToNumber"," がUSD（$,M/B/K）とJPY（兆/億/万＋円）しか解釈できず、",[45,214,215],{},"ウォンがnullに落ちていた","こと。関数名どおりの責務拡張として、KRW対応（",[25,218,219],{},"兆/億/万 + W/ウォン/₩","、素のウォン）を追加してテストも足した。",[10,222,223,224,227,228,231],{},"次にEPS（営業利益）チャートの軸が ",[25,225,226],{},"X0000000000.0","、データラベルが ",[25,229,230],{},"5470000000000.00"," と潰れた。営業利益を絶対ウォン額（兆W＝e12）のままバーラベルにしていたためだ。桁の大きい値を兆/億/万に圧縮表示するロジックに変えると、表と同じ「9.21兆」「22.23兆」表記に揃った。副次的に4062（億円）のEPSも「95億」と読めるようになった。共有コンポーネントなので、USD銘柄（NVDA）で兆/億の誤混入がゼロか回帰確認した。",[203,233,235],{"id":234},"発表日時を全部入れる通過判定も入れる","発表日時を全部入れる、通過判定も入れる",[10,237,238],{},"スクショとともに「各決算の発表日時を全部拾って、他の銘柄と同じようにここにも日付を入れて。株価は入ってたっけ？」と頼まれた。確認すると、株価も発表日も全9四半期に入っていた。グラフが空っぽに見えたのは、開いていたタブが韓国ウォン対応前のパーサーのままで、ハードリロードしていなかっただけだった。",[203,240,242],{"id":241},"samsungとの並走そして韓国はkoyfin対応だった","Samsungとの並走、そして韓国はKoyfin対応だった",[10,244,245,246,249],{},"作業中に、ユーザーが ",[25,247,248],{},"005930","（Samsung）をメモリセクターに並行追加していた。韓国メモリ勢を2社まとめて入れていたわけだ。",[10,251,252,253,259],{},"そこで重要な発見があった。Samsungが",[45,254,255,256,258],{},"既にKoyfin/Turso経由で ",[25,257,27],{}," に入っていた","（price 349,000・NTM EPS 53585・PER 6.5x・currency: KRW）。つまりKoyfinは韓国銘柄に対応している。SK Hynixを4062扱い（Koyfin非対応）と誤判断していたわけだ。同じパイプラインで取り込めばカードの「—」が埋まり、構造転換済みのGAAPも組める。",[10,261,262,263,266,267,270,271,274],{},"SK HynixのKRX KIDは ",[25,264,265],{},"eq-7326uw","（identifier ",[25,268,269],{},"A000660:KR","）。Samsungと同形式で ",[25,272,273],{},"tickers"," に登録し（exchange=KOSE、12月決算）、estimatesとpriceをKRW建てで取り込んだ。",[53,276,279],{"className":277,"code":278,"language":58},[56],"SK Hynix price=2,363,000 / NTM EPS=335,242 / NTM PE=7.05x（KRW）\n",[25,280,278],{"__ignoreMap":61},[10,282,283,284,287,288,291],{},"ところがインポート直後、",[25,285,286],{},"000660"," のcurrencyがUSDになっていた（値はKRWなのに）。これだとカードが「$2,363,000」と誤表示される。importスクリプトのcurrencyがデフォルトUSDで、Samsungは別途設定されていたのが原因。",[25,289,290],{},"valuation_snapshots"," の000660をKRWに直して再生成し、カードに₩建ての実値が出た。",[203,293,295],{"id":294},"構造転換済みへ移動gaapデータの差異","構造転換済みへ移動、GAAPデータの差異",[10,297,298,299,302],{},"両韓国銘柄を「ビート継続」から「構造転換済み」へ移した。ここで ",[25,300,301],{},"gaapValuation.test.ts"," が「構造転換済み銘柄はGAAP散布図データ＋株価必須」を強制してくる。",[10,304,305,306,309,310,313],{},"GAAPデータを抽出させると、Koyfinの ",[25,307,308],{},"eps_gaap"," は",[45,311,312],{},"NTM forwardはあるがLTM実績が2四半期分しかない","（4四半期に足りない）。米国型と違い、韓国IFRS開示は非GAAP調整（SBC加算等）が小さく、GAAP（IFRS純利益EPS）≒調整後EPSになる。そこで両韓国銘柄は調整後のNTM/LTM四半期値をGAAP基準として転用し、その旨を注記した。構造転換済みの件数を10→12に更新（テスト件数も）、散布図のハードコード「9銘柄」表記が古いことに気づいて12に直した。全106テストpass。",[203,315,317],{"id":316},"通貨判定をimportスクリプトに恒久化コミット","通貨判定をimportスクリプトに恒久化、コミット",[10,319,320,321,324,325,328,329,331,332,334],{},"「通過判定（通貨判定）入れといて」と頼まれた。importの2経路（json_stdin / API直叩き）が両方 ",[25,322,323],{},"_persist_rows_and_valuation"," を通るので、そこで ",[25,326,327],{},"tickers.exchange"," から通貨を判定すれば、価格無しの日次取込まで全経路をカバーできる。",[25,330,286],{},"・",[25,333,248],{}," → KRW、米国銘柄 → USD、未登録 → USD（安全側）と判定されることを検証した。",[10,336,337],{},"関連ファイルだけをステージして両リポジトリにコミット・push。enfabrica研究・memory-makers・issue類の無関係WIPは混ぜなかった。",[14,339,341],{"id":340},"散布図の表示バグその場で直さず明日に回す","散布図の表示バグ：その場で直さず明日に回す",[10,343,344,345,348],{},"最後に ",[25,346,347],{},"http://localhost:3001/beat-monitoring/scatter"," の画面を見て、表示バグに気づいた。銘柄を切り替えてもチャートのタイトルが全部「MU Micron Technology」のまま、数字もMUのまま動かない。特に韓国2社の数字が合っていない。それにティッカー番号（005930 / 000660）だと分かりづらいので、表記を銘柄名にしたい。",[10,350,351,352,355,356,359,360,363,364,367,368,371,372,375,376,387,388,391],{},"原因の当たりはつけさせた。",[25,353,354],{},"selected.ticker"," は正しく切り替わっている（ナビは「005930」と正しい）のに、",[25,357,358],{},"useTripleBeatData"," が返す ",[25,361,362],{},"data"," がMU固定。",[25,365,366],{},"loader.ts"," とJSONは正常で、JSONには ",[25,369,370],{},"name: \"Samsung Electronics\""," がちゃんと入っている。",[25,373,374],{},"[ticker].vue","（1ページ1銘柄）では起きず、scatter.vueが",[45,377,378,379,382,383,386],{},"単一の ",[25,380,381],{},"BeatExpectationsChart"," インスタンスで ",[25,384,385],{},":ticker"," を動的に切り替える","ため、ここで初めて露見した。最有力は ",[25,389,390],{},"useAsyncData"," の動的キー＋watchが同一インスタンスのprop切替に追従していない疑い。",[10,393,394,395,402],{},"ただし、ここでコードに手を入れずに止めた。今日はもう銘柄追加で頭が一杯で、調査と修正を続けると半端に終わるリスクが高い。",[45,396,397,398,401],{},"症状・原因の当たり・修正候補・関連ファイルを ",[25,399,400],{},"memo/2026-06-02/beat-monitoring-scatter-display-bug.md"," に書き出して、翌日の実装メモに回した","。",[10,404,405],{},"修正候補も2案メモした。",[112,407,408,422],{},[115,409,410,411,414,415,150,418,421],{},"A（即効）: ",[25,412,413],{},"scatter.vue"," で ",[25,416,417],{},"\u003CBeatExpectationsChart :key=\"selected.ticker\" ... />",[25,419,420],{},":key"," を付けて、ticker変更時にコンポーネントごと再マウントさせる",[115,423,424,425,427,428,431,432,434,435,437,438,437,441,444],{},"B（根本）: ",[25,426,358],{}," を ",[25,429,430],{},"watchEffect"," + 手動ロードに置き換え、または ",[25,433,390],{}," の動的キー運用を直す（",[25,436,374],{}," / ",[25,439,440],{},"TripleBeatTable",[25,442,443],{},"BeatStockChart"," のdedupを壊さないこと）",[14,446,447],{"id":447},"振り返り",[112,449,450,453,456,459],{},[115,451,452],{},"KIDの誤りは静かに事故る。estimatesのkeysエンドポイントが誤KIDでもエラーを返さず空を返す挙動を、もう一度肌で確認した",[115,454,455],{},"non-GAAP/GAAPの使い分けは会社のガイダンス方針に依存する。AVGOのようにGAAPガイダンスを出さない会社では前方GAAP PERは推計にしかならない、と明記する判断",[115,457,458],{},"韓国銘柄は「Koyfin非対応の4062型」と思い込んだが、Samsungの既存データを見てKoyfin対応だと気づき直した。思い込みは既存データで検証する",[115,460,461],{},"画面の数字の違和感は自分が拾う係。scatterのMU固定バグは画面を切り替えて初めて見えた。ただし疲れている時の見切り発車を避け、メモに回して翌日に持ち越す判断もした",{"title":61,"searchDepth":463,"depth":463,"links":464},2,[465,466,467,468,469,477,478],{"id":16,"depth":463,"text":17},{"id":77,"depth":463,"text":78},{"id":106,"depth":463,"text":107},{"id":169,"depth":463,"text":170},{"id":180,"depth":463,"text":181,"children":470},[471,473,474,475,476],{"id":205,"depth":472,"text":205},3,{"id":234,"depth":472,"text":235},{"id":241,"depth":472,"text":242},{"id":294,"depth":472,"text":295},{"id":316,"depth":472,"text":317},{"id":340,"depth":463,"text":341},{"id":447,"depth":463,"text":447},"dev","beat-monitoringページにCorning・Credo・SK Hynix・Samsungを追加し、BroadcomのGAAP/non-GAAPフォワードPER併記、KRW建てパーサー対応、散布図の表示バグを翌日メモに回した1日の記録。","md",{},true,"/earnings-monitoring-ticker-expansion","financial-data",false,"2026-06-02T00:00:00.000Z",{"title":5,"description":480},"2026-06/2026-06-02/earnings-monitoring-ticker-expansion",[491,492,493,494,495],"決算モニタリング","半導体","バリュエーション","Vue","Koyfin",null,"ZGWftgdr5x7mNoUk2q5zCq-V2GI4LHES3zSuMZ_CN4Q",[],"https://log.eurekapu.com/og/blog/earnings-monitoring-ticker-expansion.png?v=2026-06-02T00%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%81%AE%E9%8A%98%E6%9F%84%E6%8B%A1%E5%85%85%E3%81%A8%E3%83%93%E3%83%BC%E3%83%88%E5%88%A4%E5%AE%9A%E3%81%AE%E7%B2%BE%E7%B7%BB%E5%8C%96%20%E2%80%94%20GLW%E3%83%BBCRDO%E3%83%BBSK%20Hynix%E3%82%92%E8%BF%BD%E5%8A%A0&author=Kei%20Komatsu&sig=f2a683696049d073",1780560549589]