Eikon API - Adding ISIN number of entities in output

Hi, I'm trying to add the ISIN number to my current search but not sure how to do it.

Below is my current code which is gathering weekly news headlines from the free text search.

1716196657737.png Any help would be great thanks.

Best Answer

  • raksina.samasiri
    Answer ✓

    Hi @s.tank ,

    It could be done by managing the dataframe, you may store the news headline in another column and assign the RICs you have got into the list, then use get_data function to retrieve LEI and Company Common name

    rd.get_data(['VOD.L','HD.N'],['TR.LegalEntityIdentifier','TR.CommonName'])

    1716868490868.png


Answers

  • @s.tank So tone way to do this in Eikon is to get the news metadata that is contained in the News Story - which includes a list q_codes which include PermIDs related to the news. You can then get the P:xxx codes per news item and use that to find the company. When you say ISIN - you are not referring to the same thing as ISINs are instrument specific, not entity specific - ie one company can have many ISINs attached to it, eg equity issues, bonds etc - so you need to be careful here. Here is an example of how to do that for each story in your headline dataframe - see the return frame below:

    1716200820979.png

    So here we will add 5 new columns to the headlines dataframe to store a) the storyText itself b) the topic codes (which include any PermID entity) c) the PermIDs extracted from the q_codes d) the RICs of the PermIDs e) the urgency of the news. To access the news metadata we need to use a content layer definition. See below:


    # For each news headline get story text and topic codes

    baseurl = "/data/news/v1/stories/"
    fullcodelist = pd.DataFrame()
    compNews['storyText'] = str()
    compNews['q_codes'] = str()
    compNews['pIDs_mentioned'] = str()
    compNews['RICs_mentioned'] = str()
    compNews['urgency'] = str()

    for i, uri in enumerate(compNews['storyId']):
    request_definition = rd.delivery.endpoint_request.Definition(
    url = baseurl + uri,
    method = rd.delivery.endpoint_request.RequestMethod.GET
    )
    response = request_definition.get_data()
    time.sleep(0.1)
    rawr = response.data.raw
    if 'newsItem' in rawr.keys():
    compNews['storyText'][i] = rawr['newsItem']['contentSet']['inlineData']['$']
    topics = rawr['newsItem']['contentMeta']['subject']
    rics = [x for x in rawr['newsItem']['assert'] if x['_qcode'].startswith("R:")]
    compNews['q_codes'][i] = [d['_qcode'] for d in topics]
    compNews['pIDs_mentioned'][i] = [x for x in compNews['q_codes'][i] if x.startswith("P:")]
    compNews['RICs_mentioned'][i] = [d['_qcode'] for d in rics]
    compNews['urgency'] = rawr['newsItem']['contentMeta']['urgency']['$'] # 1 = hot, 3 = regular

    compNews

    So the following columns are added which contain the PermID and the RIC for the company.

    1716202322279.png


    One thing to note is that it take 1 API call for each news story - so be careful how many you do as you only have 10K API calls per day in total. I hope this can help.

  • Hi Jason

    Thanks for the detailed response. I've just realised that I need the LEI not he ISIN number. Also, is there a way to get the company's name and the headline in separate columns?

    Thanks

    Sonny