[{"data":1,"prerenderedAt":176},["ShallowReactive",2],{"content-/earnings-beat-scan-announce-date-gate":3,"all-pages-for-dir":174,"og-image-/earnings-beat-scan-announce-date-gate":175},{"id":4,"title":5,"body":6,"category":157,"description":158,"extension":159,"meta":160,"navigation":161,"ogImage":162,"path":163,"project_name":164,"published":165,"publishedAt":166,"seo":167,"stem":168,"tags":169,"todo":162,"unpublished":165,"updatedAt":162,"__hash__":173},"pages/2026-05/2026-05-25/earnings-beat-scan-announce-date-gate.md","決算ビートスキャンに「発表日ゲート」を新設した話 — 0件こそ正しい結果",{"type":7,"value":8,"toc":148},"minimark",[9,26,29,34,37,40,43,46,57,60,63,66,105,109,112,115,121,124,145],[10,11,12,13,17,18,21,22,25],"p",{},"毎朝の ",[14,15,16],"code",{},"/make-diary"," パイプラインの末尾で ",[14,19,20],{},"earnings-beat-scan"," スキルを走らせている。過去24時間に決算発表した米国上場企業のうち、ガイダンスやEPS・売上がアナリストコンセンサスを5〜10%以上上回った銘柄を、x-search（Grok経由のX検索）で拾い上げるスキルだ。",[14,23,24],{},"/check-earnings"," が機械的に追っている NVDA / MU / SNDK の3銘柄の外で起きている「ビート&レイズ」を、毎朝ひと網打尽にするのが狙いだった。",[10,27,28],{},"ところが今朝、このスキルが拾ってはいけない銘柄を拾った。0件で終わるはずの朝に、過去の決算が紛れ込んだ。その混入をきっかけに、スキルの抽出ロジックに「発表日ゲート」を1段追加することになった。",[30,31,33],"h2",{"id":32},"_0件が期待値だった朝","0件が期待値だった朝",[10,35,36],{},"2026-05-25 は米国が Memorial Day で休場だった。しかも日曜から月曜にかけての窓。米国企業は取引日にしか決算を出さないので、この24時間（5/24→5/25）に新規の決算発表が乗ってくる確率はほぼゼロ。最初から「今日は0件で終わるはず」と踏んで実行した。",[10,38,39],{},"x-search のクエリを投げ、Grok の要約が返ってきた。そこに PLTR（パランティア）の決算ビートが並んでいた。一瞬「お、なにか出たか」と思った直後に、引っかかりを覚えた。PLTR の決算は5月4日のはずだ。今回の窓は5/24→5/25。3週間前の決算が、なぜ「過去24時間に発表した銘柄」の枠に座っているのか。",[30,41,42],{"id":42},"どのプロセスが検証を漏らしたか",[10,44,45],{},"混入に気づいて、すぐスキルを問い詰めた。パランティアの決算は前回5月4日にあった。今回のXサーチ結果に含めるべきではない。あくまで1日分だけ見てほしい。どこのプロセスが検証を漏らしたのか。厳密にやってほしい——そう指摘して、SKILL.md を頭から読み直させた。",[10,47,48,49,52,53,56],{},"原因はすぐ割れた。x-search の ",[14,50,51],{},"from_date"," / ",[14,54,55],{},"to_date"," は「X投稿が投稿された日」を絞るだけで、「決算が発表された日」は一切絞っていなかった。決算は発表後も何週間もXで語られ続ける。チャート解説、振り返り、「あのときの beat&raise がさ」系のポスト——PLTR の5/4決算に対する継続的な言及が、投稿日だけで見れば窓内にいくらでもある。Grok はそれを律儀に拾ってきた。",[10,58,59],{},"つまりスキルには、拾った銘柄の「発表日が窓の中に収まっているか」を突き合わせるゲートが存在しなかった。投稿日のフィルタを発表日のフィルタと取り違えていたわけだ。x-search は仕事をしている。検証の網を1枚張り忘れていたのはこちら側だった。",[30,61,62],{"id":62},"スキルを5点で厳密化させた",[10,64,65],{},"原因が見えたので、SKILL.md を5点に分けて書き直させた。",[67,68,69,77,83,93,99],"ol",{},[70,71,72,76],"li",{},[73,74,75],"strong",{},"Step 1 のクエリ強化","。「発表日（report / announcement date）で縛り、投稿日では縛らない」ことを Grok に明示する文言を埋め込んだ。各銘柄に正確な決算発表日（YYYY-MM-DD）を必ず明記させ、確認できない銘柄は最初から含めるなと指示する。",[70,78,79,82],{},[73,80,81],{},"Step 1.5（発表日ゲート）の新設","。Step 2 のフォーマット化に進む前に、必ず1段挟む。Grok の回答に出てきた各ティッカーについて、発表日が窓内かを確認する。曖昧なら的を絞った2発目の x-search で発表日を確定させ、それでも窓内と取れなければ除外する。疑わしきは出さない。",[70,84,85,92],{},[73,86,87,88,91],{},"出力フォーマットの ",[14,89,90],{},"Announced"," 欄を格上げ","。これまで参考程度に並べていた発表日の行を、「窓内であることを Step 1.5 で確証済み。窓外・不明なら出力しない」という必須フィールドに引き上げた。",[70,94,95,98],{},[73,96,97],{},"0件フォールバックを休場対応に更新","。窓が週末・米国祝日にすっぽり収まる場合は「当窓は米国市場休場のため新規決算なし。0件」と1行だけ返して終わる。ヒットした銘柄はすべて過去決算の継続言及を疑う。",[70,100,101,104],{},[73,102,103],{},"最重要原則として冒頭に固定","。「決算発表日で判定する。投稿日ではない」を SKILL.md の先頭に置き、PLTR が5/24窓に混入した事故そのものを実例として書き残した。同じ穴に二度落ちないための杭だ。",[30,106,108],{"id":107},"_0件を恐れないという念押し","0件を恐れないという念押し",[10,110,111],{},"修正方針を詰める途中で、何度か念を押された。正しい結果が0なのは全く問題ない。24時間以内じゃないものは全て弾いてほしい——この一言で方針が固まった。",[10,113,114],{},"スキルというのは、つい「何か出さなきゃ」という方向に流れる。0件で返すより1件でも拾ったほうが仕事をした顔ができる。だがこのスキルでは逆だ。窓外の銘柄を「参考」と称して出した瞬間、それはノイズであり、毎朝の銘柄ウォッチを汚す。だから窓外は参考でも一切出さない。0件はサボりではなく、正しい結論として胸を張って返す。",[10,116,117,118,120],{},"最後に「発表日が24時間窓の外なら必ず弾く」を絶対ルールとして据え、多重に強制する形で締めた。具体的には4重のガードを通す。Step 1 のクエリで発表日明記を要求し、Step 1.5 のゲートで窓内突合し、Step 2 のフィルタで ",[14,119,90],{}," 欄が確証済みでなければ出さず、休場窓フォールバックで「0件が期待値」を明示する。どこか1枚が抜けても、後ろのガードが窓外銘柄を捕まえる。",[30,122,123],{"id":123},"学び",[125,126,127,133,139],"ul",{},[70,128,129,132],{},[73,130,131],{},"自動抽出はノイズを拾う","。x-search は「投稿日が窓内のポスト」を返すだけで、その投稿が語っている決算がいつ発表されたかまでは保証しない。検索の対象軸と、自分が本当に欲しい軸がズレていないかを疑う。",[70,134,135,138],{},[73,136,137],{},"発表日の検証ゲートが要る","。拾ってきた候補を、自分の判定基準（=発表日が窓内か）で1段濾す工程を必ず挟む。フィルタは入力で1回かけて終わりではなく、出力の直前にもう一度かける。",[70,140,141,144],{},[73,142,143],{},"0件を恐れない","。出力ゼロが正しい状況は確かにある。何か出すために基準を緩めるのは、スキルの信頼を一番速く削る。窓外を参考で出すくらいなら、堂々と0件で返す。",[10,146,147],{},"混入に気づけたのは、Grok が出した数字を疑ったからではなく、「PLTR の決算は5月4日だったはず」というカレンダー上の事実が頭の隅に引っかかったからだった。自動化したスキルでも、最後に窓の外かどうかを見抜くのは、こちら側が持っている素朴な事実感覚だと改めて思った。",{"title":149,"searchDepth":150,"depth":150,"links":151},"",2,[152,153,154,155,156],{"id":32,"depth":150,"text":33},{"id":42,"depth":150,"text":42},{"id":62,"depth":150,"text":62},{"id":107,"depth":150,"text":108},{"id":123,"depth":150,"text":123},"dev","毎朝の決算ビート抽出スキルに、休場日なのにPLTR（5/4決算）が混入した。x-searchは過去の言及を拾うので発表日を窓内で検証するゲートが要る。Step 1.5を新設して24時間外を全部弾いた記録。","md",{},true,null,"/earnings-beat-scan-announce-date-gate","claude-code-tools",false,"2026-05-25T00:00:00.000Z",{"title":5,"description":158},"2026-05/2026-05-25/earnings-beat-scan-announce-date-gate",[170,171,172],"Claude Code","スキル設計","決算","ku8mpmPnfhGQC7c63bNxL1lB3ThkIzZoGOHai-0KPt8",[],"https://log.eurekapu.com/og/blog/earnings-beat-scan-announce-date-gate.png?v=2026-05-25T00%3A00%3A00.000Z&title=%E6%B1%BA%E7%AE%97%E3%83%93%E3%83%BC%E3%83%88%E3%82%B9%E3%82%AD%E3%83%A3%E3%83%B3%E3%81%AB%E3%80%8C%E7%99%BA%E8%A1%A8%E6%97%A5%E3%82%B2%E3%83%BC%E3%83%88%E3%80%8D%E3%82%92%E6%96%B0%E8%A8%AD%E3%81%97%E3%81%9F%E8%A9%B1%20%E2%80%94%200%E4%BB%B6%E3%81%93%E3%81%9D%E6%AD%A3%E3%81%97%E3%81%84%E7%B5%90%E6%9E%9C&author=Kei%20Komatsu&sig=01710c574fba2206",1782528842110]