Real interest rates #

This category group contains various measures of local-currency real interest rates. Nominal interest rate measures are selected such that they are roughly comparable across countries. They are adjusted by using either vintages of formulaic estimates of inflation expectations or (backward-looking) vintages of recent CPI inflation trends.

Real short-term interest rates #

Ticker : RIR_NSA / RIRB_NSA

Label : Real short-term interest rate: expectations-based / backward looking

Definition : Main 1-month money market rate or closest proxy: adjusted for inflation expectations / adjusted for latest CPI trend

Notes :

  • For many countries, the short-term interest rate was the 1-month local-currency LIBOR rate until December 2021.

  • At the end of 2021, LIBOR started to be phased out and was replaced on the 15th December 2021 by overnight index swap (OIS) rates in Switzerland, the Eurozone, Great Britain, Japan and the United States. Australia switched to OIS rates on the 1st September 2022. These rates have become the new standard.

  • The following currency areas have used rates other than the 1-month LIBOR rates (prior to the LIBOR reform) for the whole sample history:

    • Brazil: Interbank rate - interbank deposit certificates

    • Canada: 1 month term spot forward rate

    • Chile: 3-month interbank rate (fixing)

    • Czech Republic: 2-week repo rate

    • New Zealand: 90-day bank bill rate

    • Taiwan: 1-year IRS rate

  • The Phillipines use the Manila interbank 1-month discount rate prior to the 2nd January 2006, after which the 1-month swap rate is used.

  • Russia uses the 1-month Moscow price rate prior to the 15th April 2011, after which the average of the Moscow price rate and the 1-month OIS rate is used.

  • Inflation expectation refers to a 1-year ahead estimated inflation expectation according to a Macrosynergy methodology. See notes on the category INFE1Y_JA here .

  • The latest CPI trend refers to the last recorded CPI growth trend (six months over previous six months), seasonally and jump-adjusted, using headline and core rates with equal weights. For more information, see the documentation here .

Real policy-driven interest rates #

Ticker : RPIR_NSA / RPIRB_NSA

Label : Real policy-driven short-term interest rate: expectations-based / backward looking

Definition : A 1-month money market rate or closest proxy that typically serves as an indication of local monetary policy: adjusted for inflation expectations / adjusted for latest CPI trend

Notes :

  • For most countries, the policy-driven and main short-term interest rates are identical. For some countries, there have been (or still are) better metrics for tracking monetary policy intentions. These include:

    • AUD: 1-month OIS rate

    • BRL: Overnight Selic rate

    • CHF: 1-month OIS rate and 1-month deposit rate

    • EUR: 1-month OIS rate

    • INR: 1-month MIBOR and reverse repo rate

    • JPY: 1-month OIS rate

    • NZD: 1-month OIS rate

  • Inflation expectation refers to a 1-year ahead estimated inflation expectation according to a Macrosynergy methodology. See notes on the category INFE1Y_JA here .

  • The latest CPI trend refers to the last recorded CPI growth trend (six months over previous six months), seasonally and jump-adjusted, using headline and core rates with equal weights. For more information, see the documentation here .

Longer-term real IRS yields #

Ticker : RYLDIRS02Y_NSA / RYLDIRS05Y_NSA / RYLDIRS02YB_NSA / RYLDIRS05YB_NSA

Label : Real IRS yield: 2-year maturity, expectations-based / 5-year maturity, expectations-based / 2-year maturity, backward looking / 5-year maturity, backward looking

Definition : Main local interest rate swap yield minus inflation expections: 2-year maturity, adjusted for inflation expectations / 5-year maturity, adjusted for inflation expectations / 2-year maturity, adjusted for latest CPI trend / 5-year maturity, adjusted for latest CPI trend

Notes :

  • The nominal yield is the yield on the fixed receiver positions in the main interest rate swap contracts traded in the currency area.

  • Inflation expectation refers to a 2-year or 5-year ahead estimated inflation expectation according to a Macrosynergy methodology. See notes on the categories INFE2Y_JA and INFE5Y_JA here .

  • The latest CPI trend refers to the last recorded CPI growth trend (six months over previous six months), seasonally and jump-adjusted, using headline and core rates with equal weights. For more information, see the documentation here .

Imports #

Only the standard Python data science packages and the specialized macrosynergy package are needed.

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import math

import json
import yaml

import macrosynergy.management as msm
import macrosynergy.panel as msp
import macrosynergy.signal as mss
import macrosynergy.pnl as msn


from macrosynergy.download import JPMaQSDownload

from timeit import default_timer as timer
from datetime import timedelta, date, datetime

import warnings
from IPython.display import HTML

warnings.simplefilter("ignore")

The JPMaQS indicators we consider are downloaded using the J.P. Morgan Dataquery API interface within the macrosynergy package. This is done by specifying ticker strings , formed by appending an indicator category code <category> to a currency area code <cross_section> . These constitute the main part of a full quantamental indicator ticker, taking the form DB(JPMAQS,<cross_section>_<category>,<info>) , where <info> denotes the time series of information for the given cross-section and category. The following types of information are available:

  • value giving the latest available values for the indicator

  • eop_lag referring to days elapsed since the end of the observation period

  • mop_lag referring to the number of days elapsed since the mean observation period

  • grade denoting a grade of the observation, giving a metric of real time information quality.

After instantiating the JPMaQSDownload class within the macrosynergy.download module, one can use the download(tickers,start_date,metrics) method to easily download the necessary data, where tickers is an array of ticker strings, start_date is the first collection date to be considered and metrics is an array comprising the times series information to be downloaded.

