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
35 1 1 4

How do you pass on a date as an argument to get the list of s&p companies?

I have this code:

ek.get_data("0#.SPX(2017-05-05)", ["TR.CompanyName","TR.PriceClose(2017-05-05)"])

It returns the list the of the s&p500 companies on a given date with their close prices. However, I would like to pass on the dates like this instead:

date='2017-05-05'

ek.get_data("0#.SPX(date)", ["TR.CompanyName","TR.PriceClose(date)"])

But it returns:

HTTPError: 400 Bad Request

Also how can I add the date as a column?

Any suggestion would be much appreciated.

eikoneikon-data-apipythonrefinitiv-dataplatform-eikonworkspaceworkspace-data-apiapi
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
Accepted
39.4k 77 11 27

You made a general programming syntax error. The variable named date is not evaluated in your expression

ek.get_data("0#.SPX(date)", ["TR.CompanyName","TR.PriceClose(date)"]) 

because it is enclosed in double quotes. "0#.SPX(date)" is a string and the substring "date" within it has no relation to your variable named "date". To get the date value from a variable named "date" use the following syntax

ek.get_data("0#.SPX(" + date + ")", ["TR.CompanyName","TR.PriceClose(" + date + ")"])
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
4.3k 2 4 5

Hi,

You can try this :

date="2017-05-05"
indice="0#.SPX(" + date + ")"
ek.get_data(indice, ["TR.CompanyName","TR.PriceClose"], {"SDate":date})
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
35 1 1 4

Thank you. Both answers worked for me. Accepted the first one because it has one less step.

Any way I can add the date as another column in the code?

@Alex Putkov. @pierre.faurel

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
39.4k 77 11 27

Since you already have the date before you even retrieve the data you can easily append it to the dataframe of retrieved data as a new column:

import eikon as ek
import pandas as p
date='2017-05-05'
df, err = ek.get_data("0#.SPX(" + date + ")", ["TR.CompanyName","TR.PriceClose(" + date + ")"])
df = df.assign(Date=p.Series(date, index=df.index).values)
print(df)

But if for whatever reason you'd like to get the date returned from the Web service providing the data, you can add TR.PriceClose.date to the list of fields:

ek.get_data("0#.SPX(" + date + ")", ["TR.PriceClose(" + date + ").date", "TR.CompanyName","TR.PriceClose(" + date + ")"])
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.