How can I repeat the data for last trading day

I have a need where I am select the price data for last 2 days. The issue is that when the previous day is a non-business day, it generates a dataframe with just one row instead of 2 rows when the previous day is a business day.

eikon.get_timeseries('PRCM.NS', start_date=datetime.datetime(2016,8,21),end_date=datetime.datetime(2016,8,22), fields='CLOSE', ,calendar='calenderdays')

When I submit this request I get


PRCM.NS CLOSE
Date
2016-08-22 145.0

I want it to show
PRCM.NS CLOSE
Date
2016-08-21 146.1 (which is the data for last business day)
2016-08-22 145.0

The actual data is

PRCM.NS CLOSE
Date
2016-08-19 146.1
2016-08-22 145.0


So basically, in case the first day is a non-business day, I want the data from the last business day to be used.
How can I do it ?

Best Answer

  • Hi @abanerj1

    You can try with:

    df, err = ek.get_data(['GRUH.NS'], ['TR.CLOSEPRICE.date','TR.CLOSEPRICE(Adjusted=0)'], {'SDate': '2016-08-21', 'EDate': '2016-08-22', 'Frq':'C', 'FILL':'PREVIOUS' }) df 

Answers

  • @abanerj1 Eikon API does not provide you with this functionality, use pandas:

    from pandas.tseries.offsets import BDay
    end_date = datetime.datetime(2016,8,22) - BDay(1)

    image

  • @abanerj1

    You can also do it using data cloud fields with TR. prefix like below, setting up frequency to C which is calendar days:

    df, err = ek.get_data(['PRCM.NS'], 
    ['TR.PriceClose.date','TR.PriceClose'],
    {'SDate': '2016-08-21', 'EDate': '2016-08-22', 'Frq':'C' })
    df

    image

  • When I try with the following - given I want to use unadjusted price

    eikon.get_data(['GRUH.NS'],['TR.OFFICIALCLOSEPRICE.date','TR.OFFICIALCLOSEPRICE'],{'SDate': '2016-08-21', 'EDate': '2016-08-22', 'Frq': 'C', 'Adjusted': '0'})

    It does not work

    I get

    ( Instrument Date Official Close Price

    0 GRUH.NS 2016-08-21T00:00:00Z NaN

    1 GRUH.NS 2016-08-22T00:00:00Z 310.85, None)

  • I somehow need to get Freq C and Unadjusted price working together. Is that possible ?