Discrepancies/Errors between Python API and Refinitiv Eikon data

Hello,


I have been recently retrieving brokerage recommendations from Reuters using the Python Eikon API.

I am interested in the price target and the grade recommendation assigned by a brokerage to a stock.

Because I need this information to be accurate, I have been handchecking data returned and have found many

errors and discrepancies between what the Python API returns and what is shown by Eikon in the Reuters terminal.

For example, I use the following code to pull recommendations for ticker IRT:

import json

symbol_list = ['IRT']
fields = [
'TR.TPEstvalue.brokername',
'TR.TPEstValue', 'TR.TPEstValue.date',
'TR.BrkRecLabel', 'TR.TPEstvalue.analystname',
'TR.RecLabelEst',
'TR.RecEstValue', 'TR.BrkRecEstConfirmDate'
]
data = ek.get_data(instruments=symbol_list, fields=fields, raw_output=True)
print(json.dumps(data, indent=2, sort_keys=True))


The results for brokerage RBC are the following:

screenshot-48-min.png


Python API says RBC is at a Neutral rating for ticker IRT.

However, the following is returned for when looking at recommendations on the Reuters Terminal:

screenshot-49-min.png


As you can notice, the true grade is an Outperform/Buy rating, not Neutral.

I have posted before on this issue (see "Possible BrkRecLabel and RecEstValue Data Errors"), and this is not an issue of fields retrieved.

I have also been in contact with the Eikon Help Desk, who confirmed data is correct on their end (see case 11302953).

This is a Python API data issue that needs to be corrected. Let me know if more examples would be helpful. These discrepancies appear

in many brokerages and stocks so I have many available.

Welcome!

It looks like you're new here. Sign in or register to get started.

Best Answer

  • nick.zincone
    nick.zincone admin
    Answer ✓

    Hi @bshapiro

    I've reached out to content specialist who provided an explanation as to what is happening. Specifically, it appears to be a common issue if you mix specific data sets - target price and broker recommendations - in one request. Each data set is sorted differently in the backend.

    A proposed solution is to perform 2 separate queries for the different datasets and combine them.

    For example:

    import eikon as ek
    import pandas as pd
    from functools import reduce
    ...

    symbol_list = ['IRT']
    fields = ['TR.BrkRecLabel.brokername', 'TR.BrkRecLabel',
    'TR.BrkRecLabel.date'
    ]
    data1, err = ek.get_data(instruments=symbol_list, fields=fields)
    data1


    symbol_list = ['IRT']
    fields = ['TR.TPEstValue.brokername', 'TR.TPEstValue.analystname',
    'TR.TPEstValue', 'TR.TPEstValue.date'
    ]
    data2, err = ek.get_data(instruments=symbol_list, fields=fields)
    data2


    Combine them:

    result = reduce(lambda x,y: pd.merge(x,y, on='Broker Name', how='outer'), [data1, data2])
    result

    ahs.png

Answers

Welcome!

It looks like you're new here. Sign in or register to get started.

Welcome!

It looks like you're new here. Sign in or register to get started.