スクリーニング通過 ≠ 買っていい

前回の記事で書いた通り、screen.pyは東証プライム1,574銘柄を30分で走査して、配当利回り・自己資本比率・配当性向・営業利益率の4条件で候補を絞り込む。

問題はその後だ。

スクリーニングを通過した銘柄を手元に並べたとき、「この11銘柄、どれが本当にいいの?」という疑問が出てくる。利回りが高いからスクリーニングを通過した。ただそれだけで、過去5年のEPSが伸びているか、配当が一度でも削られたか、営業CF(キャッシュフロー)が安定しているか——そういった「時系列での確認」は何もできていない。

そこで作ったのが deepdive.py。スクリーニング通過銘柄だけを対象に、5年分の財務データで8軸評価・スコアリングする仕組みだ。


設計思想:「利回りより、EPSの継続性」

高配当株投資で最終的に怖いのは、減配だ。配当が削られれば利回りも下がり、株価も下がる。ダブルパンチ。

減配リスクを最小化するには何を見るべきか。SE的に整理すると、**「企業が稼ぎ続けているか」**に尽きる。

1株利益(EPS)が連続して増えているなら、会社は稼ぐ力を維持・拡大している。配当の原資が増えているなら、減配リスクは下がる。

この考え方で、EPS連続性を他の指標より重く評価する設計にした。


8軸スコアリングの全体像

deepdive.pyは以下の8軸で評価する。満点は27点。

評価軸何を見るか
EPS連続性過去5年のEPSが増益傾向か(赤字・減益の頻度)
EPS×配当性向増益傾向かつ配当性向が持続可能な水準か
営業CF営業キャッシュフローが安定して黒字か
減配履歴過去に配当を削ったことがあるか
ROE自己資本を使って効率よく稼いでいるか
自己資本比率財務の安定性(借金の少なさ)
BPS推移1株当たり純資産が積み上がっているか
ROA総資産を使った収益効率

重みはEPS連続性だけ他と異なる設定にしている(具体的な重み比率は非公開)。


なぜEPS連続性だけ重みが違うのか

理由は2つ。

1つ目は、日本の著名な個人投資家が実践するスクリーニング順序をそのまま実装したこと。配当投資の文献を複数参照した結果、「EPS安定確認を最初のフィルタにする」という判断は複数の実践家が共通して挙げていた。

2つ目は、実際にスクリーニング通過銘柄を並べたとき、EPS連続増益の銘柄と断続的に赤字を出す銘柄では、直感的な信頼度がまったく違った。「自分がここで買いたいか」という感覚がEPSに連動していた。

定量的な論文根拠ではなく、実践者の知恵と自分の感覚を設計に落とし込んだ判断だ。


スコアの見方

スコア帯判断の目安
20〜27点深掘り対象。IRBANKで過去10年の配当履歴を目視確認
13〜19点要注意。×が多い軸を重点確認。1〜2軸なら許容範囲のこともある
0〜12点確認コスト高・優先度低。EPS連続性に×が集中するなら深掘りの優先度を下げる

1点ポイントとして、EPS連続性だけ×でも他が全◎なら個別判断の余地がある。業種の特性(インフラ・公益系など)や一時的な特別損失による影響の場合があるため。


yfinanceとみんかぶで数値がズレる理由

スクリーニング段階で配当性向の上限を60%に緩めているのは、yfinanceの計算方式が原因だ。

yfinanceはTTM(過去12か月の実績値)ベースでEPSを計算する。一方、みんかぶや会社四季報が表示するのは会社側の「予想EPS」ベースの数値。

具体的に起きること:直近12か月に一時的な費用計上があって純利益が下がると、yfinanceのEPSが一時的に低くなる。その結果、配当性向(= 配当 ÷ EPS)が高く計算される。

たとえば配当性向を「40%まで」で線引きすると、本来は健全な銘柄が「55%超」として弾かれる可能性がある。

