【要約】"東証3600銘柄を分析してわかった、yfinanceの思わぬ落とし穴とPythonバリュー株スクリーニング" [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
個人投資家がPythonで東証全銘柄の割安株を探そうとした。その際、yfinanceの仕様による数値の異常に直面した。
- ・yfinanceが時価総額を極端に小さく返し、FCF利回りが異常高騰する。
- ・日本株と米国株で配当利回りの単位が異なり、計算結果が100倍ズレる。
- ・銀行業等の特殊なBS構造を持つ業種が、指標を歪めてしまう。
// Approach
取得データの信頼性を確保するため、バリデーションとセクター除外を組み合わせた。
- ・時価総額の検証:株価×1,000株を下回る異常値をNaNとして除外する。
- ・配当利回りの正規化:日本株の単位特性を考慮し、欠損時のみ計算式で補完する。
- ・セクター除外:金融業(銀行・保険・証券)を分析対象から分離する。
- ・データ補完:yfinanceで不足する項目を株探からスクレイピングで取得する。
// Result
異常値と業種特性によるノイズを排除し、精度の高い抽出環境を構築した。
- ・3,600銘柄から、精査すべき数十社へ迅速に絞り込みが可能になった。
- ・指標の定義やフィルタリング条件を、自作スクリプトで自由に制御できる。
- ・「安いだけの罠」を避け、収益性が改善している銘柄を特定しやすくなった。
Senior Engineer Insight
> 外部APIの不完全性を前提とした「防御的プログラミング」の重要性を示す事例だ。金融データの国や業種による仕様差を考慮したバリデーションは、実務的なデータパイプライン構築の基本である。ただし、スクレイピングによる補完はサイト側の仕様変更に弱いため、運用コストとデータ整合性のトレードオフを常に意識すべきだ。