question

Upvotes
Accepted
1 0 1 2

Corporate Bonds: Retrieving Dates of Coupons paid this year, and other bond data

Hi everyone,

I have 2 questions regarding the retrieval of Corporate Bond data with the Refinitiv Data Library in Python. I am currently trying to retrieve the coupon rate, next payment date, and coupon payment frequency, with the following formulae: 'TR.CouponRate','TR.FiNextPayDate','TR.FiCouponFrequency'

I checked that these attributes have values in the Data Item Browser, and they do. I tried to convert the ISINs of the respective bonds to RICs and tried to pull the data, but I got the following errors, both with the ISINs and RICs, as shown in the screenshot attached. I am not quite sure how to go about this error, and need some guidance on it.

My next query, is to enquire about how exactly I can go and find the Payments made (Coupon) of a particular bond in a year, or the history of payments that have been made of a bond using rdp in Python. I know there is the Accrual Date attribute which can be pulled, but there isn't a way for me to pull the dates on which coupon payments are being made. The closest thing I can try and find, is in the Second Screenshot attached. This is under `Schedules < Pricing`. Now, this only contains the first coupon payment for a bond, and for bonds that are paid semi-annually, it doesn't show the subsequent payments. How can I pull the list of coupons paid since the start of this year and the date for me to track the coupon payments for 2024, for multiple ISINs of bonds? I tried using this Search code, but it returned no results:

response = search.Definition(
            query=f"{isin} Payment Schedules",
    ).get_data();
    print(response);

I would appreciate any kind of response / assistance on these 2 things, thanks!!


fixed_income_coupon_info_result.png

fixed_income_scheduled_payments_img.jpeg

python#technologybondsrdprdp searchjupyter-notebook
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
Accepted
6.9k 21 3 6

Hi @vishal.nanwani,

The Search function is part of the Content Layer of the RD Lib.. You can find this information on the LSEG Developer Portal's RD Lib. page that leads to GitHub:

1722262078512.png


You can see this in the call too:

isin = '345397C92=2M'
flds = ['TR.CouponRate','TR.FiNextPayDate','TR.FiCouponFrequency']
response = rd.content.search.Definition(
        query=f"{isin} Payment Schedules",
        ).get_data()
print(response)


May I ask why you are using the content layer? I would advise using the Access layer, e.g.: the get_data function:

rd.get_data(
    universe=isin,
    fields=flds
)


Is this what you are after?

1722262045029.png


When it comes to the second part of your question, I would advise looking into the article Payout Schedule & Cash Flow Analysis for a Bond Portfolio. In this article, you can still use the RD Lib. instead of the Eikon Data API (EDAPI). You can replace `ek.get_gata` with `rd.get_data` and use the `rd.content.search.Definition` for searches.

Do let me know if this answers your question.


1722262078512.png (190.1 KiB)
1722262045029.png (11.2 KiB)
icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Upvotes
1 0 1 2

Hi @jonathan.legrand ,


Thank you for your reply, and apologies for my late response! It seems to work after me referencing the article to retrieve this data for the Payout Schedule and Cash Flow Analysis for a Bond Portfolio. I am not going to use search for this purpose anymore. But I have 2 things I need some clarification on:

1. Where can I find the list of acceptable fields that lie in the `fields` parameter for this set of code? Currently, I am trying to find the Coupon Rate for each bond that I can add as a column. I couldn't find this when Ctrl Clicking into the method itself, and while looking through the documentation.

The code snippet in question:

definitions = [
    bond.Definition(
        instrument_code=i)
    for i in isin_list]

response = rd.content.ipa.financial_contracts.Definitions(
    universe=definitions,
    fields=[
        "InstrumentCode",
        "NotionalCcy",
        "PositionInDealCcy",
        "InterestPaymentFrequency", 
        "CashFlowDatesArray",
        "CashFlowInterestAmountsInDealCcyArray",
        "CashFlowCapitalAmountsInDealCcyArray"
        ]).get_data()

2. Why is it that for some ISINs (Instrument Codes) , there isn't any data for any of these fields (like in the code sample for example), and that when I go view this in the Refinitiv Desktop Platform, I can see that these bonds are indeed on the system. I would like some clarity on this.


Thanks!


icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hi @jonathan.legrand ,

1724748091984.png

I have another question regarding the CashFlowDatesArray. I wanted to know, if I could get the CashFlowDates for dates before today. Currently, as you can see from my screenshot, I have gotten dates that are after today, 27th August 2024. My goal is to get all of the Cash Flow Payments in the Year of 2024, so that means if I can get some of the payment dates that cover the whole of 2024, that would be ideal. Do you know of any way I can do this?

Thanks!

1724748091984.png (16.9 KiB)
Upvotes
1 0 1 2

Hi everyone,

Is the way to be able to retrieve this data through a HTTP request, where you can change the pricingParameters, and can change the date for which the data is being pulled for? Any assistance on this topic is appreciated.


Thanks!

icon clock
10 |1500

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.