対策として、screen.pyのスクリーニング段階では配当性向の上限を60%に緩めて「取りこぼし防止」にする。その後のdeepdive.pyで5年分の実績データを見て精査する——という2段階の設計にしている。


実際に動かした結果(銘柄名は非公開)

スクリーニング通過銘柄を deepdive.py にかけると、HTMLレポートとして出力される。銘柄ごとにEPS推移・配当推移・営業CF推移・ROE推移・自己資本比率推移の5チャートが並ぶ。

実際の数字を見ると、決算発表の前後でスクリーニング結果が大きく変わることが分かった。

実行日通過銘柄数状況
5月9日11銘柄3月期決算発表前
5月17日115銘柄3月期決算発表後

1週間で11銘柄から115銘柄へ。10倍超の急増だ。

これは5月が3月期決算企業の本決算発表ラッシュのタイミングだからだ。多くの企業が2025年度の業績と配当金額を確定発表したことで、yfinanceのデータが一斉に更新された。スクリーニング条件を満たす銘柄の数がまるごと入れ替わった。

逆に言えば、1回だけ実行して終わりにしていたら、この115銘柄は一切見えていなかった。週次実行の価値が数字で証明された瞬間だった。

銘柄名は記事では公開しない。この記事は「ツールの設計と使い方」の紹介であり、特定銘柄の推奨ではないからだ。

傾向として、スコア上位に入る銘柄はEPSが5年近くにわたって右肩上がりで、配当を一度も削っていない。直感的に「これなら長期で持てる」と感じる銘柄が上位に来る設計になっていた。


ツールを使った所感

毎週土曜の午前中、35分でスクリーニング → 2分で深掘りレポート生成、という流れが定着した。

5月の決算発表ラッシュで115銘柄が通過したとき、deepdive.pyの必要性をあらためて実感した。115銘柄をIRBANKで1社ずつ手動確認するのは現実的でない。deepdive.pyにかければスコア順に並び、20点以上の銘柄だけを目視確認すればいい。絞り込みの量と質が両立できる。

以前は「気になる銘柄をIRBANKで1社ずつ見る」という作業を繰り返していた。それが今は「スコア20点以上の候補だけをIRBANKで確認する」に変わった。見る銘柄の数が大幅に減り、確認の質が上がった。

ただし、ツールはあくまで「確認対象の絞り込み」に使うもの。最終的な投資判断は自分でIRBANKやカブタンの情報を見て行う。deepdive.pyのスコアが高い銘柄が「必ず良い」わけではないし、この記事は投資助言ではない。


まとめ:設計で解決した3つの問題

  1. 「スクリーニング後に何を見るか分からない問題」 → 8軸スコアリングで優先順位を自動付け
  2. 「yfinanceの数値がみんかぶとズレる問題」 → スクリーニング段階で条件を意図的に緩め、深掘りで精査する2段階設計で吸収
  3. 「決算シーズンに候補が一気に増えて手が回らない問題」 → deepdive.pyのスコアで115銘柄でも2分で優先順位づけ

どちらも「手動でやるには限界がある」問題を、Claudeと対話しながら設計・実装した。コードより先に設計を固めたことで、実装はほぼ迷わずに進められた。

ただし、課題も出てきた。5月の決算シーズンで115銘柄が通過したように、時期によってはスクリーニング条件が緩すぎる可能性がある。11銘柄なら全件deepdive.pyにかけられるが、100銘柄超になると処理時間も増え、その後の確認作業も重くなる。

スクリーニング条件をもう少し厳しく絞る設定(配当利回りの下限を4%に引き上げるなど)も今後の検討対象だ。毎週の実行結果を見ながら、条件のチューニングを続けていく。

Pythonでこういったツールを自作したい場合、Udemyの「データ分析」「pandas」あたりで検索すると体系的に学べる講座が見つかる。

Udemy でPython・データ分析講座を探す


※本記事はPythonを使ったツール設計の紹介を目的としています。特定の銘柄の売買を推奨するものではなく、投資判断はご自身の責任でお願いします。