I'm using the eikon API to retrieve the subsidiary data from the refinitiv. I'm able to retrieve subsidiary information for level 1 subsidiaries only. I'm unable to retrieve the level2 or upto level n subsidiaries. I want my results to be in the form of dictionary. In short for a company tree, the result of the function should return dictionary.
For example, the output of retrieve_subsidiaries(['5000065135', '4298158727']) should be ...
{
'5000065135': ['5036778064', '5043368391', '5076086756', '5046707557', '', '5036778506', '5082358234']
'4298158727': []
}.
I have tried this. But unfortunately, the run time is also very high as there are multiple API requests being done.
I have tried this at my end. Is there any other way to address this issue?
def retrieve_subsidiaries(tcodes):
subs_parameters = {
'SDate': 0,
'EDate': -3,
'Curn': 'JPY',
'Scale': 6,
'ReportType': 'Latest', # Latest, Prelim, Final, All
'ReportingState': 'Rsdt', # Orig, Rsdt, All
'FRQ': 'FY',
}
subs_fields = [
'TR.OrganizationID',
'TR.RelatedOrgId',
'TR.RelatedOrgType',
]
try: # Main part of the code
display(tcodes)
subs, err = ek.get_data(tcodes, subs_fields, subs_parameters)
display(subs)
except Exception as e:
display(e)
sys.exit(1)
result = {}
tcodes = [int(item) for item in tcodes_list]
for tcode in tcodes:
subsidiaries = subs[(subs['Instrument'] == tcode) & (subs['Related Org Type'] == 'Subsidiary')]['Related OrgId'].tolist()
result[tcode] = [sub for sub in subsidiaries if sub]
return result, subs