IRBANKのAPIがめっちゃ便利だったので、GitHub Actionsで日次スクリーニングする仕組みを作った

AI/個人開発
誰しもが株式投資で莫大な利益をうみたいもの。かといってデイトレードをしようものなら仕事中に値動きがきになってしょうがない。 値動きに気を取られて本業がおろそかになっては本末転倒だし、再現性が無い。 よって、ファンダメンタルが良い銘柄を選んで、可能な限りほったらかすのがよいと考え、日次でスクリーニングするシステムをつくろうと考えた。

どんな指標で絞り込むか

PERやPBRなどいろいろな指標がある。どれでスクリーニングをかけるかが悩みどころ。ベンジャミン・グレアムの『賢明なる投資家』を読んで、下記のような指標で絞り込むことにした。いわゆるネットネット株の発掘である。
  • ROE 5%以上
  • 自己資本比率 40%以上
  • 有利子負債自己資本比率 100%以下
  • 流動比率 120%以上
  • 売上高変化率 前年度比 0%以上
  • 経常利益変化率 前年度比 0%以上
  • 売上高営業利益率 3%以上
  • 売上高 30,000百万円(300億円)以上
  • PER 15倍以下
  • PBR 1.2倍以下
  • PER×PBR 22.5以下
  • 配当利回り 2.0%以上
  • 時価総額 1,000億円以上
  • EPS > 0
  • 当期純利益 > 0
これらの値は頻繁に変わるものではない。だから初期の構想はこうだった。SBI証券から財務データのCSVを落としてきて、株価に応じて変わる指標(PER・PBR・配当利回り・時価総額)だけ日次で補正をかける。あとはGitHub Actionsで日次レポートを出させる。

決算期に気づいた誤算

決算期になって気が付いた。SBI証券から落とすCSVには、四半期決算のデータが含まれていない。 疑って実測した。3月期決算企業のQ1発表ピーク(7/31→8/9)を挟んだ2世代のCSVを突き合わせたところ、共通534銘柄のうち自己資本比率・流動比率が動いたのは0件。ROE・EPS・売上高が動いたのも2件だけだった。その2件も四半期ではなく本決算を出した会社だった。 これではファンダメンタルの変化を一年に一回しか捉えられない。株価だけが毎日動く凍った財務データの上で、割安に見えているだけの銘柄を毎朝出力していたことになる。データソースの入れ替えが必要だと考えた。

IRBANKのAPIを見つけた

調査していくと、IRBANKが「プログラムから直接データを取りに行ける窓口(API)」を公開していることに気が付いた。人間がブラウザで画面を見にいく代わりに、プログラムが自動でデータを取りに行けるということだ。 利用にはIRBANK Connectで発行してもらう専用の合言葉(APIキー)が必要で、これを付けてリクエストを送ると、財務データが返ってくる。ベータ期間中は無料で、1日4,000回、1分間60回までという上限はあるが、今の使い方だとその1割も使わない。使わない手はないと考えた。 何より便利だったのが、スクリーニング専用の窓口があったこと。「PER20倍以下、ROE5%以上」といった条件を送るだけで、条件に合う銘柄と、その指標の値が一覧で返ってくる。SBIの画面をポチポチクリックして、10項目ずつCSVを小分けにダウンロードしていた作業が、条件を書いたファイル1つに置き換わった。

一次スクリーニングの条件

まずは下記を取得する。
  • PER 20倍以下
  • PBR 2倍以下
  • 配当利回り 2%以上
  • 連続配当年数 10年以上
  • EPSの5年平均成長率 0%以上
  • ROE 5%以上
  • 営業キャッシュフロー 0より大きい
  • 売上高成長率 0%以上
  • 経常利益成長率 0%以上
  • 営業利益率 3%以上
  • 自己資本比率 40%以上
  • D/Eレシオ 1倍以下
  • 流動比率 120%以上
  • 時価総額 1,000億円以上
  • 追加判定「PER × PBR」22.5以下
