Volumes options with get_data function python API

Hello,


I am having a hard time getting the right volumes for the options:

As an example below, im getting the 52 lots of volume for the date of the 7th of July but this actually is the volume for the 6th of July. i dont know if it is something I can solve or if it is something about your data quality, but it happens very often and it is difficult to deal with.


1625675385883.png

Best Answer

  • @emmanuel.chaslin

    When retrieving timeseries for multiple fields using get_data method of Eikon Data APIs, the rows in the dataframe returned do not always align on the same date, especially when there are null values in the dataset. If you add TR.AccumulatedVolume.date to the list of fields, you'll see that indeed the value of 52 for TR.AccumulatedVolume for 1SB1925H1 corresponds to July 6th, yet it is returned on the same row as the value of July 7th for TR.SettlementPrice.date. The same issue can be reproduced in Excel using =TR("1SB1925H1","TR.SettlementPrice.date;TR.SettlementPrice;TR.AccumulatedVolume;TR.AccumulatedVolume.date","SDate=20210701 EDate=20210706") function. However, in Excel you can align all fields on the same date by adding date as a row header with RH:Date parameter. Unfortunately, Eikon Data APIs currently do not provide such capability, although it is in the works. In the meantime, the only workaround is to request the date for each field, and then use pandas to reindex the dataframe on a superset of date values for each field.
    Here's as example of how this could be implemented for a single instrument.

    def get_history(instrument, fields, params=None):
        instrument: str
        fields: list
        params: dict
        fields = [x.upper() for x in fields]
        fld_dt = fields + [x.upper() + ".DATE" for x in fields]
        df, err = ek.get_data(instrument, fld_dt, params, field_name=True)
        tmp_df = df[[fields[0]+".DATE",fields[0]]].replace('',np.nan)
        tmp_df.dropna(subset=[fields[0]+".DATE"], inplace=True)
        tmp_df.set_index(fields[0]+".DATE", inplace=True)
        for x in fields[1:]:
            tmp_df1 = df[[x+".DATE",x]].replace('',np.nan)
            tmp_df1.dropna(subset=[x+".DATE"], inplace=True)
            tmp_df1.set_index(x+".DATE", inplace=True)
            tmp_df = tmp_df.merge(tmp_df1, how='outer',
    left_index=True, right_index=True)
        return tmp_df


    get_history("1SB1925H1", ["TR.SettlementPrice","TR.AccumulatedVolume"],
                {'SDate':'2021-07-01', 'EDate':'2021-07-06'})

Answers

  • Hi @emmanuel.chaslin

    I converted and tested your formula in Eikon Excel.

    I got the same result(This confirms that the coding is valid):

    ahs1.png

    If I only retrieve TR.AccumulatedVolume, this is the result:

    ahs2.png

    This seems to be a question as to whether the content is valid?

    For an authoritative answer to any content questions, the best resource is the Refinitiv Content Helpdesk.

    The moderators here do not have deep expertise in every type of content available through Eikon.
    The Refinitiv Content Helpdesk can be reached using Contact Us capability in your Eikon application.
    Or by calling the Helpdesk number in your country.
    Or at https://my.refinitiv.com/


    On this question, I submitted it to helpdesk on your behalf.

    The case no. is 10068374

    A support will contact you shortly.

  • Clear and correct, I adjusted indeed as suggested.