[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】yfinance と J-Quants の補完で全上場銘柄 10 年を 0 円で回す自前株価 DB [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

データエンジニアが、低コストで全上場銘柄の長期時系列データを取得しようとした際に、既存の無料ソースでは情報の欠落が発生する問題に直面した。単一のソースでは、分析に必要な「銘柄の正確性」と「価格の鮮度」を両立できない。具体的には以下の課題がある。


  • yfinanceは価格データに強いが、銘柄マスタを持たない。
  • yfinanceは上場廃止銘柄を空のデータで返し、検知が困難である。
  • J-Quants Freeは正確なマスタを返すが、価格が12週遅延する。
  • 単一ソースへの依存は、データの欠損や仕様変更に脆弱である。

// Approach

開発者は、両ソースの強みを活かす「補完設計」を採用し、DuckDBを用いたローカル分析基盤を構築した。特定のツールに固執せず、役割を分担させることでデータの穴を塞いでいる。具体的な手法は以下の通りである。


  • J-Quantsを銘柄マスタ専用、yfinanceを価格取得専用として役割を分離した。
  • DuckDBを採用し、サーバレスかつ高速なOLAP処理を実現した。
  • 更新時は銘柄ごとに「DELETE+INSERT」をアトミックに行い、部分失敗を許容した。
  • 通知設計では、失敗件数と連続失敗回数の二軸で閾値を設定し、ノイズを抑えた。

// Result

約3800銘柄の10年分データを、1.12GBのDuckDBファイルとして安定運用することに成功した。自動更新パイプラインにより、運用負荷を最小限に抑えつつ、高精度なスクリーニング環境を実現している。具体的な成果は以下の通りである。


  • 全上場銘柄の10年分OHLCVを0円で取得・保持した。
  • 初回取得時の失敗率0.95%から、運用開始後は0.18%まで低減した。
  • DuckDBにより、数千万行規模の窓関数クエリを数秒で実行可能にした。
  • 自動更新と二軸通知により、実用的な運用体制を確立した。

Senior Engineer Insight

> 「無料ソースの組み合わせ」という泥臭い課題に対し、設計レベルで解決を図る姿勢を高く評価する。特に、銘柄単位のアトミックな更新による「部分成功の許容」と、通知のノイズを抑える「二軸閾値」の実装は、実戦的な運用思想に基づいている。単なるデータ取得に留まらず、DuckDBによるOLAP性能の確保や、ASOF JOINを用いた時価総額の再現など、分析の利便性まで考慮された設計は、プロフェッショナルなデータ基盤の雛形と言える。スケーラビリティの観点では、ソースの追加が容易な3層分離構造が効いている。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。