さらに参考情報として下記を取得する。
  • Piotroskiスコア
  • Sloanレシオ
  • 過去レンジ内での位置(PER・PBR・配当利回り)
  • 自社株買い利回り
参考情報のほうは絞り込みには使っていない。あくまで最終的な判断をするさいの指標の1つとして取得をしている。 直近(8/28)の実行だと、APIから97銘柄が返ってきて、PER×PBRで18銘柄落ちて79銘柄が候補になった。
 

GitHub Actionsで日次実行

GitHub ActionsはGitHubが提供する自動実行の仕組みで、リポジトリに設定ファイル(YAML)を1つ置いておくだけで使える。「いつ」「何を」実行するかを書いておけば、自分のPCを起動していなくてもGitHub側のサーバーが指定時刻に処理を走らせてくれる。無料枠の範囲内で収まっているので、費用もかかっていない。 今回は下記のように、平日の朝に自動実行されるようスケジュールを組んだ。
on:
  schedule:
    # JST 平日 8:30(UTC 23:30 日〜木)
    - cron: "30 23 * * 0-4"
やることは3つだけ。スクリーニングを実行し、通過銘柄の四半期決算の進捗を評価し、結果をコミットする。 JST 8:30にしているのは、TDnet由来のデータが開示から24時間遅延するため。前日の開示が反映されたタイミングで、寄り付き前に結果が出る。 APIの消費は79銘柄で158リクエスト。1日4,000の枠に対して4%しか使っていない。財務は24時間・株価は12時間キャッシュしてリポジトリにコミットしているので、同日の再実行はAPIを1本も叩かない。 なおIRBANKのデータは再配布禁止なので、リポジトリはprivateにしている。

四半期の進捗を見る

そもそもSBIを捨てた理由が「四半期決算を捉えられない」だったので、ここが本命になる。 見たいのは、会社が「今年はこれくらい儲かる見込みです」と発表した通期予想に対して、今どこまで進んでいるか。たとえば通期の営業利益予想が500億円で、1〜3月期(Q1)だけで150億円稼げていれば進捗30%、という話だ。 ところがIRBANKの実績データには、この会社側の予想数値が含まれていなかった。探した結果、決算短信(決算発表直後に出る速報資料)に会社の予想が書かれていることに気づき、そこから拾うことにした。 この進捗率をそのまま見るだけでは足りない。会社によって儲かる時期が偏っているからだ。たとえばQ4(1〜3月期)に売上が集中する会社は、Q1時点では進捗が25%より低く見えて当然で、それを「進捗が遅い」と判断すると誤りになる。 そこで、今年のQ1の進捗率を「その会社の過去3年間のQ1進捗率の平均」と比べるようにした。平年並みなら1.0倍、平年より速ければ1.0より大きい値になる。この季節調整した値と、営業利益・経常利益・純利益・売上高それぞれの進捗率、前年同期との比較を組み合わせて、0〜100点の1つのスコアにまとめている(営業利益の進捗を最も重く見ている)。
 

出口はAIへのプロンプト

ここまでは全部自動化できる。候補銘柄の抽出からスコア付けまでを日次で回し、そのままAIに渡せるプロンプトの形で出力するところまでは、人の手を介さずに毎朝できあがっている。実際は指示文つきで79銘柄まとめて渡しているが、ここでは8/28実行分から横浜ゴムだけを抜き出して実際にAIに投げてみた。
# 日本株バリュー候補 決算進捗レビュー依頼 — 20260828

## あなたの役割

あなたは日本株専門のバリュー投資ファンドマネージャーです。
以下はグレアム型スクリーニング通過銘柄の四半期決算進捗データです。銘柄の進捗の質を評価し、buy / watch / skip と根拠を述べてください。

- 数値の読み上げは不要です。数値から読み取れる示唆・懸念を述べてください
- 進捗が良くても一過性要因(為替・特需・季節ズレ)の可能性を検討してください
- 知識カットオフ以降の決算・ニュースを把握できない場合はその旨を明示してください

