Python 金融データの取得
Python でクオンツ分析を行うには、まず金融データを取得する必要があります。Python には金融市場データを取得するためのライブラリが複数あります。
このサイトの例で使用するライブラリは次のとおりです。yfinance。
インストールは以下のとおりです。
pip install yfinance
yfinanceライブラリの使用方法yf.download()関数:金融データをダウンロードする関数。
以下はその基本的な構文形式です。
yf.download(tickers, start=None, end=None, actions=False, threads=True)
パラメータの説明:
tickers:
- 説明:データをダウンロードする銘柄、指数、ファンドなどの金融商品のコード。
- 型:文字列(単一のコード)またはリスト(複数のコード)。
- 例: "AAPL"、["AAPL", "GOOGL"]。
start:
- 説明:データをダウンロードする開始日。
- 型:文字列(日付形式:"YYYY-MM-DD")。
- デフォルト値:None。取得可能な最も早い日付から開始することを示します。
- 例: "2020-01-01"。
end:
- 説明:データをダウンロードする終了日。
- 型:文字列(日付形式:"YYYY-MM-DD")。
- デフォルト値:None。取得可能な最新の日付まで終了することを示します。
- 例: "2022-01-01"。
actions:
- 説明:株式の配当や分割などの情報を含めるかどうか。
- 型:ブール値。
- デフォルト値: False。
- 例:
actions=True。
threads:
- 説明:データをダウンロードする際にマルチスレッドを使用するかどうか。
- 型:ブール値。
- デフォルト値: True。
- 例:
threads=False。
yfinance では、中国 A 株の銘柄コードに取引所のサフィックスを付ける必要があります。上海証券取引所(SSE)のサフィックスは.SS、深圳証券取引所(SZSE)のサフィックスは.SZ。
以下は、yfinance貴州茅台(600519.SS)の株式データを取得する簡単な例です。
例
# 上海証券取引所、貴州茅台の株式コード
symbol = "600519.SS"
# または、深圳証券取引所、瀘州老窖の株式コード
# luzhou_laojiao_szse = yf.Ticker('000568.SZ')
# 貴州茅台の株式データを取得
maotai_data = yf.download(symbol, start="2022-01-01", end="2023-11-01")
# データの最初の数行を表示
print(maotai_data.head())
上記のコードでは、yfinance の download 関数を使用して、貴州茅台(600519.SS)の株式データを 2022年1月1日から2023年11月1日までの期間で取得しました。返されるデータは、日付(Date)、始値(Open)、高値(High)、安値(Low)、終値(Close)、出来高(Volume)、調整後終値(Adj Close)などの情報を含む Pandas DataFrame です。
Pandas DataFrame の内容は以下を参照できます:Pandas データ構造 - DataFrame
上記のコードを実行すると、出力結果は次のようになります。
# python3 mt.py
[*********************100%%**********************] 1 of 1 completed
Open High Low Close Adj Close Volume
Date
2022-01-04 2055.00000 2068.949951 2014.000000 2051.229980 1973.508057 3384262
2022-01-05 2045.00000 2065.000000 2018.000000 2024.000000 1947.309937 2839551
2022-01-06 2022.01001 2036.000000 1938.510010 1982.219971 1907.112793 5179475
2022-01-07 1975.00000 1988.880005 1939.319946 1942.000000 1868.416870 2981669
2022-01-10 1928.01001 1977.000000 1917.550049 1966.000000 1891.507568 2962670
Ticker クラス
yfinance の Ticker クラスは、特定の金融商品の情報とリアルタイムデータを取得するために使用されます。
Tickerクラスコンストラクタ:
- 用法:
yf.Ticker('AAPL') - 説明:次を作成します
Ticker特定の株式または金融資産を表すオブジェクト。括弧内に株式コード(例:'AAPL')を渡します。
historyメソッド:
- 用法:
ticker.history(period='1d', interval='1m') - 説明:過去の価格データを取得します。
periodパラメータは時間の幅を指定し、次のいずれかです:'1d'(1日)、'1mo'(1ヶ月)、'1y'(1年)など。intervalパラメータは時間間隔を指定し、次のいずれかです:'1m'(1分)、'1d'(1日)、'1wk'(1週間)など。
info属性:
- 用法:
ticker.info - 説明:会社名、業界、時価総額など、株式に関する基本情報を取得します。
dividends属性:
- 用法:
ticker.dividends - 説明:配当データを取得し、日付と配当額を含む DataFrame を返します。
splits属性:
- 用法:
ticker.splits - 説明:株式分割データを取得し、日付と分割比率を含む DataFrame を返します。
recommendations属性:
- 用法:
ticker.recommendations - 説明:株式のレコメンデーション情報を取得し、日付と推奨情報を含む DataFrame を返します。
major_holders属性:
- 用法:
ticker.major_holders - 説明:株式の主要株主情報を取得し、主要株主とその保有比率を含む DataFrame を返します。
sustainability属性:
- 用法:
ticker.sustainability - 説明:株式のサステナビリティ情報を取得し、環境・社会・ガバナンス(ESG)指標を含む DataFrame を返します。
actions属性:
- 用法:
ticker.actions - 説明:株式分割、配当などを含む株式のアクションデータを取得します。
calendar属性:
- 用法:
ticker.calendar - 説明:四半期決算の発表日など、会社の財務カレンダー情報を取得します。
以下のコードは、yfinance ライブラリの Ticker クラスを使用して、Microsoft 社(株式コード:MSFT)の基本情報、履歴市場データ、配当、株式分割、財務諸表などの株式情報を取得します:
例
# Ticker オブジェクトを作成し、Microsoft 社の株式データを操作する
msft = yf.Ticker("MSFT")
# すべての株式情報を取得
msft.info
# 過去の市場データを取得(ここでは過去1ヶ月分)
hist = msft.history(period="1mo")
# 履歴データのメタ情報を表示(事前に history() 関数を呼び出す必要があります)
msft.history_metadata
# 会社のアクション情報(配当、株式分割、キャピタルゲイン)を表示
msft.actions
msft.dividends
msft.splits
msft.capital_gains # 投資信託と上場投資信託(ETF)にのみ適用
# 株式数を表示
msft.get_shares_full(start="2022-01-01", end=None)
# 財務諸表を表示:
# - 損益計算書
msft.income_stmt
msft.quarterly_income_stmt
# - 貸借対照表
msft.balance_sheet
msft.quarterly_balance_sheet
# - キャッシュフロー計算書
msft.cashflow
msft.quarterly_cashflow
# その他のオプションについては、`Ticker.get_income_stmt()` を参照してください
# 株主情報を表示
msft.major_holders
msft.institutional_holders
msft.mutualfund_holders
# 将来と過去の決算日を表示。デフォルトでは、将来最大4四半期と過去8四半期のデータを返します。
# 注:さらに情報が必要な場合は、msft.get_earnings_dates(limit=XX) を使用できます。XX は増加させる制限パラメータです。
msft.earnings_dates
# 国際証券識別コード(ISIN)を表示 - *実験的機能*
# ISIN = International Securities Identification Number
msft.isin
# オプションの満期日を表示
msft.options
# ニュースを表示
msft.news
# 特定の満期日のオプションチェーンを取得
opt = msft.option_chain('YYYY-MM-DD')
# データは opt.calls、opt.puts から取得可能
複数の株式データを取得
以下のコードは、yfinance ライブラリを使用して複数の株式コードを含む Tickers オブジェクトを初期化し、そのオブジェクトを通じて異なる株式の情報、履歴データ、アクションにアクセスします:
例
# 複数の株式コードを含む Tickers オブジェクトを初期化
tickers = yf.Tickers('msft aapl goog')
# 使用例:各株式の情報にアクセス
tickers.tickers['MSFT'].info # Microsoft 社(MSFT)の基本情報を取得
tickers.tickers['AAPL'].history(period="1mo") # Apple 社(AAPL)の過去1ヶ月の履歴データを取得
tickers.tickers['GOOG'].actions # Google 社(GOOG)のアクション情報(配当、株式分割など)を取得
履歴データのダウンロード
以下のコードは、yfinanceライブラリを使用して、S&P 500 ETF(SPY)と Apple 社(AAPL)の過去1ヶ月の履歴市場データをダウンロードしました。
例
# yfinance を使用して S&P 500 ETF(SPY)と Apple 社(AAPL)の履歴市場データをダウンロード
data = yf.download("SPY AAPL", period="1mo")
period="1mo"パラメータは、ダウンロードする期間が過去1ヶ月であることを示します。
その他の金融ライブラリ
以下は、主に金融データを取得するためのライブラリです:
yfinance
- 公式サイト: yfinance
- 概要:yfinance は Yahoo Finance のデータを取得するためのライブラリです。シンプルな API を提供し、ユーザーが株式、指数などの金融データを取得できるようにします。
- インストール:
pip install yfinance
Tushare
- 公式サイト: Tushare
- 概要:Tushare はオープンな金融データプラットフォームであり、株式、先物、ファンドなどの金融市場データのインターフェースを豊富に提供しています。Pythonをサポートし、使いやすいAPIを提供します。
- インストール:
pip install tushare
pandas-datareader
- 公式サイト: pandas-datareader
- 概要:pandas-datareader は、複数のオンラインデータソース(Yahoo Finance、Google Financeなど)から金融データを取得するライブラリです。
- インストール:
pip install pandas-datareader - 公式サイト: baostock
baostock
- 公式サイト: baostock
- 概要:baostock は、A株、香港株、オプションなどの金融データを無料で提供するライブラリです。Pythonインターフェースを提供し、ユーザーがデータを取得しやすくします。
- インストール:
pip install baostock
alpha_vantage
- 公式サイト: alpha_vantage
- 概要:alpha_vantage は、株式、外国為替などの金融データを取得するためのシンプルなAPIを提供します。また、いくつかのテクニカル指標の計算もサポートしています。
- インストール:
pip install alpha_vantage
quandl
- 公式サイト: Quandl
- 概要:Quandl は、さまざまなソースからの金融・経済データを提供します。Pythonライブラリを提供し、ユーザーがデータを取得しやすくします。
- インストール:
pip install quandl
ccxt
- 公式サイト: ccxt
- 概要:ccxt は、取引と金融データ取得のためのオープンソースライブラリであり、複数の取引所のデータ取得をサポートしています。
- インストール:
pip install ccxt
AKShare
- 公式サイト: AKShare
- 概要:AKShare は Python ベースの金融データインターフェースライブラリです。株式、先物、オプション、ファンド、外国為替、債券、指数、暗号通貨などの金融商品について、基礎データ、リアルタイムおよび履歴の相場データ、派生データを、データ収集からデータクレンジング、データ保存までの一連のツールとして実現することを目的としており、主に学術研究の目的で使用されます。
- インストール:
pip install akshare