# Cross-sections of interest

cids_dmca = [
    "AUD",
    "CAD",
    "CHF",
    "EUR",
    "GBP",
    "JPY",
    "NOK",
    "NZD",
    "SEK",
    "USD",
]  # DM currency areas
cids_dmec = ["DEM", "ESP", "FRF", "ITL", "NLG"]  # DM euro area countries
cids_latm = ["BRL", "COP", "CLP", "MXN", "PEN"]  # Latam countries
cids_emea = ["CZK", "HUF", "ILS", "PLN", "RON", "RUB", "TRY", "ZAR"]  # EMEA countries
cids_emas = [
    "CNY",
    # "HKD",
    "IDR",
    "INR",
    "KRW",
    "MYR",
    "PHP",
    "SGD",
    "THB",
    "TWD",
]  # EM Asia countries

cids_dm = cids_dmca + cids_dmec
cids_em = cids_latm + cids_emea + cids_emas

cids = sorted(cids_dm + cids_em)
main = [
    "RIR_NSA",
    "RPIR_NSA",
    "RYLDIRS02Y_NSA",
    "RYLDIRS05Y_NSA",
    "RIRB_NSA",
    "RPIRB_NSA",
    "RYLDIRS02YB_NSA",
    "RYLDIRS05YB_NSA",
]

econ = [
    "NIR_NSA",
    "NPIR_NSA",
    "CPIC_SJA_P6M6ML6AR",
    "CPIC_SJA_P3M3ML3AR",
    "CPIH_SJA_P6M6ML6AR",
]  # economic context

mark = [
    "EQXR_NSA",
    "EQXR_VT10",
    "DU02YXR_NSA",
    "DU02YXR_VT10",
    "DU05YXR_NSA",
    "DU05YXR_VT10",
]  # market links

xcats = main + econ + mark
# Download series from J.P. Morgan DataQuery by tickers

start_date = "2002-01-01"
tickers = [cid + "_" + xcat for cid in cids for xcat in xcats]
print(f"Maximum number of tickers is {len(tickers)}")

# Retrieve credentials

client_id: str = os.getenv("DQ_CLIENT_ID")
client_secret: str = os.getenv("DQ_CLIENT_SECRET")

# Download from DataQuery

with JPMaQSDownload(client_id=client_id, client_secret=client_secret) as downloader:
    start = timer()
    df = downloader.download(
        tickers=tickers,
        start_date=start_date,
        metrics=["value", "eop_lag", "mop_lag", "grading"],
        suppress_warning=True,
        show_progress=True,
    )
    end = timer()

dfd = df

print("Download time from DQ: " + str(timedelta(seconds=end - start)))
Maximum number of tickers is 703
Downloading data from JPMaQS.
Timestamp UTC:  2024-10-29 10:56:01
Connection successful!
Requesting data: 100%|██████████| 141/141 [00:28<00:00,  4.91it/s]
Downloading data: 100%|██████████| 141/141 [00:07<00:00, 19.09it/s] 
Some expressions are missing from the downloaded data. Check logger output for complete list.
760 out of 2812 expressions are missing. To download the catalogue of all available expressions and filter the unavailable expressions, set `get_catalogue=True` in the call to `JPMaQSDownload.download()`.
Some dates are missing from the downloaded data. 
2 out of 5958 dates are missing.
Download time from DQ: 0:00:43.051931

Availability #

cids_exp = sorted(list(set(cids) - set(cids_dmec)))  # cids expected in category panels
msm.missing_in_df(dfd, xcats=main, cids=cids_exp)
No missing XCATs across DataFrame.
Missing cids for RIRB_NSA:         []
Missing cids for RIR_NSA:          []
Missing cids for RPIRB_NSA:        []
Missing cids for RPIR_NSA:         []
Missing cids for RYLDIRS02YB_NSA:  ['BRL', 'MYR', 'PEN', 'PHP', 'RON']
Missing cids for RYLDIRS02Y_NSA:   ['BRL', 'MYR', 'PEN', 'PHP', 'RON']
Missing cids for RYLDIRS05YB_NSA:  ['BRL', 'MYR', 'PEN', 'PHP', 'RON']
Missing cids for RYLDIRS05Y_NSA:   ['BRL', 'MYR', 'PEN', 'PHP', 'RON']

Quantamental series’ of real interest rates are typically available from the early 2000s for most developed markets. China, Colombia, Russia and Thailand are notable late-starters. Time series’ for real swap yields are not available for the Phillipines, Malaysia, Brazil, Peru and Romania.

For the explanation of currency symbols, which are related to currency areas or countries for which categories are available, please view Appendix 1 .

xcatx = main
cidx = cids_exp

dfx = msm.reduce_df(dfd, xcats=xcatx, cids=cidx)
dfs = msm.check_startyears(
    dfx,
)
msm.visual_paneldates(dfs, size=(18, 4))

print("Last updated:", date.today())
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/63e7c1432c24d87ee57debcf9ac7b96b904edc35ec16d8d3101a234fa607f58e.png
Last updated: 2024-10-29
xcatx = main
cidx = cids_exp

