コンテンツにスキップ

まず、「株価」を取得する ― yfinance から parquet 保存、自作アプリまで

株価を取得する

株価は yfinance から都度ロードして表示することもできますが、取得制限やパフォーマンスを考えると、取得した株価データは parquet で保存しておくのがベストプラクティスです(とくに 5 分足は約 60 日で消えるため、貯める価値が高い)。

本記事では、

  • yfinance から株価を取得する
  • parquet 形式で保存する
  • 5分足チャートを描画してみる

までを通します。それでは、データ取得編の出発点です。

データ出典
yfinance:日足・5分足 Close(2026年5月31日取得)

なぜ、ローカルに株価を貯めるのか

yfinance で取れる株価は、足の種類で取得できる期間が大きく違います。

足 取得できる期間 主な用途
日足 10 年以上 長期トレンド・テクニカル
5分足 約 60 日が上限 寄付・引け・場中の動き
  • 5分足は「今貯めないと将来取れない」ので、定期取得して parquet に追記する価値が高い
  • parquet は列指向・型保持・高圧縮。CSVより読み書きが速く、ファイルも小さい

⚠️ 貯めたデータは定期的に棚卸しを。上場廃止・超低流動性の銘柄が混ざると、騰落率や統計がゆがみます。また、株式分割・配当の調整として、auto_adjust=True を既定にします。

yfinance で株価を取得する

東証銘柄は {コード}.T で指定します(ENEOS = 5020.T)。

import yfinance as yf

# 日足(長期)
df_d = yf.download("5020.T", period="2y", interval="1d", auto_adjust=True)

# 5分足(直近のみ・約60日が上限)
df_5 = yf.download("5020.T", period="60d", interval="5m", auto_adjust=True)

最新値だけ欲しいときは fast_info が高速です。

yf.Ticker("5020.T").fast_info.get("lastPrice")

株価は parquet で保存する

取得した DataFrame は、そのまま parquet に書き出せます。

df_5.to_parquet("data/prices/stocks/5min/5020.parquet")

5分足は 週次で追記 して貯めます(5分足は約 60 日分残るので、週 1 回の取得で十分です)。既存ファイルに連結し、重複行(同じ時刻)を落とすだけ。

import pandas as pd

path = "data/prices/stocks/5min/5020.parquet"
new  = df_5                       # 新しく取得した5分足

old = pd.read_parquet(path)
merged = pd.concat([old, new])
merged = merged[~merged.index.duplicated(keep="last")].sort_index()
merged.to_parquet(path)

これを週末バッチで回せば、5分足が途切れず積み上がっていきます。保存・追記の全体像は文末の Python コード(GitHub)を参照してください。

まとめ

  • 日足は 10 年以上取れるが、5分足は約 60 日で消える ― 今貯めないと将来手に入らない
  • 保存は parquet 一択 ― 型を保ったまま、CSVより速く・小さく
  • 週次バッチで 追記(連結 → 重複落とし)すれば、5分足が途切れず積み上がる
  • ここで貯めた 5分足が、後の記事(決算発表直後の値動き・超短期の検証)の土台になる

Python コード

本記事のチャート画像・アプリ・データ取得・成形スクリプトは、すべて GitHub に公開しています。データは提供元の利用規約により再配布できませんが、データを各自取得すれば、この記事と同じものが再現できます(動かし方はリポジトリの README 参照)。

📌 自作アプリ紹介

― 寄付・引け・窓開けを一目で確認できる5分足チャート ―

Streamlit で作成したアプリです。チャート描画は Plotly、株価は yfinance で取得して parquet に保存しています。

  • 株価チャートと騰落率テーブルの日付を揃えて表示し、値動きと前日比を対応づけて読める
  • 縦の境界線でギャップアップ・ギャップダウンを視覚的に把握しやすく
  • 銘柄コードを カンマ・スペース・改行で区切って 複数銘柄を入力できる

クリックで拡大

5分足ローソク + 騰落率テーブル

なお、株価をあらかじめ貯めなくても、チャートは表示できます。yfinance から直接取得して描く簡易版(app_simple.py)もおまけ で同梱しています。