Skip to content

testkun08080/yfinance-jp-screener

Repository files navigation

📊 yfinance × 日・米株式スクリーニング (with わが投資術)

⚠️ 注意事項

このプロジェクトは Yahoo Finance のデータを取得・可視化するためのツールです。
本ツールの利用により生じたいかなる損害についても、作者は一切の責任を負いません。

  • データの利用は Yahoo の利用規約に従ってください
  • 本リポジトリはデータそのものを配布しません
  • 個人利用・研究・教育目的のみ使用可
  • プライベートリポジトリでの使用を推奨します

💡 取得したデータは、ご自身の環境でのみ利用してください。

📘 概要

わが投資術 の考え方をもとに、 日本株・米国株をシンプルに分析・可視化するためのツールです。

  • 📈 GitHub Actions による自動データ収集
  • 🔍 ブラウザ上でのスクリーニング・可視化
  • 🌍 米国株対応(ベータ)(S&P500、NASDAQ、NYSE)
    • 市場タイプフィルター(日本株/米国株の選択)
    • 市場タイプに応じた市場区分の動的表示
    • 都道府県フィルターは日本株のみ表示

🌐 オンラインデモ

以下 URL 上で CSV 分析用のアプリケーションにアクセスできます:

👉 https://yfinance-jp-screener-search.vercel.app/


💡 開発の経緯

日本で頑張ってる企業を見つけたい。
けど、せっかくなら割安株を見つけてみたい。
そんな想いと、わが投資術を参考にして作成した個人開発による実験的プロジェクトです。 ※米国株も一応対応させました


🧾 免責事項

動作・結果・データの正確性を保証するものではありません。
利用はすべて 自己責任 でお願いいたします。


🛠️ 技術概要

項目 内容
Backend Python 3.11+, pandas, yfinance
Frontend React 19 + TypeScript + Vite
CI/CD GitHub Actions + Docker
スタイル Tailwind CSS, DaisyUI
データ形式 CSV, JSON

🚀 セットアップガイド

方法 1: Docker Compose(推奨・最速)データ収集とインターフェイス

一つのコマンドでデータ収集から Web アプリ起動まで完結

データ収集時間: 約 3700 社のデータをダウンロードするにはおよそ 3~4時間ほどかかります ※米国株は約10000社で、14時間ほどかかります ※GitHub Actions で並列で行えば、どちらも1時間ほどで終わります

# 1. リポジトリをクローン
git clone https://github.com/testkun08080/yfinance-jp-screener.git
cd yfinance-jp-screener

# 2. 環境変数を設定
cp .env.example .env

# 3. Docker起動(データ収集 → ビルド → プレビュー)

# これでpythonとフロントエンドが起動します(pythonは裏で動き続けるので、終わったらstock_list/Export以下にあるcsvを使って下さい)
docker-compose up

# # 📦 Python データ収集ビルド・実行
# docker-compose build python-service
# docker-compose run --rm python-service

# # 🌐 フロントエンドビルド・起動
# docker-compose build frontend-service
# docker-compose up frontend-service

# 4. ブラウザでアクセス(環境変数のPORT番号によります)
open http://localhost:8000

方法 2: ローカル環境

データ取得環境のセットアップ

# 1. リポジトリをクローン
git clone https://github.com/testkun08080/yfinance-jp-screener.git
cd yfinance-jp-screener/stock_list

# 2. Python環境のセットアップ(uvを使用)
uv sync

# 3. 株式リスト取得(初回のみ)

# 日本株リスト取得
uv run get_jp_stocklist.py

# 米国株リスト取得(オプション)
uv run get_us_stocklist.py

# 4. データ取得を実行

# 日本株データ取得
uv run sumalize.py stocks_sample.json   #ダウンロードテスト用

#===約1000社ずつダウンロード(推奨)===
# uv run sumalize.py stocks_1.json
# uv run sumalize.py stocks_2.json
# uv run sumalize.py stocks_3.json
# uv run sumalize.py stocks_4.json

