Bond Ratings using Python API

Hello Team, I need to get the same thing shown in this link:
https://community.developers.refinitiv.com/questions/55603/bond-ratings-1.html?childToView=101545
This is my script that needs help to make it work. Thank you.
from refinitiv.data.content import search
import refinitiv.data as rd
import pandas as pd
from datetime import date, timedelta, datetime
import numpy as np
rd.open_session()
response = search.Definition(view=search.Views.FIXED_INCOME_INSTRUMENTS, \
filter = f"MaturityRedemDate ge {datetime.today().strftime('%Y-%m-%d')} and IsActive eq true and (InstrumentTypeDescription eq 'Bond' or InstrumentTypeDescription eq 'Note') "\
"and PrincipalCurrency eq 'GBP' "\
"and InflationProtected eq 'N' "\
"and IndustrySectorDescription ne 'Other Financial' and IndustrySectorDescription ne 'Sovereign' and IndustrySectorDescription ne 'Official and Muni' and IndustrySectorDescription ne 'Supranational' "\
"and IndustrySectorDescription ne 'Banks' and IndustrySectorDescription ne 'Agency' and IndustrySectorDescription ne 'Official and Muni'", \
navigators = "SectorDescription", \
select="IssuerLegalName, RIC, ISIN, IsActive, IssueDate, MaturityRedemDate, MaturityYearsToRedem, IssuerCountry, "\
"PrincipalCurrency, InflationProtected, SearchAllCategoryv3, InstrumentTypeDescription, DebtTypeDescription, AssetType, AssetCategory, AssetTypeDescription, AssetSubTypeDescription, AssetStateName," \
"MoodysRating, MoodysRatingDate, SPBondRatingLatest, SPRating, SPRatingDate, "\
"MaturityDate, RCSOrganisationTypeName, IndustrySectorDescription, DbSubTypeDescription, Sector, SectorDescription,"\
"DocumentTitle, Description", \
top = 10000).get_data()
df = response.data.df
df1 = rd.get_data(
universe=[df["RIC"][1-10000]],
#fields=['TR.GR.Rating(BondRatingSrc=FTC:S&P:MDY).RatingSourceDescription','TR.GR.Rating(BondRatingSrc=FTC:S&P:MDY)','TR.GR.Rating(BondRatingSrc=FTC:S&P:MDY).date']
fields=['TR.GR.Rating.RatingSourceDescription','TR.GR.Rating','TR.GR.Rating.date']
)
display(df1)
the goal is to have, per each entry retrieved by the search, the Zspread and the last ratings information (from Moodys and Fitch, with timestamp) also, do you have any guide that I can use regarding retrieving Fixed Income instruments using the Python API? I often struggle to know which info are available and what's the code (for "filter" or "select") to be used
Best Answer
-
Please use universe=df["RIC"][0:10000] instead. The code looks like this:
df1 = rd.get_data(
universe=df["RIC"][0:10000],
fields=['TR.GR.Rating.RatingSourceDescription','TR.GR.Rating','TR.GR.Rating.date']
)
display(df1)The output is:
For more information regarding array slicing, please refer to this page.
0
Answers
-
@dianne.palmario which part of your script is failing? please copy and paste the error message. thanks
0 -
This part is not working:
universe=[df["RIC"][1-10000]]
but when I change this to:
universe=[df["RIC"][4]]
it works, but the problem is, it only display the RIC of the 4th data from the result table. I need all of them (392 rows to be exact).
Here is the error message if I change it to 1-10000:
0 -
I changed to below and it still does not work. It only works if I place one number. Example: universe=[df["RIC"][4]]
universe=[df["RIC"][1:10000]]
#This still does not work
0 -
@dianne.palmario please can you try :
universe= df["Instrument"][0:].astype(str).to_list()
If it does not work can you please paste a copy of your error otherwise it is difficult for us to help you. I hope this can help.
0 -
@jason.ramchandani01 - here is the error after changing to:
universe= df["Instrument"][0:].astype(str).to_list()
0 -
@dianne.palmario so this works for me:
response = search.Definition(
view=rd.discovery.Views.FIXED_INCOME_INSTRUMENTS,
filter = "MaturityRedemDate ge 2023-01-01 and IsActive eq true and (InstrumentTypeDescription eq 'Bond' or InstrumentTypeDescription eq 'Note') and PrincipalCurrency eq 'GBP' and InflationProtected eq 'N' and IndustrySectorDescription ne 'Other Financial' and IndustrySectorDescription ne 'Sovereign' and IndustrySectorDescription ne 'Official and Muni' and IndustrySectorDescription ne 'Supranational' and IndustrySectorDescription ne 'Banks' and IndustrySectorDescription ne 'Agency' and IndustrySectorDescription ne 'Official and Muni'",
navigators = "SectorDescription",
select="IssuerLegalName, RIC, ISIN, IsActive, IssueDate, MaturityRedemDate, MaturityYearsToRedem, IssuerCountry, PrincipalCurrency, InflationProtected, SearchAllCategoryv3, InstrumentTypeDescription, DebtTypeDescription, AssetType, AssetCategory, AssetTypeDescription, AssetSubTypeDescription, AssetStateName,MoodysRating, MoodysRatingDate, SPBondRatingLatest, SPRating, SPRatingDate,MaturityDate, RCSOrganisationTypeName, IndustrySectorDescription, DbSubTypeDescription, Sector, SectorDescription, DocumentTitle, Description",
top = 10000).get_data()
response.data.dfthen:
df1 = rd.get_data(
universe= response.data.df["RIC"].astype(str).to_list(),
fields=['TR.GR.Rating.RatingSourceDescription','TR.GR.Rating','TR.GR.Rating.date']
)
df1I hope this is clear for you.
0 -
The above script works! Thank you @jason.ramchandani01
For the search.Definition API Library, do we have any guide that the client can use regarding retrieving Fixed Income instruments using the Python API?
Client often struggle to know which info are available and what's the code (for "filter" or "select") to be used.
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
- 685 Datastream
- 1.4K DSS
- 615 Eikon COM
- 5.2K Eikon Data APIs
- 10 Electronic Trading
- Generic FIX
- 7 Local Bank Node API
- 3 Trading API
- 2.9K Elektron
- 1.4K EMA
- 252 ETA
- 556 WebSocket API
- 38 FX Venues
- 14 FX Market Data
- 1 FX Post Trade
- 1 FX Trading - Matching
- 12 FX Trading – RFQ Maker
- 5 Intelligent Tagging
- 2 Legal One
- 23 Messenger Bot
- 3 Messenger Side by Side
- 9 ONESOURCE
- 7 Indirect Tax
- 60 Open Calais
- 275 Open PermID
- 44 Entity Search
- 2 Org ID
- 1 PAM
- PAM - Logging
- 6 Product Insight
- Project Tracking
- ProView
- ProView Internal
- 22 RDMS
- 1.9K Refinitiv Data Platform
- 652 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
- 104 UPA
- 193 TREP Infrastructure
- 228 TRKD
- 917 TRTH
- 5 Velocity Analytics
- 9 Wealth Management Web Services
- 90 Workspace SDK
- 11 Element Framework
- 5 Grid
- 18 World-Check Data File
- 1 Yield Book Analytics
- 46 中文论坛