## 候補抽出の前提(ルールベース側で確認済み・再チェック不要)

- IRBANKスクリーニング: PER≤20 / PBR≤2.0 / 配当利回り≥2% / 連続配当≥10年 / ROE≥5% / 自己資本比率≥40% / 流動比率≥120% ほか17条件
- グレアム基準: PER×PBR ≤ 22.5

## データの読み方と注意

- 進捗率 = 当期累計実績 ÷ 会社通期予想(決算短信サマリー由来)
- 季節性 = 当年進捗率 ÷ 過去3年同時期の平均進捗率。1.0前後が例年並み
- スコア(0-100)は営業利益進捗30・経常20・純利15・売上10・前年同期比15・季節性10の加重
- TDnet由来データは開示から24時間遅延
- PER・PBR・配当利回り・時価総額は、スクリーニング時点(2026-08-28T06:58:36+00:00)の値を直近終値で補正した値

## 対象銘柄

### 5101 横浜ゴム — スコア90(非常に順調)

- 決算期: 2026年度 Q2 / スコア信頼度 80%
- 割安性: 株価 7,448円(2026-08-27終値) / PER 11.2倍 / PBR 1.14 / PER×PBR 12.7 / 配当利回り 3.0% / 時価総額 1.24兆円
- 収益性・財務: ROE 10.9% / 営業利益率 12.4% / 自己資本比率 52% / D/E 0.52倍 / 流動比率 185% / 売上成長 12.8% / EPS成長5y 32.4% / 連続配当 17年
- 自社史比較: PERバンド 100 / PBRバンド 100 / 利回りバンド 72(0-100は過去レンジ内の位置。PER・PBRは低いほど、利回りは高いほど割安)
- 株主還元: 配当 3.0% + 自社株買い 1.3% = 総還元 4.3%
- 利益の質: Fスコア 8/9 / Sloan比率 10.6%(高いほど利益がキャッシュの裏付けを欠く)
- 売上高: 進捗 48%(予想 1.32兆円) / 累計 6,394億円 / 前年同期比 +10.4%
- 営業利益: 進捗 55%(予想 1,995億円) / 累計 1,097億円 / 前年同期比 +100.0%
- 経常利益: 進捗 N/A / 累計 N/A / 前年同期比 N/A
- 純利益: 進捗 62%(予想 1,170億円) / 累計 726億円 / 前年同期比 +104.2%
- 季節性: 過去3年同時期平均の1.48倍(例年よりかなり順調)
- 会社予想: 修正あり
このプロンプトに対して、実際に返ってきた回答が下記。
横浜ゴム(5101)— 判定: Watch 前提の確認: 私の知識カットオフは2026年1月末のため、本銘柄の4-6月期以降の決算情報は本来把握できません。ただしWeb検索で直近の適時開示・決算発表を確認できたため、それを踏まえてコメントします。 スコアの中身をそのまま信用しない方がいい理由 進捗率・前年同期比ともに突出して良好ですが、季節性1.48倍という数値が最大の警告サインです。例年の1.5倍近いペースで進捗しているということは、「順調な事業」というより「今期だけ特別な何かが起きている」可能性を疑うべき局面です。 検索で確認したところ、これは的中していました。上期(1-6月)決算で以下が判明しています。
  • 連結子会社(Alliance Tire Company)が保有する旧イスラエル工場敷地を売却し、約300億円の売却益を第2四半期に特別計上。横浜ゴムは2026年12月期の連結業績予想を上方修正しました。第2四半期(中間期)の営業利益は前回予想から185億円増の860億円、親会社株主に帰属する中間利益は190億円増の450億円となる見通しです。
  • 同時に円安・販売価格是正・コスト改善も上振れに寄与。
  • 実績はその上方修正後予想すら上回り、半期累計(1-6月)の連結最終利益は前年同期比2.0倍の725億円に急拡大し、従来予想の450億円を上回って着地。
  • 会社発表の下期(7-12月)計算値は、前年同期比36.4%減の444億円まで落ち込む見通し。
