Data items to get historical prices using ISIN for multiple asset classes

Hi,


I'm currently trying


prices = ek.get_data(codes,

['AVAIL(TR.PRICECLOSE.date,TR.FIPRICE.date,TR.NETASSETVAL.date),

AVAIL(TR.PRICECLOSE,TR.FIPRICE,TR.NETASSETVAL)'],

{'SDate':'2020-10-01', 'EDate':'2020-10-05'})


to get historical prices for equities, bonds, etfs and funds. Above codes is an array of ISIN codes.

All I get is <NA>.


Should I use some other data items? Or if you have working solution, that would be even better.


Thanks in advance.


BR, J



Best Answer

  • bob.lee
    Answer ✓

    @""juha.pomell, For funds not traded in exchanges (i.e. not ETFs) there is no closing price as it is not traded in exchanges. Thus you need to identify them and treat them separately. Most funds reports daily NAV, but few old style funds may report Bid/Offer prices and may only reporting weekly or monthly prices. Below is a sample code for getting historical price of a mutual fund (in funds' denominated currency):

    Fund_NAV = ek.get_data('LP60000012',['TR.FundNAV.Date', 'TR.FundNAV'], {'SDate':'2019-01-01', 'EDate':'2019-05-10',\
     'Curn':'Native'})

    Notes, Jason's symbology conversion may not work directly from ISIN to RIC for funds. If failed, you can try to firestly convert ISIN to LIPPERID, and then use LIPPERID to convert to RIC (or actually just Prefix the LIPPERID with "LP")

Answers

  • @juha.pomell I couldn't find the field 'TR.FIPRICE' and the query was incorrectly formed - but try this:

    codes = ['VOD.L','TSLA.O','LHAG.DE']

    prices,err = ek.get_data(codes,['TR.PriceClose.date','TR.NETASSETVAL.date','TR.PRICECLOSE','TR.NETASSETVAL'],{'SDate':'2020-10-01', 'EDate':'2020-10-05'})

    prices

    imageThe net asset value fields are empty as these would apply to funds in your list - i have only put in equities. You can use the Data Item Browser tool (type DIB into eikon search bar) to find fields available. I hope this can help.

  • HI Jason,


    thanks for your reply.


    Equities and using ric codes works nice. Problem is that I have list/array of ISIN codes. I can't make them work currently.

    Any ideas to make it work?


    J

  • The problem in your query is the field TR.FIPRICE.date.

    If you open Data Item Browser, you will see that this field is not a time series field. If you remove it, the output will work:

    >>> df, err = ek.get_data(['IBM', 'LP40000259'], ['AVAIL(TR.PRICECLOSE, TR.NETASSETVAL)', 'AVAIL(TR.PRICECLOSE.date, TR.NETASSETVAL.date)'], {'SDate':'2020-10-01', 'EDate':'2020-10-05'})
    >>> df
       Instrument  AVAIL(TR.PRICECLOSE, TR.NETASSETVAL) AVAIL(TR.PRICECLOSE.DATE, TR.NETASSETVAL.date)
    0         IBM                                121.09                           2020-10-01T00:00:00Z
    1         IBM                                120.57                           2020-10-02T00:00:00Z
    2         IBM                                122.01                           2020-10-05T00:00:00Z
    3  LP40000259                                 33.36                           2020-10-01T00:00:00Z
    4  LP40000259                                 33.12                           2020-10-02T00:00:00Z
    5  LP40000259                                 33.67                           2020-10-05T00:00:00Z

    image

  • Hi,


    Fantastic!


    I'll give it try.


    Many thanks guys.


    BR, Juha



  • @juha.pomell Please use our symbology conversion API :

    df1 = ek.get_symbology(['GB00BH4HKS39'],from_symbol_type='ISIN',to_symbol_type='RIC')
    df1

    I hope this can help