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)の株式データを取得する簡単な例です。

例

import yfinance as yf

# 上海証券取引所、貴州茅台の株式コード
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)の基本情報、履歴市場データ、配当、株式分割、財務諸表などの株式情報を取得します:

例

import yfinance as yf

# 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 オブジェクトを初期化し、そのオブジェクトを通じて異なる株式の情報、履歴データ、アクションにアクセスします:

例

import yfinance as yf

# 複数の株式コードを含む 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ヶ月の履歴市場データをダウンロードしました。

例

import yfinance as yf

# 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
その他の拡張