つまり、進捗率62%・前年比+104%という数字の中身は「一過性の土地売却益+為替追い風」でかなり嵩上げされており、会社自身も下期は反動減を織り込んでいます。これは典型的な「進捗が良く見えるが本業の実力とは別物」のケースです。 その他の観察点
  • 利益の質: Fスコア8/9は財務の健全性という点では良好ですが、Sloan比率10.6%(キャッシュ裏付けの弱さを示す指標)は、特別益計上と整合的です。営業CFベースでの実態利益を別途確認すべきです。
  • 配当: 年間配当を134円→223円へ大幅増配していますが、この原資の一部も特別益由来である点は留意が必要です。増配自体は株主還元姿勢として前向きですが、来期以降の維持可能性は本業利益の水準次第です。
  • バリュエーション: PER11.2倍・PBR1.14倍・PER×PBR12.7はグレアム基準に対して十分な余裕があり、自社史比較でもPER・PBRバンドともに100(過去最安値圏)です※。ただしこの「割安さ」は特別益込みの通期予想EPSに基づくため、特別益を除いた正常収益ベースで再計算すると実質PERはこれよりやや切り上がる点は割り引いて見るべきです。
  • 為替(円安)はタイヤという輸出比率の高い事業構造上、一過性というより構造的な追い風の側面もありますが、今後の円相場次第で反転リスクがある点は変わりません。
判定: Watch 本業の収益力自体(自己資本比率52%、ROE10.9%、営業利益率12.4%、流動比率185%などの財務体質)は良好で、バリュエーションも歴史的に見て割安水域にあります。しかし今回の「非常に順調」という見た目は、土地売却益という一過性要因に大きく依存しており、会社自身が下期の大幅減益を予告しています。この銘柄をBuyとするなら、特別益を除いた正常収益ベースでのPER再計算と、下期(Q3以降)の実際の着地を確認してからの方が安全です。現時点でのスコア90は「一過性込みの評価」であり、実力ベースではもう一段見極めが必要という意味でWatch評価とします。
※ このバンドの解釈は誤り。IRBANKのperBandPos仕様上、100は過去レンジの中でもっとも割高な水準を指す(0が割安端)。つまり実際には「自社史上もっとも割高な水準で評価されている」ということで、この回答はここを取り違えている。Web検索で決算の中身までは正しく裏取りできても、スクリーニング側の指標定義まではAIが正しく覚えているとは限らない、という一例でもある。 季節性1.48倍という一次スコアの異常値をきっかけに、AIがWeb検索で「連結子会社が保有する旧イスラエル工場敷地の売却益(約300億円)」という一過性要因を突き止め、会社自身が予告している下期の反動減まで拾ってきた。スクリーニングのスコアだけを見ていたら「非常に順調」で流していたはずの銘柄が、実は特別益に嵩上げされた数字だったとわかる一例になった。 ここでもう一段掘り下げて、Web検索ではなくIRBANKのMCP経由でEDINET提出の半期報告書本文のMD&Aセクションを直接取得し、一次資料で裏を取ってみた。
横浜ゴム(5101)— 判定の更新: Watch(ただしBuy寄りにやや近づいた) Web検索で得ていた「土地売却益」の話はこれで数字込みで確認でき、加えてWeb検索だけでは出てこなかった重要な情報が2つ見つかった。 ① 一過性要因の内訳(プラスとマイナス両方あった)
  • 旧イスラエル工場敷地売却益: +353億2百万円(プラスの特殊要因)
  • 米国セーラム工場閉鎖に伴う一時費用: ▲149億52百万円(マイナスの特殊要因)
  • 差引ネットで営業利益に約+203億円の押し上げ
