投資のためのデータサイエンス

個人の投資活動に役立つデータ分析にまつわる話題を綴ります。

Yahoo Finaceからのデータの取得と分析(続き)

前回投稿した、Yahoo Financeからデータを抽出できる(現時点でまともに動く)ライブラリであるyahooqueryの詳細について調べた。

(補足1)前回言及したライブラリyfinanceは財務諸表の表示がエラーになりますが、過去の株価や取引数量データは取り出せます(ネット上にある多くの記事でyfinanceを用いている)。
(補足2)日本の株価データを参照する場合は、4ケタのコードの後ろに「.T」をつけた文字列をシンボルとして指定します。これはライブラリyfinanceでもyahooqueryでも同じです。

【yahooqueryの詳細】
本パッケージは3つの異なるクラスを提供する。
データの大部分を取得できる主クラスがTickerクラスである。例えば以下のように指定する。

# 米国アマゾン社を指定
ticker = Ticker('amzn')

〔オプション指定〕
asynchronous=True: Yahoo Financeに対するリクエストが非同時的になされる(2つ以上のシンボルを指定した場合に有効)
backoff_factor=0.3 (デフォルト): 2回目のトライの後の試行の秒係数
country='United States' (デフォルト): 言語,地域,corsDomainを変える(newsメソッドで独自の言語でデータが返される)
指定可能な国名: france, india, hong kong, germany, canada, spain, italy, united states, australia, united kingdom, brazil, new zealand, singapore, taiwan ※ japan はない。
formatted=True: APIからの大部分の数値データが辞書型として返される
max_workers=8 (デフォルト): 非同時リクエストをする際に用いられるworkerの数(asynchronous=Trueの時のみ有効)
proxies=None (デフォルト): 各リクエストをプロキシ経由にする
retry=5 (デフォルト): リクエスト失敗時にリトライする回数
status_forcelist=[429,500,502,503,504] (デフォルト): 強制リトライを可とするHTTPステータスコード
timeout=5 (デフォルト): 応答を待つのをやめる秒数
user_agent (ランダムセレクション) 各リクエストのヘッダとして送られるuser-agent文字列
validate=False (デフォルト): インスタンス化の間にシンボルの存在を検証する
verify=True (デフォルト): 詳細は省略
username, password: Yahoo Finance Premiumにログインする場合

Tickerクラスは異なるカテゴリーに分類される:モジュール,オプション,過去の株価,プレミアムデータ
〔モジュール〕
モジュールは通常、Yahoo Financeのフロントエンド(個別の銘柄を検索して表示させた結果画面)からの個別タブ内のタブあるいはデータに対応する。例えば、"Summary"タブからのデータを引き出すためには、Tickerクラスのsummary_detailプロパティを利用する。あるいは"Statistics"タブ内のデータを見つけるためには、プロパティvaluation_measuresとkey_statsを用いる。
〔(金融商品としての)オプション〕
全てのオプションの満期日は1行のコマンドで引き出すことができる:

faang = Ticker('fb aapl amzn nflx goog', asynchronous=True)
options = faang.option_chain

上の場合の変数optionはpandasデータフレームである。このデータフレームはsymbol, expiration, optionTypeという多重インデックスを持つ。

〔過去の株価データ〕
シンボル(のリスト)の銘柄のOHLC(四本値: 始値、高値、安値、終値)を取り出すには以下のように記述する:

faang = Ticker('fb aapl amzn nflx goog', asynchronous=True)
history = faang.history()

上記コードは日次のYTDデータを返す(YTDとは "year to date "の略で、今年の初めから今日までの期間を意味する)。
他の引数の指定が可能である。
(指定方法)
yahooquery.ticker.history(self, period='ytd', interval='1d', start=None, end=None)
過去の株価データ
与えられたシンボル(のリスト)について過去の株価データを取り出す
パラメータ
period: str, default ytd, optional
時間の長さ
オプション:['1d', '5d', '7d', '60d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max']
interval: str, default 1d, optional
データ点間の時間
オプション:['1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1wk', '1mo', '3mo']
start: str or datetime.datetime, default None, optional
データ引用の開始時点を指定する。YYYY-MM-DD形式の文字列又はdatetimeオブジェクト
end: str of datetime.datetime, default None, optional
データ引用の終了時点を指定する。YYYY-MM-DD形式の文字列又はdatetimeオブジェクト
adj_timezone: bool, default True, optional
タイムスタンプにGMTオフセットを適用するかどうかの指定
adj_ohlc: bool, default False, optional
スプリットや配当情報にしたがってOHLCデータの修正値を計算するかどうかの指定
(返り値)
返り値は、過去の株価データについてのpandasデータフレームである。