yfinance は、Yahoo Financeから株価データや財務データを取得するためのライブラリです
特に金融データの分析やアルゴリズムトレーディングに便利です
Yahoo Finance APIをもとに、時間足別データ(日足、週足、月足など)や企業の財務情報を取得しています
Yahoo Financeの公式ライブラリではありませんので、そのためAPIの仕様変更やデータ取得制限に影響を受ける可能性があります
・環境
windows 11
yfinance 0.2.51
・ライブラリのインスト―ル
pip install yfinance
・株情報取得(Tickerオブジェクト取得)
Tickerオブジェクトの情報を取得します
Ticker(ティッカー、シンボル)とは、日本株の銘柄コードのように個々の銘柄を識別するためにつけられた記号です
米国では個別株、ETFともにアルファベットで表します
日本株の場合、銘柄コードに「.T
」を付ける必要があります トヨタ自動車 (7203) → “7203.T”
import yfinance as yf
# appleのTickerオブジェクトを作成
apple = yf.Ticker("AAPL")
# 基本情報
print(apple.info)
# 株価データを取得(簡易版)
historical_data = apple.history(period="1y") # 過去1年分
print(historical_data)
・Tickerオブジェクトの情報一覧
Tickerオブジェクトから取得できる方法には以下のものがあります
info
ティッカーの基本情報を含む辞書形式のデータ
例: 株価、時価総額、業種、従業員数など
history()
過去の株価データを取得する
期間やデータ間隔を指定可能 “1d”(1日)、”1wk”(1週間)、”1mo”(1ヶ月)など
major_holders
主要株主の情報を取得
institutional_holders
機関投資家の情報を取得
financials
損益計算書(Income Statement)を取得
balance_sheet
貸借対照表(Balance Sheet)を取得
cashflow
キャッシュフロー計算書を取得
dividends
過去の配当データを取得
splits
過去の株式分割データを取得
options
利用可能なオプションの満期日をリスト形式で取得します
option_chain()
指定した満期日におけるオプションチェーン(コールオプションとプットオプション)を取得します
recommendations
アナリストの推奨(Buy, Sell, Holdなど)の履歴を取得
sustainability
環境、社会、ガバナンス(ESG)に関するデータを取得
news
ティッカーに関連する最新ニュースのリストを取得
以下のコードで、複数のティッカーのデータを一括取得やより高度な設定で株価を取得できます
histry()より高度な株価取得方法となります
import yfinance as yf
# 株価データを取得(詳細設定可能)
data = yf.download(tickers="AAPL", start="2023-01-01", end="2023-12-31")
print(data)
# 1分間隔のデータを取得
data_s = yf.download(
tickers="AAPL", # ティッカーシンボル
period="7d", # データ(期間指定)(例: "1d", "7d", "1mo")
interval="1m" # データの間隔(例: "1m", "5m", "1h", "1d")
print(data_s)
tickers
カンマ区切りやリスト形式で複数指定可能
start , end
開始日と終了日を指定
period
期間指定を指定(例: “1d”, “7d”, “1mo”)1分間隔のデータでは最大”7d”まで
interval
データ間隔を指定(例: “1m”, “5m”, “1h”, “1d”)1分間隔は”1m”
・株価取得時の時間の設定
データは通常、UTC時刻で提供されますので日本の時刻に変換が必要な場合は、pandasで変換します
pip install pandas
以下のような1分間隔のデータの時刻を変換します
Open High Low Close Volume
Datetime
2023-12-26 09:30:00-05:00 175.23 175.50 175.10 175.45 1000
2023-12-26 09:31:00-05:00 175.45 175.60 175.30 175.50 800
2023-12-26 09:32:00-05:00 175.50 175.70 175.40 175.65 1200
...
import pandas as pd
# データ取得
data = yf.download(tickers="AAPL", period="7d", interval="1m")
# 時刻を日本時間に変換
data.index = data.index.tz_convert("Asia/Tokyo")
print(data)
data.index.tz_convert(“Asia/Tokyo”)の部分の解説をします
data.indexで行のラベル(データ型はDatetimeIndex)を取得します
.tz_convert(“Asia/Tokyo”)の部分で日本時間に変換します
この変換したインデックスを元のdata.indexに代入します
コメント