【要約】yfinanceを本番運用して分かった4つの落とし穴と対策 — Pythonで株価データを安定取得する方法 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
非公式APIゆえの以下のリスクがある。
- ・大量リクエストによるIPブロック。
- ・ブロック時に例外が出ず、空のDataFrameが返る。
- ・銘柄間で財務データのフィールド名が不一致。
- ・欠損値がNoneではなくNaNで返る。
- ・複数プロセス実行時のSQLiteファイル競合。
- ・Yahoo Financeの仕様変更による突然のデータ取得不能。
// Approach
以下の手法で解決を図る。
1.バッチ処理とインターバル制御によるIPブロック回避。
2.SQLiteを用いたTTL付きキャッシュによるAPIコール最小化。
3.複数キーを試行するヘルパー関数とpd.notna()によるデータ検証。
4.yf.set_tz_cache_location()によるプロセス固有ディレクトリの分離。
5.ABCによるデータソースの抽象化と他ソースへのフォールバック。
// Result
200銘柄規模の投資分析システム「RakuScan」において、半年以上の安定運用を実現。APIコールを最小化し、データソースの変更や一時的なAPI停止時にも、キャッシュやフォールバックにより分析を継続できる堅牢な設計を構築した。
Senior Engineer Insight
>
非公式APIを本番に投入する際の「壊れる前提」の設計が肝要だ。単なるライブラリ利用に留まらず、キャッシュによる負荷軽減、抽象化による疎結合化、プロセス分離による競合回避など、システム設計の視点が不可欠である。可用性を担保するためには、単一ソースへの依存を避け、フォールバック機構を組み込む設計が実戦における定石といえる。運用コストと信頼性のトレードオフを意識した、極めて実践的な知見である。