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

question

Upvotes
Accepted
11 1 2 3

Need Python API call formula to get historical price start date today and end date is TR.FirstTradeDate

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?

eikon-data-apipython apiprice-update
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hello @pf

The client has a follow-up question. Could you please help the client?

Hello @pf

The client has a follow-up question. Could you please help the client?

Hi @kenley.macandog123,

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

Upvotes
Accepted
1.3k 3 2 4

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'
    }
)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
11 1 2 3

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])

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1.3k 3 2 4

Hi @kenley.macandog123 ,

Sorry for the delay to reply !
I don't see any other way except to request in 2 steps.

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.