見出し画像

Quantopian を使って earning date を取得する

米国株の過去の決算日を取得したいと思って、色々探していたらQuantopianで取得出来ることがわかったのでメモしておきます。

from quantopian.pipeline.data.morningstar import Fundamentals
from quantopian.pipeline import Pipeline
from quantopian.pipeline.domain import US_EQUITIES
from quantopian.research import run_pipeline
from quantopian.pipeline.filters import StaticAssets
from quantopian.pipeline.data import morningstar as mstar

import pandas as pd 
import pytz

my_fundamentals = {
   'file_date1': Fundamentals.file_date.latest
}

my_stocks = StaticAssets(symbols(['AAPL', 'FB']))
my_pipeline = Pipeline(
   columns = my_fundamentals,
   screen = my_stocks
)

my_data = run_pipeline(my_pipeline, '2017-1-1', '2019-10-31')
dt = my_data.file_date1.unique()

idx = pd.IndexSlice
dt = my_data.loc[idx[:,[symbols("AAPL")]],:].file_date1.unique()
[pd.to_datetime(t).tz_localize(pytz.timezone("UTC")).tz_convert("US/Eastern").strftime("%Y-%m-%d") for t in dt]

# ['2016-07-26',
#  '2017-01-31',
#  '2017-05-02',
#  '2017-08-01',
#  '2018-02-01',
#  '2018-05-01',
#  '2018-07-31',
#  '2019-01-29',
#  '2019-04-30',
#  '2019-07-30']

上記は、AAPLとFBの2017/01/01〜2019/10/31の間に行われた決算の日付を取得するコードです。Research機能にお使いください。

細かい説明はしませんが、少し補足します。Fundamentals.file_dateで取得出来るDateTimeは、 numpy.datetime64 型です。取得出来る時刻は、UTC時刻ですが、TimeZone情報はついていません。よって、UTCを付加し、ETに変換した上で、日付文字列に変更しています。

また、過去データだけしか取得できませんので、2017/01/01〜2019/10/31を指定しても、2019/10/30に予定されている、AAPLの決算日は、今日(2019/10/23)現在では返り値には入っていません。

いいなと思ったら応援しよう!