Eikon API - Extracting Ownership Information at the Quarter Level

I am using the Eikon API to pull firm ownership information in Python. I only need the resulting df to contain four variables: the firm's ticker, the date for the shares held, the number of shares held, and the investor type. My issue is that it is pulling the information for each specific investor, whereas I would like for it to pull the information aggregated for each investor type at the quarter level. This results in the data pull taking an excessive amount of time.

Here is the code I am currently using:

df, err = ek.get_data('AAPL.O', ['TR.SharesHeld.calcdate', 'TR.SharesHeld', 'TR.InvestorType'],

{'SDate': '2023-01-01',

'Edate': '2023-12-31',

'FRQ':'Q'})

Best Answer

  • raksina.samasiri
    Answer ✓

    Hi @Christian Hutzler1268 ,

    As checked this field in the Data Item Browser, 'series' of data isn't available, only 'as of' is.

    1721896779131.png

    Hence I tried to run the code to retrieve the data on specific date and it works.

    Could you please try the code below?

    import pandas as pd

    # generate date for each quarter in year 2023 to be used as 'SDate' parameter
    p = pd.period_range('2023-01-01', periods=4, freq='Q')
    quarters = p.strftime('%Y-%m-%d')

    sum_df = None
    for quarter in quarters:
    df, err = ek.get_data('AAPL.O', ['TR.SharesHeld.calcdate', 'TR.SharesHeld', 'TR.InvestorType'],
    {'SDate': quarter})
    if sum_df is None:
    sum_df = df
    else:
    sum_df = sum_df.append(df)
    sum_df

    1721896895044.png

    Hope this helps and please let me know in case you have any further questions

Answers

  • Thanks.

    The issue is that it pulls the data for each individual investor's holdings. As an example from above, for the 2023-03-31 calc date, there are multiple observations for both the "Investment Advisor/Hedge Fund" and "Investment Advisor" investor types, indicating that it it is pulling the data for all investors. This takes an excessive amount of time to pull. I want to pull the data aggregated by investor type. Do you have any suggestions on how to do this?

  • Hi @Christian Hutzler1268 ,

    Checking from Parameters tab in the Data Item Browser, the investor type can be applied to filter the type you want


    1723616202433.png

    import pandas as pd

    # generate date for each quarter in year 2023 to be used as 'SDate' parameter
    p = pd.period_range('2023-01-01', periods=4, freq='Q')
    quarters = p.strftime('%Y-%m-%d')

    sum_df = None
    for quarter in quarters:
    df, err = ek.get_data('AAPL.O', ['TR.SharesHeld.calcdate', 'TR.SharesHeld.date', 'TR.SharesHeld', 'TR.InvestorType'],
    {'SDate': quarter, 'TheInvestorType':'302'})
    if sum_df is None:
    sum_df = df
    else:
    sum_df = sum_df.append(df)
    sum_df

    1723616377161.png

    Is this what you're looking for? I hope this helps and please let me know in case you have any further questions.