How to get historical holdings and allocation data for funds?

How to get monthly or quarterly changes in a fund holdings, sector and country allocations? With the below code I'm only able to get the recent holdings and not the historical holdings.


Python

column_fields = [
    "TR.FundHoldingRIC",
    "TR.FundHoldingName",
    "TR.FundPercentageOfFundAssets",
]
refinitiv_data, err = ek.get_data(["SPY"], column_fields, date_paremters)
refinitiv_data


How to get the same historical weights for the below allocations?

Asset allocation -> ["TR.FundAssetAllocation", "TR.FundAllocationName"]

Country allocation -> ["TR.FundCountryAllocation", "TR.FundAllocationName"]

Sector allocation -> ["TR.FundIndustrySectorAllocation", "TR.FundAllocationName"]

Best Answer

  • bob.lee
    bob.lee LSEG
    Answer ✓

    Hi @BlackBird, I do not think the Eikon data API for Lipper (i.e. field name starts with "TR.Fund") can provide historical data currently. Because I do not see date parameters for these fields from Data Item Browser.

    I know the RDP Funds API can can provide that.

    However, if you only interested in ETFs, I am aware the constituent data is available from the Refinitiv's exchange data (not from Lipper I believe). Below is a sample code you can try. The sample is getting the data as of the month-end date 2 months ago. You can put in the exact date if you want, and I think they got daily data for most of ETFs. I am not sure if you can specify a date range. Also, I do not think the "allocations" data is available from Exchange data set, as allocations is likely only available from Lipper database.


    df, err = ek.get_data(
        instruments = ['SPY'],
        fields = [
            'TR.ETPConstituentRIC',
            'TR.ETPConstituentName',
            'TR.ETPConstituentWeightPercent',
            'TR.ETPConstituentWeightPercent.Date'
        ],
        parameters = {'SDate': '-2M'}
    )
    df

Answers