Why does company financial data seem to be missing at certain dates?

Hi there,

I would like to pull company financials for a list of companies at a specific date (this should be free to chose and independent from publication date or fiscal period). An example of such request would be the following, which pulls Revenue data for the stocks within the S&P 500:


df = ek.get_data("0#.SPX", "TR.Revenue(SDate='2020-10-29',EDate='2020-10-29', Period='FQ0', ReportingState='Orig', Frq='D')")


However, I noticed that there are some dates with missing values returned, where I am sure there should be data available. Furthermore, it seems that when adding a day to the EDate Parameter (to the day I observe this behaviour on) it seems that the request is working. To show this specifically, the following gives me a NA for Google as of 28th of October 2020:


df = ek.get_data("GOOGL.O", "TR.Revenue(SDate='2020-10-27',EDate='2020-10-28', Period='FQ0', ReportingState='Orig', Frq='D')")


but when adding a day to EDate, I get a value returned:


df = ek.get_data("GOOGL.O", "TR.Revenue(SDate='2020-10-27',EDate='2020-10-29', Period='FQ0', ReportingState='Orig', Frq='D')")


Can you explain this behaviour? Does this have to do with the announcement date of the new value? How would I write a request to only return the available values as of the 28th of October?


Many thanks.

Best,

Chris

Best Answer

  • Alex Putkov.1
    Alex Putkov.1 ✭✭✭✭✭
    Answer ✓

    @auth

    Upon investigation by Refinitiv Support I can confirm that the behavior you observed may occur for rollover dates (Alphabet Inc released Q3 2020 earnings on 2020-10-29). While this behavior is not intentional, there are no plans to fix it, as we are gradually migrating the source of company fundamentals in Refinitiv products from legacy Refinitiv Financials that provide fields like TR.Revenue to Refinitiv Company Fundamentals.

    To switch to Refinitiv Company Fundamentals, just use the new field names. E.g. instead of TR.Revenue use TR.F.TotRevBizActiv:

    ek.get_data('GOOG.O',['TR.F.TotRevBizActiv(SDate=2020-10-28,Period=FQ0,ReportingState=Orig)'])

    For more info about Refinitiv Company Fundamentals see
    https://training.refinitiv.com/videoplayer/playlist/761?pmf=2m5f677

    If you cannot start using Refinitiv Company Fundamentals right away and need to stay with Refinitiv Financials for now, then as a workaround you need to ensure you use both SDate and EDate parameters with different values, e.g.

    import datetime as dt
    sdate = dt.datetime(2020,10,28)
    edate = sdate + dt.timedelta(1)
    df, err = ek.get_data('GOOG.O',['TR.Revenue.calcdate','TR.Revenue'],
                          {'SDate':sdate.strftime('%Y-%m-%d'),
                           'EDate':edate.strftime('%Y-%m-%d'),
                           'ReportingState':'Orig',
                           'Frq':'D',
                           'Period':'FQ0'})
    revenue = df.loc[df['Calc Date']==sdate.strftime('%Y-%m-%d'),'Revenue']

Answers