日本株スクリーニングを自動化する意味
日本株の銘柄数は非常に多く、個人投資家が毎日すべてを目視で確認するのは現実的ではありません。大型株だけを見ても相当な数がありますし、東証グロース、スタンダード、小型株まで含めると、決算短信、チャート、出来高、信用需給、業績予想、配当方針、テーマ性まで人力で追うには限界があります。
そこで有効になるのが、ChatGPTとPythonを使ったスクリーニングの自動化です。ここでいう自動化とは、売買判断を機械に丸投げすることではありません。投資家が見るべき銘柄候補を事前に絞り込み、分析に使う時間を「探す作業」から「判断する作業」へ移すことです。
たとえば、毎日数千銘柄の中から「売上成長率が高い」「営業利益率が改善している」「株価が200日移動平均線を上回っている」「出来高が増えている」「PERが極端に割高ではない」といった条件を満たす銘柄だけを抽出できれば、投資効率は大きく変わります。人間が最初から全銘柄を見るのではなく、機械に一次選別をさせ、人間は最終判断に集中する。これが実務的な使い方です。
特に日本株では、情報量の多い大型株よりも、中小型株やニッチ企業に妙味が出ることがあります。しかし、そうした銘柄はニュースで大きく取り上げられる前に動き始めることも多く、発見が遅れると初動を逃します。スクリーニング自動化は、この「気づくのが遅い」という個人投資家の弱点を補うための武器になります。
ChatGPTとPythonの役割を分けて考える
まず重要なのは、ChatGPTとPythonを同じものとして扱わないことです。ChatGPTは思考の補助、設計、文章化、仮説作成、コードのたたき台作成に強みがあります。一方、Pythonは大量データの処理、計算、条件抽出、ファイル出力、繰り返し作業に強みがあります。
たとえば、投資家が「営業利益率が改善している割安成長株を探したい」と考えたとします。この段階では、ChatGPTに条件設計を相談できます。具体的には、「売上成長率は何%以上にするか」「営業利益率の改善幅は何ポイント以上を見るか」「PERの上限をどこに置くか」「時価総額を制限するか」「出来高の流動性条件を入れるか」といったスクリーニング項目を整理できます。
その後、Pythonで実際にデータを読み込み、条件に合う銘柄を抽出します。Pythonは感情を持たず、指定した条件を淡々と処理します。これは投資においてかなり大きな利点です。人間は直近で話題になっている銘柄やSNSで見た銘柄に影響されがちですが、Pythonは全銘柄を同じ基準で評価します。
つまり、ChatGPTは「投資アイデアを条件に落とし込む補佐役」、Pythonは「条件を機械的に実行する作業員」です。この役割分担を理解すると、AIを過信せず、かつ実務では非常に使える形にできます。
最初に作るべきスクリーニング条件
いきなり高度なモデルを作る必要はありません。最初は単純な条件で十分です。実戦で使いやすい基本条件は、成長性、収益性、割安性、需給、トレンドの5つです。
成長性を見る条件
成長性では、売上高成長率と営業利益成長率を見ます。売上が伸びていないのに利益だけ伸びている会社は、コスト削減や一時要因で利益が増えている可能性があります。一方、売上も利益も伸びている会社は、事業そのものが拡大している可能性が高くなります。
実務では、売上高成長率が前年比10%以上、営業利益成長率が前年比15%以上といった条件から始めると扱いやすいです。高成長株だけを狙うなら、売上20%以上、営業利益30%以上に引き上げてもよいですが、条件を厳しくしすぎると候補が少なくなります。
収益性を見る条件
収益性では、営業利益率を使います。営業利益率は、本業でどれだけ効率よく利益を出しているかを示します。製造業、小売、IT、サービス業では標準的な利益率が異なるため、全業種を同じ基準で見ると歪みが出ます。それでも、最初のスクリーニングでは営業利益率5%以上、できれば10%以上を条件にすると、赤字体質や低収益企業をある程度除外できます。
さらに有効なのは、営業利益率の改善幅を見ることです。たとえば、前年の営業利益率が4%で今期が8%なら、利益率は4ポイント改善しています。これは、値上げ、固定費吸収、プロダクトミックス改善、構造改革などが進んでいる可能性を示します。株価は利益水準そのものだけでなく、利益率の変化に反応することがあります。
割安性を見る条件
割安性ではPER、PBR、配当利回り、ネットキャッシュ比率などを使います。ただし、成長株投資でPERだけを厳しく見すぎると、良い銘柄を早い段階で捨ててしまうことがあります。PER8倍以下だけを狙うと、構造的に成長していない会社や市場から見放された会社が多く混ざります。
実務的には、まずPERの上限を30倍や40倍程度に置き、極端に過熱した銘柄を除外する使い方が現実的です。成長率が高い会社であれば、PER20倍台でも十分に投資対象になり得ます。一方、成長率が低い会社のPER30倍は重い評価です。PERは単独ではなく、利益成長率とセットで見ます。
需給を見る条件
需給では、出来高、売買代金、信用倍率、空売り残、機関投資家の空売り残高などが使えます。初心者が最初に見るべきなのは出来高です。株価が上がっていても出来高が細い銘柄は、少額の買いで動いているだけの可能性があります。逆に、出来高を伴って上昇している銘柄は、参加者が増えている可能性があります。
条件としては、直近5日平均出来高が過去25日平均出来高の1.5倍以上、または直近売買代金が一定額以上という設定が使いやすいです。小型株の場合、売買代金が少なすぎると売りたい時に売れないリスクがあります。最低でも1日売買代金5,000万円以上、より安全に見るなら1億円以上を条件にすると、実戦で扱いやすくなります。
トレンドを見る条件
トレンドでは、移動平均線を使います。たとえば、終値が25日移動平均線と75日移動平均線を上回っている銘柄、または終値が200日移動平均線を上回った銘柄を抽出します。業績が良くても株価が下落トレンドにある銘柄は、何らかの悪材料を市場が織り込んでいる可能性があります。
最初は、終値が25日線と75日線の両方を上回る、25日線が75日線を上回る、直近高値を更新している、という単純な条件で十分です。複雑なテクニカル指標を増やすよりも、価格が上向いているかどうかを素直に見る方が使いやすいです。
実務で使えるスクリーニングの設計例
ここでは、架空の条件で具体的な設計例を示します。目的は「業績が伸びていて、株価も上昇基調にあり、まだ過熱しすぎていない日本株を探す」ことです。
条件は次のように設定します。売上高成長率は前年比10%以上、営業利益成長率は前年比15%以上、営業利益率は8%以上、PERは40倍以下、時価総額は100億円以上2,000億円以下、直近売買代金は1億円以上、終値は75日移動平均線より上、直近20日高値からの下落率は15%以内。この条件なら、極端な低流動性銘柄や高値から崩れた銘柄を避けながら、成長性とトレンドを兼ね備えた候補を抽出できます。
この設計のポイントは、完璧な銘柄を探すのではなく、調査対象を絞ることです。たとえば全銘柄が3,800社あるとして、この条件で40社まで絞れれば十分です。その40社を決算短信、説明資料、月次、チャート、信用需給、競合比較で確認すれば、投資判断の質はかなり上がります。
また、条件には意図を持たせる必要があります。時価総額100億円未満を除外するのは、流動性が極端に低い銘柄を減らすためです。2,000億円以下にするのは、大型株よりも成長余地のある中型株を重視するためです。PER40倍以下にするのは、成長株の許容範囲を残しつつ、過度な期待先行銘柄を避けるためです。
Pythonで処理するデータの形
Pythonでスクリーニングするには、まずデータを表形式にする必要があります。CSVファイルで管理する場合、最低限必要な列は、銘柄コード、銘柄名、業種、時価総額、終値、出来高、売買代金、PER、PBR、売上高成長率、営業利益成長率、営業利益率、25日移動平均、75日移動平均、200日移動平均です。
最初から完璧なデータベースを作る必要はありません。証券会社のスクリーニング機能、株探、各種データサービス、四季報オンライン、IR情報などから取得したデータをCSVとして保存し、Pythonで読み込むだけでも実用的です。毎日自動取得までやろうとすると難易度が上がるため、最初は手動でCSVを更新し、抽出作業だけを自動化するのが現実的です。
データの形はシンプルで構いません。たとえば、stocks.csvというファイルに各銘柄の指標を横並びで入れます。Python側ではpandasというライブラリを使えば、Excelのような表計算感覚で条件抽出できます。
実際のコードの考え方は次の通りです。CSVを読み込む。数値列を計算できる形式に変換する。条件を設定する。条件を満たす銘柄だけを抽出する。スコアを付ける。結果をCSVに出力する。この流れを一度作れば、次回からはデータを差し替えて実行するだけになります。
スコアリングで候補銘柄に優先順位を付ける
スクリーニングでありがちな失敗は、条件に合った銘柄が多すぎて結局見きれないことです。そこで、条件通過後にスコアリングを行います。スコアリングとは、銘柄に点数を付けて優先順位を決める仕組みです。
たとえば、売上成長率が高いほど加点、営業利益成長率が高いほど加点、営業利益率が高いほど加点、PERが低いほど加点、出来高増加率が高いほど加点、株価が高値圏を維持しているほど加点、という形にします。ただし、すべてを同じ重みで見る必要はありません。
成長株を探すなら、売上成長率と営業利益成長率の比重を高くします。割安株を探すなら、PER、PBR、ネットキャッシュ比率の比重を高くします。モメンタム株を探すなら、株価の高値更新、出来高増加、移動平均線の並びを重視します。
具体例として、成長性40点、収益性20点、割安性20点、需給10点、トレンド10点の合計100点で評価します。売上成長率が20%以上なら20点、10%以上なら10点。営業利益成長率が30%以上なら20点、15%以上なら10点。営業利益率が15%以上なら20点、8%以上なら10点。PERが20倍以下なら20点、40倍以下なら10点。出来高が増えていれば10点。終値が75日線を上回っていれば10点。このような単純な設計でも、候補の優先順位付けには十分使えます。
重要なのは、スコアが高い銘柄をそのまま買うのではなく、調査順を決めるために使うことです。スコアはあくまで入口です。最終的には事業内容、競争優位性、決算の質、需給、株価位置、リスクを確認する必要があります。
ChatGPTを使った条件改善の方法
ChatGPTは、スクリーニング条件を改善する壁打ち相手として使えます。たとえば、抽出結果が多すぎる場合は「候補が200社出てしまった。成長株投資の観点で、どの条件を追加すると質を落とさず絞れるか」と質問できます。逆に候補が少なすぎる場合は「条件が厳しすぎて5社しか出ない。投資妙味を残しながら緩めるならどこか」と聞けます。
また、抽出された銘柄の一覧を貼り付け、業種別に偏りがないか、指標の見方に矛盾がないか、確認することもできます。たとえば、PERが低く利益成長率も高い銘柄が出た場合、それは本当に割安成長株なのか、それとも一時的な特需で利益が膨らんだだけなのかを検討する必要があります。ChatGPTには「一時要因を疑うべきチェックポイント」を出させると有効です。
ただし、ChatGPTに銘柄の最終判断を任せるべきではありません。AIは、入力データが古い、前提が曖昧、企業固有の最新事情を拾いきれない、といった限界があります。使い方としては、思考の抜け漏れを減らす、分析観点を増やす、コード作成を補助する、説明を整理する、という範囲が適切です。
実戦的なワークフロー
実際に運用するなら、毎日または週1回の定型作業に落とし込むのが効果的です。おすすめは、週末に中長期候補を抽出し、平日は値動きと出来高だけを確認する運用です。
週末には、最新の株価データと財務データをCSVに更新します。その後、Pythonでスクリーニングを実行し、候補銘柄を抽出します。抽出結果は、スコア順、業種別、時価総額別、出来高増加率順などに並べ替えて保存します。さらに、上位20銘柄だけを調査リストに入れます。
平日は、調査リストに入れた銘柄だけを監視します。全市場を毎日見るのではなく、自分が事前に選んだ候補群に集中します。具体的には、株価が25日線を維持しているか、出来高が急増していないか、決算発表日が近くないか、材料が出ていないかを確認します。
この運用にすると、銘柄探しに消耗しません。投資判断の質は、情報量を増やせば自動的に上がるわけではありません。むしろ、毎日あれこれ見すぎると判断がブレます。自動化の目的は、見るべき対象を限定し、同じ基準で継続的に観察することです。
具体例:成長株候補を抽出する手順
架空の例で考えます。A社は売上成長率18%、営業利益成長率35%、営業利益率12%、PER22倍、時価総額450億円、直近売買代金3億円、終値は75日線より8%上にあります。B社は売上成長率5%、営業利益成長率40%、営業利益率6%、PER9倍、時価総額120億円、売買代金4,000万円です。C社は売上成長率25%、営業利益成長率50%、営業利益率18%、PER60倍、時価総額1,500億円、売買代金20億円です。
この場合、A社はバランスが良い候補です。成長率、利益率、PER、流動性、トレンドが大きく崩れていません。B社はPERだけ見ると割安ですが、売上成長が弱く流動性も低いため、優先順位は下がります。C社は成長性と収益性は高いものの、PERが高いため、決算ミスへの耐性が低い可能性があります。
Pythonでこの3社をスコアリングすると、A社が上位、C社が次点、B社は低めになる設計が実務的です。なぜなら、成長株投資では、安さだけでなく、成長の持続性と株価トレンドが重要だからです。安い銘柄がさらに安く放置されることは珍しくありません。逆に、質の高い成長株はPERが少し高くても買われ続けることがあります。
このような判断を毎回感覚で行うのではなく、スコアで一次評価すると、投資判断が安定します。もちろん、スコアが高いから安全という意味ではありません。スコアは「調べる価値の高さ」を示すものです。
避けるべき自動化の落とし穴
自動化にはメリットがありますが、落とし穴もあります。第一に、データの質です。古いデータ、欠損データ、単位が混在したデータを使うと、結果は簡単に歪みます。たとえば、売上高の単位が百万円と円で混在していれば、成長率計算は壊れます。時価総額の列にカンマや文字が混ざっている場合も、Pythonで正しく計算できないことがあります。
第二に、過剰最適化です。過去に上がった銘柄の特徴に合わせて条件を細かく作りすぎると、過去には強いが将来には弱いスクリーニングになります。条件はシンプルに保つ方が長く使えます。売上成長、利益成長、利益率、バリュエーション、出来高、トレンド。この程度の軸で十分です。
第三に、スクリーニング結果を売買シグナルと勘違いすることです。スクリーニングは候補抽出であり、売買判断ではありません。実際に買う前には、決算短信、説明資料、業績予想の前提、事業リスク、株価位置、需給、チャートの節目を確認する必要があります。
第四に、マーケット環境を無視することです。地合いが悪い時期は、どれだけ良い銘柄でも下がることがあります。特にグロース株は金利やリスク許容度の影響を受けやすいです。個別株スクリーニングだけでなく、日経平均、TOPIX、グロース市場指数、米国株、為替、金利も併せて確認する必要があります。
上級者向けの拡張アイデア
基本形に慣れたら、スクリーニングをさらに高度化できます。ひとつは、決算発表後の反応を条件に加える方法です。好決算にもかかわらず株価が下がらない銘柄、ギャップアップ後に5日線を割らない銘柄、出来高を維持したまま横ばい調整している銘柄は、需給が強い可能性があります。
もうひとつは、業種別の相対比較です。PER20倍が高いか安いかは業種によって違います。ITサービスでPER20倍なら普通でも、成熟製造業でPER20倍なら高い場合があります。そこで、同業種内でPER、営業利益率、売上成長率を順位化し、業種内で上位の銘柄だけを抽出する方法があります。
さらに、株価のモメンタムを数値化することもできます。過去1カ月、3カ月、6カ月の騰落率を計算し、市場平均を上回る銘柄に加点します。強い銘柄は強いまま推移することがあり、日本株でもモメンタムは有効な局面があります。ただし、急騰しすぎた銘柄は反落リスクも高いため、高値からの乖離率や出来高の過熱度も併せて見ます。
オルタナティブデータを使う発想もあります。検索トレンド、求人件数、アプリランキング、ECサイトのレビュー数、月次売上、店舗数、広告出稿量など、財務諸表に出る前の変化を観察する方法です。これは手間がかかりますが、決算数字に表れる前の変化を捉えられる可能性があります。
個人投資家が作るべき最小構成
最初から高度なシステムを作る必要はありません。最小構成は、CSVファイル、Pythonスクリプト、出力用CSV、調査メモの4つです。CSVファイルには銘柄データを入れます。Pythonスクリプトで条件抽出します。出力用CSVには候補銘柄を保存します。調査メモには、なぜ候補に残ったのか、何を確認すべきかを書きます。
この最小構成なら、プログラミング経験が浅くても始められます。ChatGPTに「このCSVから売上成長率10%以上、営業利益率8%以上、PER40倍以下の銘柄を抽出するPythonコードを書いてください」と依頼すれば、たたき台を作れます。エラーが出た場合も、エラー文を貼り付ければ修正方針を確認できます。
大切なのは、最初から完全自動化を目指さないことです。自動取得、自動計算、自動ランキング、自動通知、自動グラフ化まで一気に作ろうとすると挫折します。まずは手動CSV更新とPython抽出だけで十分です。利益につながるのはシステムの派手さではなく、毎週同じ基準で候補を抽出し続ける継続性です。
投資判断に落とし込むチェックリスト
スクリーニングで候補が出たら、次に見るべきチェック項目を固定します。まず、売上成長の理由を確認します。数量増なのか、値上げなのか、新規顧客なのか、為替影響なのか、一時的な特需なのかを見ます。次に、営業利益率改善の理由を確認します。粗利率改善、販管費抑制、固定費吸収、構造改革のどれなのかで持続性が違います。
次に、バランスシートを確認します。現金が多いか、有利子負債が重すぎないか、自己資本比率は十分かを見ます。成長企業でも財務が弱いと、環境悪化時に増資リスクが高まります。
さらに、株価位置を確認します。高値を更新しているのか、長期ボックスを抜けたのか、急騰後の天井圏なのか、決算後に売られていないかを見ます。良い会社でも買う位置が悪ければ損失になります。スクリーニングは良い会社を探す道具であり、良い買い場を保証するものではありません。
最後に、シナリオを言語化します。「この銘柄は売上成長が続き、営業利益率が改善し、市場が評価を引き上げることで株価上昇を狙う」というように、自分が何に賭けているのかを明確にします。シナリオが崩れたら撤退します。これを事前に決めることで、感情的な保有を避けられます。
まとめ
ChatGPTとPythonを使った日本株スクリーニング自動化は、個人投資家にとって非常に実用的な武器になります。重要なのは、AIに投資判断を丸投げすることではなく、膨大な銘柄の中から調査候補を効率よく絞ることです。
最初に作るべき条件は、成長性、収益性、割安性、需給、トレンドの5軸です。売上成長率、営業利益成長率、営業利益率、PER、売買代金、移動平均線といった基本指標だけでも、十分に意味のあるスクリーニングができます。
さらに、スコアリングを組み合わせることで、候補銘柄の優先順位を付けられます。抽出結果をそのまま買うのではなく、決算資料、事業内容、需給、株価位置を確認し、投資シナリオに落とし込むことが重要です。
自動化の本質は、楽をして儲けることではありません。人間が集中すべき判断に時間を使うために、機械に任せられる作業を切り出すことです。毎週同じ条件で銘柄を抽出し、候補を比較し、記録を残して改善する。この地味な運用こそ、個人投資家が継続的に優位性を作るための現実的な方法です。


コメント