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?
Upgrade from Eikon -> Workspace. Learn about programming differences.
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?
Thank you for your participation in the forum. Is the reply below satisfactory in resolving your query?
If so please can you click the 'Accept' text next to the appropriate reply? This will guide all community members who have a similar question.
Thanks,
AHS
Please be informed that a reply has been verified as correct in answering the question, and has been marked as such.
Thanks,
AHS
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.