Get the Real Interest Rate for a variety of countries over time. The Real Interest Rate is the nominal interest rate adjusted for inflation, and reflects the true cost of borrowing (or the true return earned on savings) once the erosion of purchasing power by inflation is taken into account.

The formula is as follows (the Fisher equation, approximation):

\[\text{Real Interest Rate} (\text{year}) = \text{Nominal Interest Rate} (\text{year}) - \text{Inflation Rate} (\text{year}),\;\; \text{with the nominal rate the annual Long Term Interest Rate by default (rate\_type="long\_term") and the inflation rate the Global Macro Database's annual CPI inflation}\]

The nominal interest rate is either the Long Term Interest Rate (the 10-year government bond yield) or the Short Term Interest Rate (the 3-month money market rate), selected via the rate_type parameter. The Inflation Rate is always the annual inflation rate of the Global Macro Database (GMDB), whichever source the nominal rate comes from; this differs from get_inflation_rate, which defaults to monthly year-over-year inflation from national sources. Both legs are annual decimal fractions (0.05 for 5%) whichever source is used, so they line up directly for the subtraction and the result is itself a decimal fraction (-0.0016 for a real rate of -0.16%).

A negative real interest rate means that, after inflation, savers are effectively losing purchasing power and borrowers are being subsidized in real terms; this occurred in many countries during the 2021-2022 inflation surge.

This is the ex post real rate: the nominal rate minus the inflation that was realised in the same year, not the inflation investors expected when the rate was set. It shows how savers and borrowers actually fared, but for valuation or the stance of monetary policy practitioners use the ex ante real rate, such as the yield on inflation-linked bonds (get_real_yield_curve) or the nominal rate minus survey or breakeven inflation expectations (get_inflation_expectations, get_breakeven_inflation_expectations).

Also known as: real yield, inflation-adjusted interest rate.

Real Interest Rate in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_real_interest_rate as shown below.

from financetoolkit import Economics

economics = Economics(start_date='2018-01-01', end_date='2023-01-01')

economics.get_real_interest_rate(countries=['United States', 'Germany', 'Japan'])

Or, after setting up the Finance Toolkit MCP, ask:

How did real long-term interest rates, the 10-year bond yield minus inflation, develop in the United States, Germany and Japan from 2018 to 2023?

Which returns:

  United States Germany Japan
2018 0.0047 -0.0151 -0.009
2019 0.0033 -0.0163 -0.0057
2020 -0.0037 -0.0088 0.0001
2021 -0.0324 -0.0358 0.0032
2022 -0.0505 -0.0753 -0.023
2023 -0.0017 -0.0359 -0.0269

Parameters

get_real_interest_rate accepts the following parameters.

ParameterTypeDescriptionExample
countrieslist[str] | str | NoneA list of countries or a single country to include in the results. Defaults to None.["United States", "Germany"]
rate_typestrWhich nominal interest rate to use. Can be ‘long_term’ (10-year government bond yield) or ‘short_term’ (3-month money market rate). Defaults to ‘long_term’."short_term"
gmdb_sourcebool | NoneWhether to get the nominal interest rate from the Global Macro Database (GMDB) instead of the OECD. Defaults to None, which falls back to the gmdb_source set on the Economics class (True by default). Either way the countries carry the GMDB names, such as “Russian Federation”, “Eswatini” and “Congo DR”, as the inflation rate comes from the GMDB.False
rollingintThe rolling window size to use for smoothing the data (simple moving average). Defaults to None.4
trailingintThe trailing window size to use for summing the data over trailing periods (e.g. a trailing-4-quarter sum). Defaults to None.4
growthboolWhether to return the growth data or the actual data. Defaults to False.True
lagintThe number of periods to lag the growth data. Defaults to 1.4
standardizeboolWhether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.True
roundingint | NoneThe number of decimals to round the results to. Defaults to None.2
gmdb_forecastsboolWhether to include the years the Global Macro Database projects, from the IMF’s World Economic Outlook, up to five years ahead. Only applies to data from the Global Macro Database. Defaults to False, which ends a series with its last observation.True
Share