df, err = ek.get_data(
instruments = ['IBM'],
fields = ['TR.PriceClose'],
parameters = {
'SDate': '2022-01-25',
'EDate': 'TR.FirstTradeDate',
'Frq': 'D'
}
)
display(df)
Any idea how to accomplish this?
For a deeper look into our Eikon Data API, look into:
Overview | Quickstart | Documentation | Downloads | Tutorials | Articles
df, err = ek.get_data(
instruments = ['IBM'],
fields = ['TR.PriceClose'],
parameters = {
'SDate': '2022-01-25',
'EDate': 'TR.FirstTradeDate',
'Frq': 'D'
}
)
display(df)
Any idea how to accomplish this?
Hi @kenley.macandog123 ,
You need to split into 2 steps.
from datetime import date # 1. retrieve TR.FirstTradeDate df, err = ek.get_data( instruments=['IBM'], fields=['TR.FirstTradeDate'], field_name=True ) sdate = df.iloc[0]['TR.FIRSTTRADEDATE'] # 2. then request historic df, err = ek.get_data( instruments=['IBM'], fields=['TR.PriceClose.date', 'TR.PriceClose'], parameters={ 'SDate': sdate, 'EDate': str(date.today()), 'Frq': 'D' } )
Thank you @pf
The client is also considering this workaround. Please advise.
I already have the option below: first take the start dates, then look them up one by one. Is there simpler, that avoids the additional loop getting the first dates ?
start_dates, err = ek.get_data(
instruments = ric_list,
fields = ['TR.FirstTradeDate']
)
print(err)
ek.set_app_key(key)
all_rets = pd.DataFrame()
for ric in ric_list:
st_date = start_dates.loc[ start_dates['Instrument'] == ric, 'First Trade Date' ].tolist()[0]
if (st_date == '') or (st_date is None):
st_date = '2000-01-01'
print(ric, ' has no start date. Setting default.')
df, err = ek.get_data(
instruments = [ric],
fields = ['TR.TotalReturn1D.date','TR.TotalReturn1D'],
parameters = {
'SDate': st_date,
'EDate': '-1D',
'Frq': 'D'
})
if err is not None: print(ric, err)
all_rets = all_rets.append(df)
print(ric, ':', df.shape[0], ' rows. Cumulative: ', all_rets.shape[0], ' rows.')
print('Final data has %d rows' % df.shape[0])
Hi @kenley.macandog123 ,
Sorry for the delay to reply !
I don't see any other way except to request in 2 steps.