日本株スクリーニングは「銘柄探し」ではなく「作業の標準化」です
日本株で利益を狙うとき、多くの個人投資家は最初に「どの銘柄を買えばよいか」と考えます。しかし実務的には、いきなり銘柄名を探すよりも先にやるべきことがあります。それは、銘柄を探す作業そのものを標準化することです。
日本市場には数千社の上場企業があります。毎日ニュースを追い、SNSで話題の銘柄を見て、ランキング上位を眺めるだけでは、どうしても判断が場当たり的になります。たまたま見つけた銘柄に飛びつき、買ったあとに決算内容を調べ、下がってからリスクに気づく。この順番では、投資判断の品質が安定しません。
そこで有効なのが、ChatGPTとPythonを組み合わせた日本株スクリーニングの自動化です。Pythonは大量のデータを機械的に処理するのが得意です。ChatGPTは、条件設計、コード作成、指標の意味の整理、分析コメントの下書きに使えます。この2つを組み合わせると、個人投資家でも「毎回同じ基準で候補銘柄を抽出する仕組み」を作れます。
重要なのは、AIに「上がる株を教えて」と聞くことではありません。ChatGPTは予言者ではありません。使い方を間違えると、もっともらしい説明に引っ張られて判断を誤ります。正しい使い方は、投資家が決めた条件をPythonで実行し、その結果をChatGPTで読みやすく整理することです。つまり、AIを売買判断の代行者ではなく、調査工程の補助者として使うのです。
自動化で狙うべきゴール
スクリーニング自動化の目的は、最初から完璧な売買システムを作ることではありません。まず狙うべきゴールは、候補銘柄を効率よく絞り込むことです。たとえば全上場銘柄の中から、財務が悪い企業、流動性が低すぎる企業、株価が長期下落トレンドの企業を除外するだけでも、調査対象は大きく減ります。
人間の集中力は限られています。1日に丁寧に読める決算短信や有価証券報告書の数は、多くても数社から十数社程度です。であれば、最初の段階で見るべき銘柄を機械的に絞る価値は非常に大きいです。自動化の本質は、投資アイデアを増やすことよりも、無駄な調査を減らすことにあります。
また、自動化には感情を排除する効果もあります。株価が急騰している銘柄を見ると、人間はどうしても「乗り遅れたくない」と感じます。一方でPythonは、条件に合わない銘柄を淡々と除外します。たとえば売上成長率が鈍化している、営業利益率が低下している、出来高が不足している、信用買い残が過大である、といった条件を入れておけば、話題性だけで候補に残る銘柄を減らせます。
自動化されたスクリーニングは、あくまで一次選考です。最終判断では、事業内容、競争優位、経営陣、決算説明資料、株価位置、需給、バリュエーションを人間が確認する必要があります。しかし一次選考を標準化するだけで、投資の再現性は大きく上がります。
まず決めるべき4つのスクリーニング軸
日本株スクリーニングを作るときは、最初に指標を詰め込みすぎないことが重要です。最初からPER、PBR、ROE、ROIC、自己資本比率、売上成長率、営業利益率、配当利回り、信用倍率、移動平均線、RSI、MACDなどを全部入れると、条件の意味が分からなくなります。
実務では、まず4つの軸に分けて考えると整理しやすくなります。第一に業績の伸びです。売上や営業利益が伸びているかを見ます。第二に収益性です。売上が伸びていても利益率が低すぎる企業は、成長しても株主価値が増えにくい場合があります。第三に財務安全性です。借入が過大で資金繰りに弱い企業は、相場環境が悪化したときに株価が崩れやすくなります。第四に株価と出来高の勢いです。どれほど業績が良くても、市場がまだ評価していなければ株価上昇には時間がかかります。
この4軸を使えば、かなり実践的なスクリーニングになります。たとえば「売上成長率10%以上、営業利益率5%以上、自己資本比率30%以上、株価が200日移動平均線より上、直近出来高が過去平均より増加」という条件を設定します。これだけでも、赤字の話題株、財務が弱い低位株、流動性のない銘柄をかなり除外できます。
初心者がやりがちな失敗は、単一指標に頼ることです。PERが低いから割安、PBRが1倍割れだから買い、高配当だから安心、という判断は危険です。低PERには成長鈍化が織り込まれていることがあります。PBR1倍割れには資本効率の低さが反映されている場合があります。高配当には減配リスクが隠れていることがあります。複数の軸を組み合わせることで、こうした落とし穴を減らせます。
ChatGPTに任せる作業と任せてはいけない作業
ChatGPTは便利ですが、投資で使う場合は役割を明確に分ける必要があります。任せてよい作業は、条件設計の整理、Pythonコードの雛形作成、指標の意味の説明、エラー修正、分析レポートの文章化です。任せてはいけない作業は、根拠のない銘柄推奨、最新データの断定、将来株価の予測、未確認情報を前提にした判断です。
たとえばChatGPTには、次のように依頼できます。「売上成長率、営業利益率、自己資本比率、200日移動平均線、出来高増加率を使って、日本株の候補を抽出するPythonコードを作ってください」。この依頼なら、ChatGPTはコード作成の補助として機能します。
一方で、「今一番上がる日本株を教えてください」という依頼は、投資判断としては危険です。ChatGPTがもっともらしい銘柄名を出しても、データの時点、前提、株価位置、決算内容、需給状況が不明なら使えません。AIの回答をそのまま売買に使うのではなく、データ処理と仮説整理に使うのが現実的です。
さらに、ChatGPTはコードの説明にも使えます。Pythonに慣れていない投資家は、いきなりコードを書こうとすると挫折しやすいです。その場合は「このコードを1行ずつ説明してください」「初心者向けに関数の意味を説明してください」「エラーの原因を教えてください」と聞けば、学習コストを下げられます。
つまり、ChatGPTは投資助言者ではなく、投資調査のアシスタントとして扱うべきです。人間が投資方針を決め、Pythonが計算し、ChatGPTが作業効率を上げる。この役割分担が最も安定します。
Pythonで作る基本スクリーニングの考え方
Pythonで日本株スクリーニングを作る場合、基本の流れはシンプルです。まず銘柄データを読み込みます。次に必要な指標を計算します。そのうえで条件に合う銘柄だけを抽出します。最後にランキング化してCSVやExcelに出力します。
データは、最初は手元のCSVでも十分です。証券会社のスクリーニング結果、株価データ、財務データをCSVで取得し、Pythonで読み込む形から始めればよいです。最初からAPI連携や自動ダウンロードまで作ろうとすると、データ取得部分でつまずきます。初心者は「手動でCSVを用意し、Pythonで処理する」段階から始めるのが現実的です。
たとえばCSVに、銘柄コード、銘柄名、売上成長率、営業利益率、自己資本比率、PER、PBR、時価総額、終値、200日移動平均、直近出来高、平均出来高が入っているとします。このデータをPythonで読み込み、条件を満たす行だけを抽出します。
考え方としては、次のような条件を作ります。売上成長率が10%以上、営業利益率が5%以上、自己資本比率が30%以上、時価総額が100億円以上、終値が200日移動平均線より上、直近出来高が平均出来高の1.5倍以上。この条件を満たす銘柄を抽出すれば、成長性、収益性、財務、流動性、株価トレンドを最低限チェックできます。
ただし、条件を厳しくしすぎると候補がほとんど残りません。逆に緩すぎると雑多な銘柄が大量に残ります。最初は30〜100銘柄程度が残るように調整すると実務で使いやすいです。そこから決算資料を読む対象を10銘柄程度に絞れば、個人投資家でも継続しやすくなります。
実践用のスクリーニング条件例
ここでは、実際に使いやすい条件例を紹介します。目的は「短期の急騰銘柄を当てること」ではなく、「調査する価値のある日本株を安定して見つけること」です。
成長株候補を探す条件
成長株を探すなら、売上成長率と営業利益成長率を重視します。売上だけが伸びていても、広告費や人件費が膨らみ利益が出ていない企業は、相場環境が悪くなると評価が急落しやすいです。そこで、売上成長率10%以上、営業利益成長率15%以上、営業利益率5%以上という条件を使います。
さらに、株価が200日移動平均線より上にあることを条件に入れます。これは、市場がその企業を一定程度評価し始めているかを見るためです。業績が良くても株価が長期下落トレンドなら、まだ市場の評価が変わっていない可能性があります。
割安成長株を探す条件
割安成長株を探す場合は、成長率とバリュエーションのバランスを見ます。たとえば売上成長率8%以上、営業利益成長率10%以上、PER15倍以下、PBR2倍以下、自己資本比率40%以上といった条件です。
ただし、PERが低い企業には理由があります。成長が一時的、景気敏感、利益がピーク圏、主力事業が縮小している、株主還元が弱い、といった背景があるかもしれません。スクリーニングで抽出されたあとに、なぜ割安に放置されているのかを確認する必要があります。
需給改善銘柄を探す条件
株価は業績だけでなく需給でも動きます。需給を見るなら、出来高増加率、信用買い残の減少、信用倍率の改善、年初来高値更新などが有効です。たとえば、直近出来高が過去20日平均の2倍以上、株価が過去60日高値を更新、信用買い残が前週比で減少、という条件を組み合わせます。
このタイプのスクリーニングは、短中期のモメンタム銘柄を見つけるのに向いています。ただし急騰後は反落も大きくなります。候補に残った銘柄については、決算、材料、出来高の継続性を必ず確認したいところです。
Pythonコードは「読める形」にすることが重要です
投資家がPythonを使う場合、最初から高度なコードを書く必要はありません。むしろ重要なのは、あとから自分で条件を修正できることです。ブラックボックス化したコードは、相場環境が変わったときに使えなくなります。
たとえば、条件をコード内に直接書くのではなく、変数として分けておくと便利です。売上成長率の最低値、営業利益率の最低値、自己資本比率の最低値、出来高倍率の最低値を上部にまとめておけば、後から簡単に調整できます。
実務では、スクリーニング条件を固定せず、相場環境に応じて変えることが重要です。グロース株相場では売上成長率や株価モメンタムを重視し、金利上昇局面ではPERやフリーキャッシュフローを重視する。景気後退が意識される局面では自己資本比率や営業キャッシュフローを重視する。このように条件を変えられる設計にしておくと、長く使えます。
また、コードにはコメントを入れるべきです。「売上成長率10%以上で成長性を確認」「200日移動平均線より上で長期トレンドを確認」「出来高倍率で市場参加者の増加を確認」といったコメントがあるだけで、数カ月後に見返したときの理解が大きく変わります。
ChatGPTには、コード作成だけでなく「このコードに初心者向けのコメントを追加してください」と依頼できます。これにより、学習しながら自分専用のスクリーニングツールを育てることができます。
スコアリング方式にすると銘柄比較がしやすくなります
単純な条件抽出に慣れてきたら、次はスコアリング方式に進むと実用性が上がります。条件に合うか合わないかだけでなく、各銘柄に点数を付けて比較する方法です。
たとえば売上成長率が高いほど加点、営業利益率が高いほど加点、自己資本比率が高いほど加点、株価が200日移動平均線を上回っていれば加点、出来高増加率が高ければ加点、といった形です。これにより、候補銘柄をランキング化できます。
スコアリングの利点は、条件を少し外れた優良銘柄を拾えることです。たとえば営業利益率が4.8%で条件の5%にわずかに届かない企業でも、売上成長率や財務が非常に良ければ候補として見る価値があります。完全な足切り方式では、こうした銘柄を落としてしまいます。
一方で、スコアリングには注意点もあります。点数の付け方によって結果が大きく変わります。売上成長率を重視しすぎれば赤字成長企業が上位に来やすくなり、PERを重視しすぎれば低成長企業が上位に来やすくなります。そのため、スコアは絶対的な正解ではなく、銘柄比較の補助として使うべきです。
実務では、総合スコアに加えて、成長スコア、収益性スコア、財務スコア、モメンタムスコアを分けて表示すると見やすくなります。たとえば総合点は高いが財務スコアが低い銘柄は、攻めの候補として見る。成長スコアは低いが財務と配当が安定している銘柄は、守りの候補として見る。このように分類できます。
抽出後に必ず確認すべきポイント
スクリーニングで候補が出たあと、すぐに買うのは危険です。機械的な条件は、企業の中身までは理解していません。抽出後には、最低でも5つの確認が必要です。
第一に、直近決算の内容です。売上と利益が伸びている理由を確認します。値上げによる利益改善なのか、数量増なのか、一時的な特需なのか、為替影響なのかで評価は変わります。特需で伸びているだけなら、翌期に反動減が出る可能性があります。
第二に、通期予想の進捗率です。第1四半期で通期利益の40%を達成している企業は上方修正期待が出やすい一方、季節性が強い企業では単純比較できません。過去数年の四半期ごとの利益配分も確認したいところです。
第三に、株価位置です。どれほど良い企業でも、すでに急騰して短期的に過熱していれば押し目を待つ判断もあります。週足や月足で見ると、日足では分からない上値抵抗線が見えることがあります。
第四に、流動性です。出来高が少なすぎる銘柄は、買うときは問題なくても売るときに苦労します。特に時価総額が小さい銘柄では、板が薄く、少しの売りで大きく下がることがあります。自分の投資金額に対して十分な出来高があるかを確認する必要があります。
第五に、なぜ市場にまだ見落とされているのかです。良い銘柄が安く放置されている場合、そこには理由があります。IRが弱い、事業が地味、過去に下方修正を繰り返した、親子上場で資本政策に不安がある、流動性が低い、業界全体が不人気など、背景を確認します。この理由が解消される可能性があるなら投資妙味がありますが、構造的な問題なら安いままの可能性もあります。
ChatGPTで分析レポートを作る方法
Pythonで抽出した候補銘柄をCSVに出力したら、その結果をChatGPTに読み込ませて分析メモを作ることもできます。たとえば、銘柄コード、銘柄名、業種、売上成長率、営業利益率、PER、PBR、自己資本比率、出来高倍率、株価トレンドを表にして、ChatGPTに「この候補銘柄を成長性、割安性、需給の観点で分類してください」と依頼します。
この使い方の利点は、機械的な結果を人間が読みやすい形に変換できることです。数字だけの一覧では判断しにくいですが、「高成長だが割高」「割安だが成長鈍化」「需給改善が強い」「財務安定型」と分類されると、次に見るべき資料が明確になります。
ただし、ChatGPTに渡すデータは自分で確認できる範囲に限定するべきです。古いデータや欠損データを渡せば、出てくる分析も不正確になります。AIの分析コメントは、あくまで入力データに依存します。入力が雑なら出力も雑になります。
実務では、ChatGPTに最終判断を聞くのではなく、「この銘柄を調べるときに見るべきリスクを列挙してください」「この企業の利益率改善が一時的か継続的かを確認する観点を出してください」「決算説明資料で確認すべき質問リストを作ってください」と使うと効果的です。
特に個人投資家にとって有効なのは、チェックリスト化です。スクリーニングで出た銘柄ごとに、事業内容、業績推移、利益率、財務、株価位置、出来高、バリュエーション、リスク要因、次回決算日、投資仮説を埋める形式にしておけば、調査の抜け漏れが減ります。
自動化で失敗しやすい落とし穴
スクリーニング自動化には大きなメリットがありますが、落とし穴もあります。第一の落とし穴は、過去データに合わせすぎることです。過去にうまくいった条件を細かく調整しすぎると、将来の相場で機能しない可能性があります。これを過剰最適化といいます。
たとえば「売上成長率12%以上、営業利益率7%以上、PER18倍以下、出来高倍率1.7倍以上、75日移動平均線からの乖離率3〜12%」のように細かすぎる条件を作ると、過去の特定期間には良く見えても、実戦では使いにくくなります。条件はある程度シンプルな方が長く使えます。
第二の落とし穴は、データの時点を無視することです。財務データは決算発表後に更新されます。株価データは日々変わります。信用残は週次です。これらの更新タイミングを理解せずに同じ表で扱うと、判断がズレます。スクリーニング結果には、必ずデータ取得日を記録しておくべきです。
第三の落とし穴は、流動性を軽視することです。低時価総額株はスコアが高く出やすいことがあります。しかし出来高が少ない銘柄は、理論上は魅力的でも実際の売買が難しいです。特に急落時には出口がなくなります。最低出来高や売買代金の条件は必ず入れたいところです。
第四の落とし穴は、AIの説明を信じすぎることです。ChatGPTは自然な文章を作るのが得意ですが、入力データにない事実を補ってしまうことがあります。したがって、AIが作った分析文は必ず一次情報で確認する必要があります。決算短信、決算説明資料、会社発表、財務諸表を確認する工程は省略できません。
実務で使える運用フロー
自動化は、作って終わりではありません。継続運用できるフローにすることが重要です。おすすめは、週1回の定期スクリーニングです。毎日実行するとノイズが多くなり、短期の値動きに振り回されやすくなります。週末にデータを更新し、候補銘柄を抽出し、翌週に調査する銘柄を決める流れが現実的です。
具体的には、まず金曜引け後または週末に株価データと財務データを更新します。次にPythonでスクリーニングを実行します。抽出結果を成長株、割安成長株、需給改善株のように分類します。その後、上位20銘柄を確認し、決算資料を読む対象を5〜10銘柄に絞ります。
各銘柄について、投資仮説を一文で書きます。たとえば「データセンター向け需要の増加で売上成長が続き、利益率改善も確認できるため、次回決算で再評価される可能性がある」といった形です。仮説が一文で書けない銘柄は、理解が不足しているか、投資対象として複雑すぎる可能性があります。
次に、買わない理由も書きます。これは非常に重要です。「すでに株価が急騰している」「信用買い残が重い」「利益成長が一時要因」「出来高が少ない」「主力製品の競争が激しい」といった反対材料を先に把握しておくと、買ったあとに冷静さを保ちやすくなります。
最後に、監視リストへ入れます。すぐに買う必要はありません。良い銘柄でも、株価位置が悪ければ待つ方がよい場合があります。スクリーニングは買いボタンを押すための仕組みではなく、監視対象を作るための仕組みです。この認識が重要です。
小さく始めて改善するのが最短ルートです
ChatGPTとPythonを使った日本株スクリーニングは、最初から完璧を目指す必要はありません。むしろ、最初は簡単な条件で十分です。売上成長率、営業利益率、自己資本比率、株価トレンド、出来高。この5つだけでも、十分に実用的な一次スクリーニングになります。
慣れてきたら、ROE、ROIC、営業キャッシュフロー、フリーキャッシュフロー、配当性向、信用残、業種別比較、決算進捗率などを追加していけばよいです。最初から複雑にすると、何が効いているのか分からなくなります。投資でも自動化でも、シンプルに始めて改善する方が長続きします。
特に個人投資家にとって大きいのは、時間の使い方が変わることです。銘柄探しに何時間も使うのではなく、機械的に候補を出し、その後の深掘りに時間を使う。これにより、投資判断の質が上がります。
また、自分で条件を作る過程そのものが投資力の向上につながります。なぜ売上成長率を見るのか。なぜ営業利益率が重要なのか。なぜ出来高が増えた銘柄を確認するのか。なぜ財務安全性を無視してはいけないのか。こうした問いを一つずつ整理することで、単なる銘柄探しから、投資プロセスの構築へ進めます。
ChatGPTとPythonは、個人投資家にとって強力な道具です。ただし、道具は使い方次第です。AIに答えを求めるのではなく、自分の投資基準を実行するために使う。Pythonで作業を自動化し、ChatGPTで理解と検証を補助する。この形に落とし込めば、日本株の調査はかなり効率化できます。
最終的に目指すべき状態は、毎週同じ手順で候補銘柄が抽出され、なぜその銘柄が残ったのかを説明でき、買う理由と買わない理由を整理できることです。この状態を作れれば、相場の話題に流される投資から、再現性のある投資へ一歩近づけます。


コメント