PythonでYahoo Financeから株価データを取得しSQLiteデータベースに保存する方法

2023年9月11日python

このブログ記事では、Pythonを使用して株価データをダウンロードし、SQLiteデータベースに保存するスクリプトについて詳しく説明します。株式投資やデータ分析に興味がある方にとって、このスクリプトは非常に便利です。

以下では、各コードブロックを詳細に説明し、使い方を解説します。

必要なライブラリをインポート

まず、必要なPythonライブラリをインポートします。このスクリプトでは、yfinance(株価データの取得)とsqlite3(SQLiteデータベースへのアクセス)を使用します。

import yfinance as yf
import sqlite3
from datetime import datetime, timedelta

データベースへの接続とテーブルの作成

次に、SQLiteデータベースに接続し、株価データを格納するためのテーブルを作成します。テーブルには、ティッカーシンボル、日付、オープン、ハイ、ロー、クローズ、調整後クローズ、および取引量の列が含まれます。

# データベースへの接続
db_path = '/app/database/stock.db'
conn = sqlite3.connect(db_path)
cursor = conn.cursor()

# テーブルの作成
cursor.execute('''
    CREATE TABLE IF NOT EXISTS stock_data (
        Ticker TEXT,
        Date TEXT,
        Open REAL,
        High REAL,
        Low REAL,
        Close REAL,
        Adj_Close REAL,
        Volume INTEGER
    )
''')

取得するティッカーシンボルの指定

取得する株価データのティッカーシンボルを指定します。このスクリプトでは、"VT"、"VYM"、および"VTI"の3つのティッカーシンボルを取得します。

# 取得するティッカーシンボルのリスト
tickers = ["VT", "VYM", "VTI"]

株価データの取得とデータベースへの格納

指定したティッカーシンボルごとに、過去30日間の株価データをダウンロードし、データベースに格納します。データは日付、オープン、ハイ、ロー、クローズ、調整後クローズ、および取引量の情報を含みます。

# 各ティッカーシンボルに対してデータを取得して保存
for ticker in tickers:
    end_date = datetime.now().strftime('%Y-%m-%d')
    start_date = (datetime.now() - timedelta(days=30)).strftime('%Y-%m-%d')
    data = yf.download(tickers=ticker, start=start_date, end=end_date)
    data.reset_index(inplace=True)

    # データの挿入(Ticker列も追加)
    for _, row in data.iterrows():
        converted_row = [ticker] + [str(value) if isinstance(value, datetime) else value for value in row]
        cursor.execute('''
            INSERT OR REPLACE INTO stock_data
            (Ticker, Date, Open, High, Low, Close, Adj_Close, Volume)
            VALUES (?, ?, ?, ?, ?, ?, ?, ?)
        ''', converted_row)

データベースへの変更をコミットし、接続を閉じる

最後に、データベースへの変更をコミットし、データベース接続を閉じます。データベースへの変更をコミットすることで、データが永続的に保存されます。

# コミットして接続を閉じる
conn.commit()
conn.close()

まとめ

このPythonスクリプトを実行することで、指定したティッカーシンボルの株価データがSQLiteデータベースに保存されます。

このデータは、株式のトレンド分析、パフォーマンス評価、およびカスタムレポートの生成など、さまざまな用途に使用できます。

このスクリプトを使えば、株式市場に関するデータを手軽に収集し、分析できるようになります。

python

Posted by snow