#===すべての銘柄を対象にしたダウロード===
# uv run sumalize.py stocks_all.json

# 米国株データ取得(オプション)
# uv run sumalize.py us_stocks_all.json
# または分割ファイルを使用
# uv run sumalize.py us_stocks_1.json

# 5. CSV結合
uv run combine_latest_csv.py                      # 両方の市場タイプを結合
# uv run combine_latest_csv.py --market-type JP   # 日本株のみ
# uv run combine_latest_csv.py --market-type US   # 米国株のみ

フロントエンド環境のセットアップ

# 1. フロントエンドディレクトリへ移動
cd ../stock_search

# 2. 依存関係をインストール
npm install

# 3. ビルド
npm run build

# 4. プレビュー
npm run preview
# おそらく http://localhost:4173/ にアクセス

📋 データ取得方法を Github Actions で行う

⚠️ 重要: プライベートリポジトリでの使用を強く推奨します

🔧 事前設定(必須)

GitHub Actions でワークフローを使用する前に、以下の設定変更が必ず必要です:

  1. リポジトリ設定の変更
    • リポジトリの SettingsActionsGeneral に移動
    • Workflow permissions セクションで以下を設定:
      • "Read and write permissions" を選択
      • "Allow GitHub Actions to create and approve pull requests" にチェック
    • Save ボタンをクリック

この設定により、ワークフローが生成した CSV ファイルをリポジトリにコミットできるようになります。 設定しない場合、ワークフローは正常に実行されますが、データファイルのコミットに失敗します。

📊 データ取得手順

  1. このリポジトリをプライベートリポジトリとしてクローン、もしくはフォークします
    • パブリックリポジトリで使用すると、データの二次配布に当たる可能性があると考えられます
  2. フォークしたプライベートリポジトリの Actions タブに移動
  3. ""Stock List Update" を実行して、リストを取得(米国は2時間ぐらいかかります)
  4. "Sequential Stock Fetch" を実行しデータのダウンロード(Part 1 から開始し、分割ファイル数に応じて Part 2, 3, … が自動で連鎖します。約1時間ほど)
  5. 実行完了後、stock_list/Export/ ディレクトリにデータファイルが生成されます

📁 生成されるファイル

実行後、stock_list/Export/ ディレクトリに以下のファイルが生成されます:

日本株データ

Export/
├── japanese_stocks_data_1_YYYYMMDD_HHMMSS.csv  # stocks_1.json のデータ
├── japanese_stocks_data_2_YYYYMMDD_HHMMSS.csv  # stocks_2.json のデータ
├── japanese_stocks_data_3_YYYYMMDD_HHMMSS.csv  # stocks_3.json のデータ
├── japanese_stocks_data_4_YYYYMMDD_HHMMSS.csv  # stocks_4.json のデータ
└── YYYYMMDD_combined.csv                       # 結合されたデータ(オプション)

米国株データ

Export/
├── us_stocks_data_1_YYYYMMDD_HHMMSS.csv        # us_stocks_1.json のデータ
├── us_stocks_data_2_YYYYMMDD_HHMMSS.csv        # us_stocks_2.json のデータ
└── YYYYMMDD_us_combined.csv                   # 米国株の結合データ(オプション)

データ構造

  • 市場タイプ列: 各 CSV ファイルに市場タイプ列が追加され、JP(日本株)またはUS(米国株)が記録されます
  • 後方互換性: 既存の日本株 CSV ファイルも正常に動作します(市場タイプが未指定の場合は自動判定)

📚 参考/出典 / 🙏 お礼

※使わせていただいている JPX のデータや yfinance の作成者に感謝申し上げます。


💬 コントリビューション

このプロジェクトは個人による実験的開発です。 提案・改善・アイデアなどがあれば、Issue または Pull Request からぜひご連絡ください。


🧭 ライセンス

© 2025 testkun08080 Released under the MIT License

About

yfinance × 日本株式スクリーニング (with わが投資術) 日本株の自動収集と、分析用のアプリです。

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors