I'm trying to download Price close of MSCI europe index and MSCI quality index


I cannot post the screenshot. There are missing data from 2002 in MSCI Europe Index(.dMIEU00000PUS) but I checked and there are prices from 2001. Moreover, I downloaded and I saw that the price is fixed at 1317 in 2002,why?



Best Answer

  • @damiano.amendola the reason you are seeing this is that there is an API call limit of 3000 interday rows for the Timeseries API. When the API hits this limit it silently fails and returns a max of 3000 most recent rows. So you can get around this limitation using iteration with the following code i wrote:

    from dateutil import parser
    from datetime import timedelta
    from datetime import datetime
    import math
    import time
    def date_range(start, end, intv):
        start = datetime.strptime(start,"%Y-%m-%d")
        end = datetime.strptime(end,"%Y-%m-%d")
        diff = (end  - start ) / intv
        for i in range(intv):
            yield (start + diff * i).strftime("%Y-%m-%d")
        yield end.strftime("%Y-%m-%d")
    def get_daily(rics,fields,start,end):
        for ric in rics:        
            interval = math.ceil((parser.parse(end) - parser.parse(start)).days / 3000)
            l = list(date_range(start,end,interval))
            df1 = pd.DataFrame()
            df = pd.DataFrame()
            for i in range(interval):
                ts = ek.get_timeseries(rics=ric,fields=fields, start_date=l[0+i],end_date=l[1+i], interval='daily')
                df = df.append(ts)
                time.sleep(0.4)


        return df

    So now we have our function defined we can simply call it with your RIC:

    rics = ['.dMIEU00000PUS'] # Just for one ric at the moment I will extend this for multi-ric
    fields = ['OPEN', 'HIGH', 'LOW', 'CLOSE']
    start = '1999-01-02'
    end = '2018-06-04'
    df = get_daily(rics,fields,start,end)
    df


    1624961413243.png


    I hope this can help.

Answers

  • @damiano.amendola

    I have tested with the below code.

    df, err = ek.get_data(
    instruments=['.dMIEU00000PUS'],
    fields=[
    "TR.CLOSEPRICE","TR.CLOSEPRICE.Date"
    ],
    parameters={'SDate': '2001-01-01', 'EDate': '2002-12-31'},
    )
    df

    The output is:

    1624960064844.png

    I assume that you are using the TR.PriceClose field.

    I got the same result as yours via Eikon Excel.

    1624960405235.png

    You need to contact the Eikon Excel support team via MyRefinitiv to verify the problem.

  • Thank you so much, it was really useful.

    Yes, I was using TR.PriceClose.

    Have a nice day

  • Thank you so much for your collaboration. You helped me a lot

    Have a nice day