Python API get_timeseries use multiple RICs

Tried to call get_timeseries to get historical tick data over multiple RICs, and saw the error - Shape of passed values is (4, 106), indices imply (4, 16). However, it works when I used only one single RIC.


try:
symbolList = list()
list.append("AMXL.MX")
list.append("CMXCPO.MX")
ret = ek.get_timeseries(symbolList, start_date="2018-09-06T20:00:00", end_date="2018-09-06T20:10:00",interval="tick")

print(ret)
except Exception as err:
print(err)

Best Answer

  • I suggest to request raw data then extract each serie from result as below:

    try:
    symbolList = ["AMXL.MX", "CMXCPO.MX"]
    ret = ek.get_timeseries(symbolList, start_date="2018-09-06T20:00:00", end_date="2018-09-06T20:10:00", interval="tick", raw_output=True)
    for data in ret['timeseriesData']:
    df = pd.DataFrame(data['dataPoints'], columns=[f['name'] for f in data['fields']]).set_index('TIMESTAMP', drop=True)
    print("Serie[{}]".format(data["ric"]))
    print(df)
    except Exception as err:
    print(err)

Answers

  • Eikon Python library cannot combine tick data for multiple instruments into a single dataframe because the dataframe is indexed on the timestamp and the timestamps for tick data for multiple instruments don't match. I suppose we should handle this use case in the library: before submitting the request for data check if more than one instrument is passed and whether interval="tick" and raise an exception right away saying "Tick data can only be retrieved for a single instrument". I will raise this to the development team.
    If you tell me what your end goal is, I may suggest a workaround.

  • Ok. I am trying to collect the tick data of an small time interval for multiple RICs. In this case, we can request the data for one RIC at a time. However, I am looking for more than 200 RICs here. I am thusly looking for a possible way to request data for multiple RICs all together, or any other more efficient way.

  • I see two options here. One is obvious: iterate over your list of RICs in a loop. The other is to use send_json_request method. The advantage is that you can retrieve timeseries for multiple RICs in a single request. The disadvantage is that the data is delivered as JSON and you need to write code to parse it into whatever format is useable for your purposes. If you'd like to explore this option I suggest you take a look at the method's signature in Eikon Data APIs for Python Reference Guide available from the Documentation tab on Eikon Data APIs page on this portal.

  • Then I suggest you use Fiddler to see the HTTP request sent when you execute get_timeseries method for multiple RICs, which will help you figure out the values of the arguments you need to pass to send_json_request method.