② 「事業利益」ベースで見ると実は本業の伸びも本物 半期報告書は「事業利益」(売上収益-売上原価-販管費、特別項目除く実質ベース)を別掲しており、これが前年同期比+54.3%(621億→958億円)。ヘッドラインの「営業利益+100.0%」は特殊要因込みの数字で、それを除いた実力ベースの伸びは54.3%。高付加価値タイヤ(AGW・ハイインチ品)の販売増、OHT事業の高収益性を伴う数量増、MB事業の収益性改善、コスト構造改革の内部努力によるものと開示されている。「全部一過性」ではなく、コア収益力自体も相応に改善している、というのが正確な評価。 ③ 営業キャッシュフローが悪化(新たな懸念材料) 記録的な増益にもかかわらず、営業活動によるキャッシュフローは▲87.8億円(前年同期比340.5億円の悪化)。棚卸資産の増加と法人税支払いが主因とMD&Aに明記。増益なのに営業CFがマイナスというのは、スコアデータのSloan比率10.6%と整合的な、実際のキャッシュ創出力に対する黄色信号。
論点 Web検索ベース 一次資料ベース
一過性要因 土地売却益300億円のみ把握 土地売却益353億円とセーラム工場閉鎖費150億円の両建てを確認、ネット影響を定量化
本業の実力 不明瞭 事業利益+54.3%と判明、本業も相応に強い
キャッシュの裏付け Sloan比率10.6%で示唆のみ 営業CF実額▲87.8億円(前年同期比▲340億円)で実態を確認
判定: 引き続きWatch(ただしBuy寄りにやや近づいた)。特殊要因を除いても本業の増益ペース(+54.3%)は本物であり、これは前回の「見た目だけの好進捗」という懸念をやや和らげる。一方で、増益局面での営業CF悪化(棚卸増・納税)は新たに浮上した論点で、次のQ3決算短信で在庫回転と営業CFの改善が確認できるかを見るべき。会社側の下期ネット利益ガイダンス(前年同期比▲36.4%目線)は主に土地売却益の非反復によるもので、事業利益ベースの実質成長トレンドとは別物として区別して評価する必要がある。
Web検索止まりだと「土地売却益で嵩上げされた一過性の好決算」で終わっていた評価が、IRBANKのMCPで一次資料まで遡ると「特殊要因はネットで押し上げ効果があったが、本業自体も事業利益ベースで+54.3%伸びている一方、営業CFはむしろ悪化している」という、より立体的な像に更新された。 ただ、ここから先の「買うか・様子見か・見送るか」の最終判断は、結局人がやることになる。プロンプトをAIに渡せば、それらしい判断は返ってくる。でも直近の業績動向まではAIも把握しきれていないことが多いので、鵜呑みにはできない。 とはいえ、これは毎日ゼロから判断し直すという意味ではない。ファンダメンタル分析が対象にしているのは四半期に一度くらいしか変わらない数字なので、候補の顔ぶれ自体は日によってそう大きくは動かない。日次の出力は「今日ちゃんと見るべき銘柄はどれか」を絞り込むための一次判断であって、そこから気になった銘柄の決算資料を実際に読みに行く、というのを地道に繰り返していく運用になる。 重要なのは、この一次判断までを自動化して、人が毎日目を通す銘柄の数を減らすこと。 もう一つ、まだ答えが出ていない課題がある。決算資料をAIに読み込ませて「この銘柄は良さそうだ」と分析させた結果を、その場で見て終わりにするのではなく、次回以降のスクリーニングやスコアリングにどう活かすか、という話だ。読ませるたびに毎回ゼロから判断させるのではなく、AIが読んだ内容を何らかの形でデータとして蓄積し、仕組み側にフィードバックできれば、判断の精度は上がっていくはず。ここは今後の課題として残っている。

※ 本記事は個人が趣味で作っているツールの設計記録であり、特定銘柄の推奨や投資勧誘ではありません。投資判断はご自身の責任で行ってください。

コメント

タイトルとURLをコピーしました