How can I retrieve financial data from a list of bond ISINs?

Hi, I've been trying out to retrieve some financial data for a quite while. I've had several problems, then solutions that unfortunately only created more problems (or at least sometimes/often). I tried to write right below what I was trying to achieve. Any help is appreciated, thanks in advance! :)
Brief description of what is needed:
The end goal would be to have a pandas DataFrame consisting of financial data from various
companies over the last x quarters (where x is the number of quarters).
Everything should be in Python code.
A bit more detailed: A list of bond ISINs (not the ISIN of the respective company) should be input, and in the next step, financial data for the last x quarters should be output.
The following problems occurred:
There is not a RIC for every company (example: Trustees of Princeton University). What would you do with such entities? Is there a workaround?
A list of y financial metrics per company, per quarter should be retrieved (where y is the number of financial metrics). Unfortunately, there were repeated read-time-out errors, but I have no idea what the cause is. I also set the HTTP Timeout Request to 120. I'm not sure but maybe it's because I'm trying to retrieve data for around 1.500 companies from 15.000 bonds and 40 financial fields. Could that be the case?
The list of ISINs could look like this (but in the end it's gonna be more close to 15.000):
['US34531XAB01', 'US96926GAC78', 'US037833EY27', 'US594918CW29', 'US85440KAC80', 'US89837LAH87']
The list of financial metrics could look like this (but in the end it's gonna be more close to 40, it's just for testing right now):
fin_fields = [‘TR.Revenue’, ‘TR.F.NetDebt’, ‘TR.F.DebtTot’, ‘TR.F.EBITDA’, ’TR.F.IntrxExpn‘]
I've seen several times that TR.Revenue.date has been used for the date. Is there a better approach or does it always work? Even with 40 different financial fields?
Maybe this process description helps a bit more:
⇒ 1. Read in the bond ISINs
⇒ 2. Convert bond ISIN to RIC (or equivalent) of the parent company (not ultimate parent)
⇒ 3. Store unique parent company RICs in a list (maybe not necessary, depending on the approach chosen ⇒ the idea behind this: 1 company can have several bonds, but 1 bond always has only 1 company)
⇒ 4. Using the list of unique parent company RICs, save the financial metrics of the x companies and y financial metrics in a pandas DataFrame
(This would be roughly the process flow)
I hope the description helps for understanding!
Again: Thank you a lot in advance! :)
Best Answers
-
Thank you for reaching out to us.
Private companies don't have RICs. Typically, we can use PermIDs for private companies. You can get the company PermIDs by using the following code.
ld.get_data( universe = ['US89837LAD73'], fields = ['TR.FiOrganizationofRiskPermID'])
Then, you can use the PermIDs to get other financial data.
ld.get_data( universe = ['4297381328'], fields = ['TR.F.TotRevenue', 'TR.F.NetDebt', 'TR.F.DebtTot', 'TR.F.EBITDA', 'TR.F.IntrxExpn'])
When requesting a lot of items or data at once, the request can be timeout as mentioned on the Usage and Limits Guideline. Therefore, you should split your request into smaller batches, such as ten or hundred RICs at a time, as shown on this discussion.
1 -
Are you using the Data Platform session (rdp or ldp)?
I got the same error when using the Data Platform session.
You can try this symbol_conversion instead. For example:
response = symbol_conversion.Definition( symbols = ['US89837LAD73'], from_symbol_type = symbol_conversion.SymbolTypes.ISIN, to_symbol_types = [symbol_conversion.SymbolTypes.OA_PERM_ID]).get_data() response.data.df
1
Answers
-
@Jirapongse Thank you a lot! I've also tried to retrieve data in small batches, but your code seems much more sophisticated than mine! Appreciate it!
0 -
@Jirapongse Hi, sorry for the inconvenience: Is there any particular reason why I get the following error (see below)? Do I not have access to that data?
The access to field(s) denied. Requested universes: ['US89837LAD73']. Requested fields: ['TR.FIORGANIZATIONOFRISKPERMID']
0 -
Yes, I was using ldp!
Just tried out your approach and it worked. Thank you a lot!
0
Categories
- All Categories
- 3 Polls
- 6 AHS
- 36 Alpha
- 166 App Studio
- 6 Block Chain
- 4 Bot Platform
- 18 Connected Risk APIs
- 47 Data Fusion
- 34 Data Model Discovery
- 695 Datastream
- 1.5K DSS
- 631 Eikon COM
- 5.2K Eikon Data APIs
- 12 Electronic Trading
- 1 Generic FIX
- 7 Local Bank Node API
- 4 Trading API
- 2.9K Elektron
- 1.4K EMA
- 255 ETA
- 562 WebSocket API
- 39 FX Venues
- 15 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 25 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 281 Open PermID
- 46 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 23 RDMS
- 2K Refinitiv Data Platform
- 736 Refinitiv Data Platform Libraries
- 4 LSEG Due Diligence
- LSEG Due Diligence Portal API
- 4 Refinitiv Due Dilligence Centre
- Rose's Space
- 1.2K Screening
- 18 Qual-ID API
- 13 Screening Deployed
- 23 Screening Online
- 12 World-Check Customer Risk Screener
- 1K World-Check One
- 46 World-Check One Zero Footprint
- 45 Side by Side Integration API
- 2 Test Space
- 3 Thomson One Smart
- 10 TR Knowledge Graph
- 151 Transactions
- 143 REDI API
- 1.8K TREP APIs
- 4 CAT
- 27 DACS Station
- 121 Open DACS
- 1.1K RFA
- 106 UPA
- 194 TREP Infrastructure
- 229 TRKD
- 918 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 96 Workspace SDK
- 11 Element Framework
- 5 Grid
- 19 World-Check Data File
- 1 Yield Book Analytics
- 48 中文论坛