How can I use the Eikon python API to get the daily closing prices from -20 days to +20 days from historical earnings announcement dates (past 20 years) for a company?
For a deeper look into our Eikon Data API, look into:
Overview | Quickstart | Documentation | Downloads | Tutorials | Articles
How can I use the Eikon python API to get the daily closing prices from -20 days to +20 days from historical earnings announcement dates (past 20 years) for a company?
Hi @eric.jian
I think the Earning Announcement dates refer to Income Statement Announce Date.
Here is the sample code, I am using 0005.HK as example:
import pandas as pd import datetime import time #get income statement announcement date and format the dates df,e = ek.get_data('0005.HK',['TR.ISOriginalAnnouncementDate(SDate=0,EDate=-19,Period=FY0,Frq=FY)']) df = df.rename(columns={"Income Statement Orig Announce Date":"AnnounceDate"}) del df["Instrument"] df = df.drop_duplicates() df = df[df.AnnounceDate != ''] df['AnnounceDate']= pd.to_datetime(df['AnnounceDate']) #print(df) #get -20 to +20 priceclose on a given date datesList = df.AnnounceDate.tolist() for date in datesList: sdate = date - datetime.timedelta(days=20) edate = date + datetime.timedelta(days=20) data,e = ek.get_data('0005.HK', ['TR.PriceClose.Date','TR.PriceClose'], {'SDate':sdate.strftime('%Y-%m-%d'), 'EDate':edate.strftime('%Y-%m-%d'), 'Frq':'D'}) print (data) time.sleep(3) #delay between each api call
And some result:
Earnings announcements are once a quarter so there should be 4 dates each year. I ran the above code and got one income statement date for each year. Do I need to change the period/frequency arguments? What are the possible choices for those?
Hi @eric.jian
You can use Data Item Browser to check the support parameters.
In my example, I assumed that you are referring to Yearly report.
"Period=FY0,Frq=FY"
You can type in "DIB" on Eikon Search Bar and press enter to launch Data Item Browser.
Search for the field and see it supports parameter and value.
Also does the formula that pulls the closing price skip over holidays? When i use date as
Timestamp('2019-02-13 00:00:00')
I see that 2019 -02-15 is displayed twice.
sdate = date - timedelta(days=20) # date - 20 days
edate = date + timedelta(days=20) # date + 20 days
# do for S&P index instead
data,e = ek.get_data('.SPX',
['TR.PriceClose.Date','TR.PriceClose'],
{'SDate':sdate.strftime('%Y-%m-%d'), 'EDate':edate.strftime('%Y-%m-%d'), 'Frq':'D'})
Please see row 16 and 17. Thank you
Hi @eric.jian
The 2nd row for 2019-02-15 belongs to 2019-02-18 date
This is my test.
I re-confirm the data point on Eikon Excel:
query to 2019-02-15, 2019-02-18 and 2019-02-19 accordingly in the picture.
I cannot clarify the content question.
Please submit your content question to Refinitiv Helpdesk at https://my.refinitiv.com/