New posts are disabled while we improve the user experience.

You can browse the site, or for urgent issues, raise a query at MyAccount.

question

Upvotes
Accepted
1 1 1 1

Retrieve historical bond yields for various maturities and governments

Hello, I am trying to retrieve the bond yields for various maturities per country (Germany, Switzerland, Netherlands). I am using the Eikon API in Python, Windows.

Essentially, I want to derive the monthly Yield-to-maturity (YTM) for various maturities (1 month, 3 month, 6 month, 1 year, 2 year, 10 year, and 30 year) from 2010-01-01 to 2020-01-01. I have tried the following for Germany but without success;

df1 = ek.get_timeseries('0#DEBMK=
    start_date='2010-01-01
    end_date='2020-01-01
    interval='monthly'
    )

I also tried the Refinitiv api but it didn't work:

rics = ['0#DEBMK=']

for a_ric in rics:
    df = rdp.get_historical_price_summaries(
        universe = a_ric,
        start = '2020-12-10',
        end = '2020-12-26',
        fields = ['MID_YLD_1']
    )
    print(df)


eikoneikon-data-apipythonrefinitiv-dataplatform-eikon#technologyyield-curve
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.

1 Answer

· Write an Answer
Upvotes
Accepted
7.5k 18 2 8

Hi @Lund.student3 ,


I would suggest using Chain and het_ghistory functions from Data Libraries for Python:

1. Expand the bond chain to get constituents:

import refinitiv.data as rd
from refinitiv.data.discovery import Chain
rd.open_session()
bonds = Chain(name="0#DEBMK=")
print(bonds.constituents)
['DE1MT=RR', 'DE3MT=RR', 'DE6MT=RR', 'DE9MT=RR', 'DE1YT=RR', 'DE2YT=RR', 'DE3YT=RR', 'DE4YT=RR', 'DE5YT=RR', 'DE6YT=RR', 'DE7YT=RR', 'DE8YT=RR', 'DE9YT=RR', 'DE10YT=RR', 'DE15YT=RR', 'DE20YT=RR', 'DE25YT=RR', 'DE30YT=RR']

2. request historical pricing data including yields:

rd.get_history(bonds.constituents) 

screenshot-2024-04-29-at-115415.png

This will return all available fields. You can also provide additional fields, start and end parameters for a specific request:

rd.get_history(universe = bonds.constituents, fields =["HIGH_YLD", "LOW_YLD", "A_YLD_1", "ISMA_A_YLD"], start='2024-01-01', end = '2024-04-28')


Hope this helps.


Best regards,

Haykaz


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.