plot = msm.check_availability(
    dfd, xcats=xcatx, cids=cidx, start_size=(18, 4), start_years=False
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/f8cca89d4e9a42dd0e106587771a8b15b42a4def146429bcf3f70ef34023f834.png

Average vintage grading is higher for longer-dated yields as the long-dated inflation expectations are based more on concurrent inflation targets, which do not require vintage estimation.

xcatx = main
cidx = cids_exp

plot = msp.heatmap_grades(
    dfd,
    xcats=xcatx,
    cids=cidx,
    size=(18, 4),
    title=f"Average vintage grades from {start_date} onwards",
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/174920b2fbef8dce77271964b2440736c7c89361669881665caac3edab66f207.png
xcatx = main
cidx = cids_exp

msp.view_ranges(
    dfd,
    xcats=xcatx,
    cids=cidx,
    val="eop_lag",
    title="End of observation period lags (ranges of time elapsed since end of observation period in days)",
    start="2002-01-01",
    kind="box",
    size=(16, 2.5),
    legend_bbox_to_anchor=(1.08, 1),
)
msp.view_ranges(
    dfd,
    xcats=xcatx,
    cids=cidx,
    val="mop_lag",
    title="Median of observation period lags (ranges of time elapsed since middle of observation period in days)",
    start="2002-01-01",
    kind="box",
    size=(16, 6),
    legend_bbox_to_anchor=(1.1, 0.4),
    
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/94e8c74f7e32ecc6fc6de22faf66e1b6d12cd298ad1a8a1976781f1ad0c46840.png https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/e93a6a97afbe69507f6ba694fec75ef5b21d8b66653a2dd056c951c9ca510c19.png

History #

Real short-term interest rates #

Real interest rates have been diverse across countries, in terms of means and standard deviations, and generally quite variable over time relative to their means.

xcatx = ["RIR_NSA", "RPIR_NSA"]
cidx = cids_exp

msp.view_ranges(
    dfd,
    xcats=xcatx,
    cids=cidx,
    sort_cids_by="mean",
    start=start_date,
    kind="box",
    title="Means and standard deviations of real short-term interest rates, expectations-based, since 2002",
    xcat_labels=["Real", "Real policy-driven"],
    size=(16, 8),
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/aec7cdde197280b7fee0408b697b67a7e818bfe7e398d17d8bf1a212e95e5d9b.png
xcatx = ["RIR_NSA", "RPIR_NSA"]
cidx = cids_exp

msp.view_timelines(
    dfd,
    xcats=xcatx,
    cids=cidx,
    start=start_date,
    title="Main and policy-driven real interest rates, expectations-based",
    title_fontsize=27,
    legend_fontsize=17,
    label_adj=0.075,
    xcat_labels=["Real", "Real policy-driven"],
    ncol=4,
    same_y=False,
    size=(12, 7),
    aspect=1.7,
    all_xticks=True,
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/efb2e7d92491bd544f2ad971d33f077217219757159f2e657cda18ee354dc706.png

Backward-looking inflation adjustment can lead to very different real rate estimates in times when the concurrent published inflation trend is well above or below the effective inflation target.

In inflationary periods, this leads to a greater compression in real rates. In temporary lowflation or deflation periods, the backward-looking real rates are typically higher.

xcatx = ["RIR_NSA", "RIRB_NSA"]
cidx = cids_exp

msp.view_timelines(
    dfd,
    xcats=xcatx,
    cids=cidx,
    start=start_date,
    title="Real expectations-based and backward-looking interest rates",
    title_fontsize=27,
    legend_fontsize=17,
    label_adj=0.075,
    xcat_labels=["Expectation", "Backward"],
    ncol=4,
    same_y=False,
    size=(12, 7),
    aspect=1.7,
    all_xticks=True,
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/8a71cd4620467a6216e36529f221b6b0fe46f73f28186d1387df35e3cdeaa4a0.png

Cross-sectional correlations of short-term real interest rates across currency areas have mostly been positive. Russia and China display notable idiosyncratic dynamics.

xcatx = "RIR_NSA"
cidx = cids_exp

msp.correl_matrix(dfd, xcats="RIR_NSA", cids=cidx, cluster=True, size=(20, 14))
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/7d0d23dd53861fdbb8012e11bb5310e8c46948043cae88703cf8628e8fb2fc9f.png

Longer-term real IRS yields #

As with short-term real interest rates, cross-sectional and intertemporal differences of longer-term real rates have been fairly wide relative to their means.

Most countries have experienced both negative and sizable positive real interest rates over the sample period.

xcatx = ["RYLDIRS02Y_NSA", "RYLDIRS05Y_NSA"]
cidx = cids_exp

msp.view_timelines(
    dfd,
    xcats=xcatx,
    cids=cidx,
    start=start_date,
    title="Real 2-year and 5-year interest rate swap yields, expectations-based",
    title_fontsize=27,
    legend_fontsize=17,
    label_adj=0.075,
    xcat_labels=["2-year", "5-year"],
    ncol=4,
    same_y=False,
    size=(12, 7),
    aspect=1.7,
    all_xticks=True,
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/dcd04691dd36127a080f940f6e10b09e06135b5050b37f40b01c78a569229738.png

Backward-looking inflation adjustment, for both 2-year and 5-year yields, can produce very different levels of estimated real swap yields compared to expectations-based adjustment.

xcatx = ["RYLDIRS02Y_NSA", "RYLDIRS02YB_NSA"]
cidx = cids_exp

msp.view_timelines(
    dfd,
    xcats=xcatx,
    cids=cidx,
    start=start_date,
    title="Real 2-year interest rate swap yields",
    xcat_labels=["Expectations-based", "Backward-looking"],
    title_fontsize=27,
    legend_fontsize=17,
    label_adj=0.075,
    ncol=4,
    same_y=False,
    size=(12, 7),
    aspect=1.7,
    all_xticks=True,
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/3fffdc500b0553c11472e4efff0d915c5028e19c2042e5c45154963eafc434f6.png
xcatx = ["RYLDIRS05Y_NSA", "RYLDIRS05YB_NSA"]
cidx = cids_exp

msp.view_timelines(
    dfd,
    xcats=xcatx,
    cids=cidx,
    start=start_date,
    title="Real 5-year interest rate swap yields",
    title_fontsize=27,
    legend_fontsize=17,
    label_adj=0.075,
    xcat_labels=["Expectations-based", "Backward-looking"],
    ncol=4,
    same_y=False,
    size=(12, 7),
    aspect=1.7,
    all_xticks=True,
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/6423edc139e6e62386b939e4d1f088ada8bb57eb94ab6d674babffefeae74c00.png

Importance #

Empirical clues #

Most analysts would expect that higher real interest rates bode well for duration and high-grade fixed income returns, whilst poorly for equity returns.

Indeed, there is evidence of a positive association between real interest rates and subsequent monthly IRS returns in developed markets.

xcatx = ["RIR_NSA", "DU02YXR_NSA"]
cidx = cids_dmca

cr = msp.CategoryRelations(
    dfd,
    xcats=xcatx,
    cids=cidx,
    freq="M",
    lag=1,
    xcat_aggs=["mean", "sum"],
    start=start_date,
    years=None,
)

cr.reg_scatter(
    title="Real short-term interest rates and next-month IRS returns, 2-year maturity, developed markets, since 2002",
    labels=False,
    coef_box="upper left",
    xlab="Real short-term interest rate, expectations-based, % annualized",
    ylab="2-year IRS fixed receiver return",
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/24c78463a2045bc65bde7ec9826fa6fd7b42444ad4a9827818098964809ddab9.png
xcatx = ["RIR_NSA", "DU05YXR_NSA"]
cidx = cids_dmca

cr = msp.CategoryRelations(
    dfd,
    xcats=xcatx,
    cids=cidx,
    freq="M",
    lag=1,
    xcat_aggs=["mean", "sum"],
    start=start_date,
    years=None,
)

cr.reg_scatter(
    title="Real short-term interest rates and next-month IRS returns, 5-year maturity, developed markets, since 2002",
    labels=False,
    coef_box="upper left",
    xlab="Real short-term interest rate, expectations-based, % annualized",
    ylab="5-year IRS fixed receiver return",
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/2bb5be9adad8bf56c13a3c6d692a009f4f8ca9c498cd9e7ee6171294f91bc0dd.png

Moreover, there is evidence of a positive and significant relation between real swap yields and subsequent receiver returns in developed markets at a monthly frequency.

xcatx = ["RYLDIRS05Y_NSA", "DU05YXR_NSA"]
cidx = cids_dmca

cr = msp.CategoryRelations(
    dfd,
    xcats=xcatx,
    cids=cidx,
    freq="M",
    lag=1,
    xcat_aggs=["last", "sum"],
    start=start_date,
    years=None,
)

cr.reg_scatter(
    title="Real 5-year swap yields (expectations-based) and next-month IRS receiver returns, 5-year maturity, developed markets, since 2002",
    labels=False,
    coef_box="upper left",
    xlab="Real 5-year swap yields, expectations-based, % annualized",
    ylab="Next month 5-year IRS fixed receiver return",
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/a3383f882da7118fe3337038ae69a997f8f3f849d768dfbd70f6161537a7551a.png

Finally, pooled OLS regression provides evidence that real yields have predictive power with respect to subsequent monthly (or quarterly) equity index future returns, at least in developed markets. Moreover, the positive intercept is highly statistically significant, meaning that the real yield needs to be quite large before the average cumulative equity index future return becomes negative.

xcatx = ["RYLDIRS05Y_NSA", "EQXR_NSA"]
cidx = list(set(cids_dmca) - set(["NOK", "NZD"]))

cr = msp.CategoryRelations(
    dfd,
    xcats=xcatx,
    cids=cidx,
    freq="M",
    lag=1,
    xcat_aggs=["last", "sum"],
    start=start_date,
    years=None,
)

cr.reg_scatter(
    title="Real 5-year swap yields (expectations-based) and subsequent equity returns for developed markets since 2002",
    labels=False,
    coef_box="lower left",
    xlab="Real 5-year swap yields, expectations-based, % annualized",
    ylab="Next month equity index future return",
)
https://macrosynergy.com/notebooks.build/themes/financial-conditions/_images/61fa1456e02a1be4cb77cee2a2a69ba6230c9c1ca7b57130992e1b2e7192ba94.png
cr.ols_table()
                            OLS Regression Results                            
==============================================================================
Dep. Variable:               EQXR_NSA   R-squared:                       0.011
Model:                            OLS   Adj. R-squared:                  0.010
Method:                 Least Squares   F-statistic:                     23.75
Date:                Tue, 29 Oct 2024   Prob (F-statistic):           1.18e-06
Time:                        10:57:24   Log-Likelihood:                -6190.1
No. Observations:                2148   AIC:                         1.238e+04
Df Residuals:                    2146   BIC:                         1.240e+04
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==================================================================================
                     coef    std err          t      P>|t|      [0.025      0.975]
----------------------------------------------------------------------------------
const              0.8087      0.097      8.348      0.000       0.619       0.999
RYLDIRS05Y_NSA    -0.3051      0.063     -4.874      0.000      -0.428      -0.182
==============================================================================
Omnibus:                      192.299   Durbin-Watson:                   1.927
Prob(Omnibus):                  0.000   Jarque-Bera (JB):              362.621
Skew:                          -0.602   Prob(JB):                     1.81e-79
Kurtosis:                       4.613   Cond. No.                         1.69
==============================================================================

Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

Appendices #

Appendix 1: Currency symbols #

The word ‘cross-section’ refers to currencies, currency areas or economic areas. In alphabetical order, these are AUD (Australian dollar), BRL (Brazilian real), CAD (Canadian dollar), CHF (Swiss franc), CLP (Chilean peso), CNY (Chinese yuan renminbi), COP (Colombian peso), CZK (Czech Republic koruna), DEM (German mark), ESP (Spanish peseta), EUR (Euro), FRF (French franc), GBP (British pound), HKD (Hong Kong dollar), HUF (Hungarian forint), IDR (Indonesian rupiah), ITL (Italian lira), JPY (Japanese yen), KRW (Korean won), MXN (Mexican peso), MYR (Malaysian ringgit), NLG (Dutch guilder), NOK (Norwegian krone), NZD (New Zealand dollar), PEN (Peruvian sol), PHP (Phillipine peso), PLN (Polish zloty), RON (Romanian leu), RUB (Russian ruble), SEK (Swedish krona), SGD (Singaporean dollar), THB (Thai baht), TRY (Turkish lira), TWD (Taiwanese dollar), USD (U.S. dollar), ZAR (South African rand).

Appendix 2: Reference indicators for short-term interest rates #

# Defining the data
data = {
    "Indicator": [
        "AED_RIR_NSA", "AUD_RIR_NSA", "BHD_RIR_NSA", "BRL_RIR_NSA", "CAD_RIR_NSA",
        "CHF_RIR_NSA", "CLP_RIR_NSA", "CNY_RIR_NSA", "COP_RIR_NSA", "CZK_RIR_NSA",
        "DEM_RIR_NSA", "EGP_RIR_NSA", "ESP_RIR_NSA", "EUR_RIR_NSA", "FRF_RIR_NSA",
        "GBP_RIR_NSA", "HKD_RIR_NSA", "HUF_RIR_NSA", "IDR_RIR_NSA", "ILS_RIR_NSA",
        "INR_RIR_NSA", "ITL_RIR_NSA", "JPY_RIR_NSA", "KRW_RIR_NSA", "MXN_RIR_NSA",
        "MYR_RIR_NSA", "NGN_RIR_NSA", "NLG_RIR_NSA", "NOK_RIR_NSA", "NZD_RIR_NSA",
        "OMR_RIR_NSA", "PEN_RIR_NSA", "PHP_RIR_NSA", "PLN_RIR_NSA", "QAR_RIR_NSA",
        "RON_RIR_NSA", "RSD_RIR_NSA", "RUB_RIR_NSA", "SAR_RIR_NSA", "SEK_RIR_NSA",
        "SGD_RIR_NSA", "THB_RIR_NSA", "TRY_RIR_NSA", "TWD_RIR_NSA", "USD_RIR_NSA",
        "VEF_RIR_NSA", "ZAR_RIR_NSA"
    ],
    "Country": [
        "United Arab Emirates", "Australia", "Bahrain", "Brazil", "Canada",
        "Switzerland", "Chile", "China", "Colombia", "Czech Republic",
        "Germany", "Egypt", "Spain", "Eurozone", "France",
        "United Kingdom", "Hong Kong", "Hungary", "Indonesia", "Israel",
        "India", "Italy", "Japan", "South Korea", "Mexico",
        "Malaysia", "Nigeria", "Netherlands", "Norway", "New Zealand",
        "Oman", "Peru", "Philippines", "Poland", "Qatar",
        "Romania", "Serbia", "Russia", "Saudi Arabia", "Sweden",
        "Singapore", "Thailand", "Turkey", "Taiwan", "United States",
        "Venezuela", "South Africa"
    ],
    "Indicator of reference": [
        "UAE DIRHAM 1 MONTH INTERBANK OFFERED RATE", "AUSTRALIAN DOLLAR 1 MONTH BANK BILL",
        "BAHRAINI DINAR 1 MONTH INTERBANK OFFERED RATE", "BRAZILIAN REAL 1 DAY INTERBANK DEPOSIT CERTIFICATE RATE",
        "CANADIAN DOLLAR 1 MONTH TERM SPOT FORWARD RATE", "SWISS FRANC 1 MONTH LIBOR RATE",
        "CHILEAN PESO 3 MONTH SWAP MARKET RATE", "CHINESE YUAN 1 MONTH SHIBOR RATE",
        "COLOMBIAN PESO 30 DAY INTERBANK RATE", "CZECH KORUNA 2 WEEK REPO RATE",
        "DEUTSCHE MARK 1 MONTH LIBOR RATE", "EGYPTIAN POUND OVERNIGHT INTERBANK OFFERED RATE",
        "SPANISH PESETA 1 MONTH LIBOR RATE", "EURO 1 MONTH LIBOR RATE",
        "FRENCH FRANC 1 MONTH LIBOR RATE", "BRITISH POUND 1 MONTH LIBOR RATE",
        "HONG KONG DOLLAR 1 MONTH INTERBANK OFFERED RATE", "HUNGARIAN FORINT 1 MONTH INTERBANK RATE",
        "INDONESIAN RUPIAH 1 MONTH INTERBANK RATE", "ISRAELI SHEKEL 1 MONTH INTERBANK OFFERED RATE",
        "INDIAN RUPEE 1 MONTH MIBOR AVERAGE FIX-FBIL", "ITALIAN LIRA 1 MONTH LIBOR RATE",
        "IBA JAPANESE YEN INTERBANK LIBOR 1 MONTH", "SOUTH KOREAN WON 1 MONTH INTERBANK OFFERED RATE",
        "MEXICAN PESO 28 DAY INTERBANK RATE (TIIE 28)", "MALAYSIAN RINGGIT 1 MONTH INTERBANK OFFERED RATE (KLIBOR)",
        "NIGERIAN NAIRA 1 MONTH INTERBANK RATE (NIBOR)", "DUTCH GUILDER 1 MONTH LIBOR RATE",
        "NORWEGIAN KRONE 1 MONTH OIBOR RATE", "NEW ZEALAND DOLLAR 90 DAY BANK BILL RATE",
        "OMANI RIAL 1 MONTH INTERBANK RATE", "PERUVIAN SOL 1 MONTH INTERBANK RATE",
        "PHILIPPINE PESO 1 MONTH SWAP MARKET RATE", "POLISH ZLOTY WARSAW 1 MONTH INTERBANK RATE",
        "QATARI RIYAL 1 MONTH INTERBANK RATE", "ROMANIAN LEU 1 MONTH INTERBANK RATE",
        "SERBIAN DINAR 1 MONTH DEPOSIT RATE", "RUSSIAN RUBLE MOSCOW PRIME RATE 1 MONTH",
        "SAUDI RIYAL 1 MONTH INTERBANK OFFERED RATE", "SWEDISH KRONA 1 MONTH INTERBANK OFFERED RATE",
        "SINGAPORE DOLLAR 1 MONTH INTERBANK RATE", "THAI BAHT 1 MONTH INTERBANK OFFERED RATE",
        "TURKISH LIRA 1 MONTH INTERBANK OFFERED RATE", "TAIWANESE DOLLAR 1 YEAR INTEREST RATE SWAPS",
        "US DOLLAR 1 MONTH SOFR OVERNIGHT INDEX SWAP", "VENEZUELAN BOLIVAR 30 DAY DEPOSIT RATE",
        "SOUTH AFRICAN RAND 1 MONTH INTERBANK RATE"
    ]
}

# Creating the DataFrame
df = pd.DataFrame(data)
HTML(df.to_html(index=False))
Indicator Country Indicator of reference
AED_RIR_NSA United Arab Emirates UAE DIRHAM 1 MONTH INTERBANK OFFERED RATE
AUD_RIR_NSA Australia AUSTRALIAN DOLLAR 1 MONTH BANK BILL
BHD_RIR_NSA Bahrain BAHRAINI DINAR 1 MONTH INTERBANK OFFERED RATE
BRL_RIR_NSA Brazil BRAZILIAN REAL 1 DAY INTERBANK DEPOSIT CERTIFICATE RATE
CAD_RIR_NSA Canada CANADIAN DOLLAR 1 MONTH TERM SPOT FORWARD RATE
CHF_RIR_NSA Switzerland SWISS FRANC 1 MONTH LIBOR RATE
CLP_RIR_NSA Chile CHILEAN PESO 3 MONTH SWAP MARKET RATE
CNY_RIR_NSA China CHINESE YUAN 1 MONTH SHIBOR RATE
COP_RIR_NSA Colombia COLOMBIAN PESO 30 DAY INTERBANK RATE
CZK_RIR_NSA Czech Republic CZECH KORUNA 2 WEEK REPO RATE
DEM_RIR_NSA Germany DEUTSCHE MARK 1 MONTH LIBOR RATE
EGP_RIR_NSA Egypt EGYPTIAN POUND OVERNIGHT INTERBANK OFFERED RATE
ESP_RIR_NSA Spain SPANISH PESETA 1 MONTH LIBOR RATE
EUR_RIR_NSA Eurozone EURO 1 MONTH LIBOR RATE
FRF_RIR_NSA France FRENCH FRANC 1 MONTH LIBOR RATE
GBP_RIR_NSA United Kingdom BRITISH POUND 1 MONTH LIBOR RATE
HKD_RIR_NSA Hong Kong HONG KONG DOLLAR 1 MONTH INTERBANK OFFERED RATE
HUF_RIR_NSA Hungary HUNGARIAN FORINT 1 MONTH INTERBANK RATE
IDR_RIR_NSA Indonesia INDONESIAN RUPIAH 1 MONTH INTERBANK RATE
ILS_RIR_NSA Israel ISRAELI SHEKEL 1 MONTH INTERBANK OFFERED RATE
INR_RIR_NSA India INDIAN RUPEE 1 MONTH MIBOR AVERAGE FIX-FBIL
ITL_RIR_NSA Italy ITALIAN LIRA 1 MONTH LIBOR RATE
JPY_RIR_NSA Japan IBA JAPANESE YEN INTERBANK LIBOR 1 MONTH
KRW_RIR_NSA South Korea SOUTH KOREAN WON 1 MONTH INTERBANK OFFERED RATE
MXN_RIR_NSA Mexico MEXICAN PESO 28 DAY INTERBANK RATE (TIIE 28)
MYR_RIR_NSA Malaysia MALAYSIAN RINGGIT 1 MONTH INTERBANK OFFERED RATE (KLIBOR)
NGN_RIR_NSA Nigeria NIGERIAN NAIRA 1 MONTH INTERBANK RATE (NIBOR)
NLG_RIR_NSA Netherlands DUTCH GUILDER 1 MONTH LIBOR RATE
NOK_RIR_NSA Norway NORWEGIAN KRONE 1 MONTH OIBOR RATE
NZD_RIR_NSA New Zealand NEW ZEALAND DOLLAR 90 DAY BANK BILL RATE
OMR_RIR_NSA Oman OMANI RIAL 1 MONTH INTERBANK RATE
PEN_RIR_NSA Peru PERUVIAN SOL 1 MONTH INTERBANK RATE
PHP_RIR_NSA Philippines PHILIPPINE PESO 1 MONTH SWAP MARKET RATE
PLN_RIR_NSA Poland POLISH ZLOTY WARSAW 1 MONTH INTERBANK RATE
QAR_RIR_NSA Qatar QATARI RIYAL 1 MONTH INTERBANK RATE
RON_RIR_NSA Romania ROMANIAN LEU 1 MONTH INTERBANK RATE
RSD_RIR_NSA Serbia SERBIAN DINAR 1 MONTH DEPOSIT RATE
RUB_RIR_NSA Russia RUSSIAN RUBLE MOSCOW PRIME RATE 1 MONTH
SAR_RIR_NSA Saudi Arabia SAUDI RIYAL 1 MONTH INTERBANK OFFERED RATE
SEK_RIR_NSA Sweden SWEDISH KRONA 1 MONTH INTERBANK OFFERED RATE
SGD_RIR_NSA Singapore SINGAPORE DOLLAR 1 MONTH INTERBANK RATE
THB_RIR_NSA Thailand THAI BAHT 1 MONTH INTERBANK OFFERED RATE
TRY_RIR_NSA Turkey TURKISH LIRA 1 MONTH INTERBANK OFFERED RATE
TWD_RIR_NSA Taiwan TAIWANESE DOLLAR 1 YEAR INTEREST RATE SWAPS
USD_RIR_NSA United States US DOLLAR 1 MONTH SOFR OVERNIGHT INDEX SWAP
VEF_RIR_NSA Venezuela VENEZUELAN BOLIVAR 30 DAY DEPOSIT RATE
ZAR_RIR_NSA South Africa SOUTH AFRICAN RAND 1 MONTH INTERBANK RATE

Appendix 3: Reference indicators for policy-driven interest rates #

# Defining the data for the new table
data_new = {
    "Indicator": [
        "AUD_RPIR_NSA", "BRL_RPIR_NSA", "CAD_RPIR_NSA", "CHF_RPIR_NSA", "CLP_RPIR_NSA",
        "CNY_RPIR_NSA", "COP_RPIR_NSA", "CZK_RPIR_NSA", "EUR_RPIR_NSA", "GBP_RPIR_NSA",
        "HKD_RPIR_NSA", "HUF_RPIR_NSA", "IDR_RPIR_NSA", "ILS_RPIR_NSA", "INR_RPIR_NSA",
        "JPY_RPIR_NSA", "KRW_RPIR_NSA", "MXN_RPIR_NSA", "MYR_RPIR_NSA", "NOK_RPIR_NSA",
        "NZD_RPIR_NSA", "PEN_RPIR_NSA", "PHP_RPIR_NSA", "PLN_RPIR_NSA", "RON_RPIR_NSA",
        "RUB_RPIR_NSA", "SEK_RPIR_NSA", "SGD_RPIR_NSA", "THB_RPIR_NSA", "TRY_RPIR_NSA",
        "TWD_RPIR_NSA", "USD_RPIR_NSA", "ZAR_RPIR_NSA"
    ],
    "Country": [
        "Australia", "Brazil", "Canada", "Switzerland", "Chile",
        "China", "Colombia", "Czech Republic", "Eurozone", "United Kingdom",
        "Hong Kong", "Hungary", "Indonesia", "Israel", "India",
        "Japan", "South Korea", "Mexico", "Malaysia", "Norway",
        "New Zealand", "Peru", "Philippines", "Poland", "Romania",
        "Russia", "Sweden", "Singapore", "Thailand", "Turkey",
        "Taiwan", "United States", "South Africa"
    ],
    "Indicator of reference": [
        "AUSTRALIAN DOLLAR 1 MONTH OVERNIGHT INDEX SWAP", "BRAZILIAN REAL OVERNIGHT SELIC RATE",
        "CANADIAN DOLLAR 1 MONTH INTERBANK RATE FIXING", "SWISS FRANC 1 MONTH OVERNIGHT INDEX SWAP",
        "CHILEAN PESO 3 MONTH SWAP MARKET RATE", "CHINESE YUAN 1 MONTH SHIBOR RATE",
        "COLOMBIAN PESO 30 DAY INTERBANK RATE", "CZECH KORUNA 2 WEEK REPO RATE",
        "EURO 1 MONTH OVERNIGHT INDEX SWAP", "BRITISH POUND 1 MONTH LIBOR RATE",
        "HONG KONG DOLLAR 1 MONTH INTERBANK OFFERED RATE", "HUNGARIAN FORINT 1 MONTH INTERBANK RATE",
        "INDONESIAN RUPIAH 1 MONTH INTERBANK RATE", "ISRAELI SHEKEL 1 MONTH INTERBANK OFFERED RATE",
        "INDIAN RUPEE 1 MONTH MIBOR AVERAGE FIX-FBIL", "JAPANESE YEN 1 MONTH OVERNIGHT INDEX SWAP",
        "SOUTH KOREAN WON 1 MONTH INTERBANK OFFERED RATE", "MEXICAN PESO 28 DAY INTERBANK RATE (TIIE 28)",
        "MALAYSIAN RINGGIT 1 MONTH INTERBANK OFFERED RATE (KLIBOR)", "NORWEGIAN KRONE 1 MONTH OIBOR RATE",
        "NEW ZEALAND DOLLAR 1 MONTH OVERNIGHT INDEX SWAP", "PERUVIAN SOL 1 MONTH INTERBANK RATE",
        "PHILIPPINE PESO 1 MONTH SWAP MARKET RATE", "POLISH ZLOTY 1 WARSAW MONTH INTERBANK RATE",
        "ROMANIAN LEU 1 MONTH INTERBANK RATE", "RUSSIAN RUBLE MOSCOW PRIME RATE 1 MONTH",
        "SWEDISH KRONA 1 MONTH INTEREST RATE SWAP", "SINGAPORE DOLLAR 1 MONTH OVERNIGHT INDEX SWAP",
        "THAI BAHT 1 MONTH INTERBANK OFFERED RATE", "TURKISH LIRA 1 MONTH INTERBANK OFFERED RATE",
        "TAIWANESE DOLLAR 1 MONTH INTERBANK SWAP", "US DOLLAR 1 MONTH OVERNIGHT INDEX SWAP",
        "SOUTH AFRICAN RAND 1 MONTH INTERBANK RATE"
    ]
}

# Creating the DataFrame for the new data
df_new = pd.DataFrame(data_new)
HTML(df_new.to_html(index=False))
Indicator Country Indicator of reference
AUD_RPIR_NSA Australia AUSTRALIAN DOLLAR 1 MONTH OVERNIGHT INDEX SWAP
BRL_RPIR_NSA Brazil BRAZILIAN REAL OVERNIGHT SELIC RATE
CAD_RPIR_NSA Canada CANADIAN DOLLAR 1 MONTH INTERBANK RATE FIXING
CHF_RPIR_NSA Switzerland SWISS FRANC 1 MONTH OVERNIGHT INDEX SWAP
CLP_RPIR_NSA Chile CHILEAN PESO 3 MONTH SWAP MARKET RATE
CNY_RPIR_NSA China CHINESE YUAN 1 MONTH SHIBOR RATE
COP_RPIR_NSA Colombia COLOMBIAN PESO 30 DAY INTERBANK RATE
CZK_RPIR_NSA Czech Republic CZECH KORUNA 2 WEEK REPO RATE
EUR_RPIR_NSA Eurozone EURO 1 MONTH OVERNIGHT INDEX SWAP
GBP_RPIR_NSA United Kingdom BRITISH POUND 1 MONTH LIBOR RATE
HKD_RPIR_NSA Hong Kong HONG KONG DOLLAR 1 MONTH INTERBANK OFFERED RATE
HUF_RPIR_NSA Hungary HUNGARIAN FORINT 1 MONTH INTERBANK RATE
IDR_RPIR_NSA Indonesia INDONESIAN RUPIAH 1 MONTH INTERBANK RATE
ILS_RPIR_NSA Israel ISRAELI SHEKEL 1 MONTH INTERBANK OFFERED RATE
INR_RPIR_NSA India INDIAN RUPEE 1 MONTH MIBOR AVERAGE FIX-FBIL
JPY_RPIR_NSA Japan JAPANESE YEN 1 MONTH OVERNIGHT INDEX SWAP
KRW_RPIR_NSA South Korea SOUTH KOREAN WON 1 MONTH INTERBANK OFFERED RATE
MXN_RPIR_NSA Mexico MEXICAN PESO 28 DAY INTERBANK RATE (TIIE 28)
MYR_RPIR_NSA Malaysia MALAYSIAN RINGGIT 1 MONTH INTERBANK OFFERED RATE (KLIBOR)
NOK_RPIR_NSA Norway NORWEGIAN KRONE 1 MONTH OIBOR RATE
NZD_RPIR_NSA New Zealand NEW ZEALAND DOLLAR 1 MONTH OVERNIGHT INDEX SWAP
PEN_RPIR_NSA Peru PERUVIAN SOL 1 MONTH INTERBANK RATE
PHP_RPIR_NSA Philippines PHILIPPINE PESO 1 MONTH SWAP MARKET RATE
PLN_RPIR_NSA Poland POLISH ZLOTY 1 WARSAW MONTH INTERBANK RATE
RON_RPIR_NSA Romania ROMANIAN LEU 1 MONTH INTERBANK RATE
RUB_RPIR_NSA Russia RUSSIAN RUBLE MOSCOW PRIME RATE 1 MONTH
SEK_RPIR_NSA Sweden SWEDISH KRONA 1 MONTH INTEREST RATE SWAP
SGD_RPIR_NSA Singapore SINGAPORE DOLLAR 1 MONTH OVERNIGHT INDEX SWAP
THB_RPIR_NSA Thailand THAI BAHT 1 MONTH INTERBANK OFFERED RATE
TRY_RPIR_NSA Turkey TURKISH LIRA 1 MONTH INTERBANK OFFERED RATE
TWD_RPIR_NSA Taiwan TAIWANESE DOLLAR 1 MONTH INTERBANK SWAP
USD_RPIR_NSA United States US DOLLAR 1 MONTH OVERNIGHT INDEX SWAP
ZAR_RPIR_NSA South Africa SOUTH AFRICAN RAND 1 MONTH INTERBANK RATE