Problems with ownership data, python API.

Hi, I wanted to download historical ownership data for several US companies, I checked and to download ownership data I can use three options:

- Ultimate Parent Holdings =TR("NEOF.OQ^C06@RIC","TR.UltPrntPctOfShrsOutHld")
- Consolidated Holdings =TR("NEOF.OQ^C06@RIC","TR.PctOfSharesOutHeld")
- Fund Holdings =TR("NEOF.OQ^C06@RIC","TR.FdAdjPctOfShrsOutHeld").


to get the data I use the following code:


test, e = ek.get_data('4295914290', ['TR.InvestorFullName',

'TR.PctOfSharesOutHeld',

'TR.SharesHeld.calcdate',

'TR.HoldingsDate',

'TR.SharesHeld',

'TR.SharesHeldChange',

'TR.SharesHeldValue'],

{'SDate': '2000-01-24', 'EDate':'2000-04-29', 'Frq' : 'M'})

with which I should get the following values, since I am occupying the consolidated holdings code.

1705526016530.png

But what I get is the following, as if I were using the Ultimate Parent Holdings code.

1705526297370.png




Besides the result gives me many empty cells.

How do I fix this problem?


thanks in advance

Best Answer

  • @bmurua Thanks for your question. So first off it appears that only end of month or quarterly data is available for Holdings - i tried to match the ownership from the Shareholders Report app to encompass the end of month data - see below:

    1706709204387.png

    I then use the following API call (using our RD library - it will be the similar call in Eikon Data API)

    test = rd.get_data('4295914290', ['TR.InvestorFullName','TR.PctOfSharesOutHeld','TR.SharesHeld.calcdate','TR.HoldingsDate','TR.SharesHeld','TR.SharesHeldChange','TR.SharesHeldValue'],{'SDate': '2000-01-31', 'EDate':'2000-04-30', 'Frq' : 'M'})

    test

    1706709366384.png

    this matches the shareholder report exactly by date - I exported the file and looked at it in excel using:

    test.to_excel("test_own.xlsx")

    There is of course a monthly duplication as we are requesting Monthly data for 4 Months. The view you see in the Shareholder Report app is 69 rows - which is the filtered view using TR.SharesHeld.calcdate Month (most recent in this case eg 2000-04-30). However - if I look at the Data Item Browser app (type DIB into Eikon Search bar) I don't see a range parameter for the field - just the date is 'As of' which means a single date rather than a range. I checked this further looking at the earliest data in the range say 2000-01-31 which is as you say containing some NA, NaT returns.

    test = rd.get_data('4295914290', ['TR.InvestorFullName','TR.PctOfSharesOutHeld','TR.SharesHeld.calcdate','TR.HoldingsDate','TR.SharesHeld','TR.SharesHeldChange','TR.SharesHeldValue'],{'SDate': '2000-01-31','EDate':'2000-01-31','Frq' : 'M'})
    test

    This returns 9 populated rows as it does in the Shareholders Report app for the same date - as opposed to 9 populated rows padded to 69 rows with NA, NaTs - in the multi-month query. (Interestingly for 2000-02-29 there are 10 populated rows - padded to 69 rows with NA,NaTs as well). I hope this can clarify. So the way to do this correctly is to build the data for each month I believe and then concatenate these months together to form the full dataset.

    If you think the data is incorrect feel free to open a content query with using Contact Us button (helpdesk) in the Helios menu as I cant verify the content.

    I hope this can help.