python yfinance 株価取得

Python

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に代入します

コメント