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.

Formula (Fisher equation, approximation):

Real Interest Rate = Nominal Interest Rate - Inflation Rate

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 only available on an annual basis (see get_inflation_rate), which comes from the Global Macro Database (GMDB). 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%).

Changed in v2.2.0: this used to be returned in percentage points, because the GMDB legs were percentage points and the OECD nominal rate was multiplied by 100 to match them. The GMDB series are now decimal fractions and that rescaling has been removed, so the result is 100x smaller than in v2.1.x.

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.

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

No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the Real Interest Rate for you. Just ask in plain English.

Calculate the Real Interest Rate in Python

The Real Interest Rate is available in the Economics module of the open-source Finance Toolkit. Install it 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'])

Which returns:

  United States Germany Japan
2018 0.0047 -0.0133 -0.0092
2019 0.0033 -0.016 -0.0059
2020 -0.0034 -0.0102 0.0001
2021 -0.0326 -0.0352 0.0031
2022 -0.0505 -0.0573 -0.0228
2023 -0.0016 -0.0351 -0.0271

Parameters

get_real_interest_rate accepts the following parameters:

  • countries (list[str] | str | None, optional): A list of countries or a single country to include in the results. Defaults to None.
  • rate_type (str, optional): Which 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’.
  • gmdb_source (bool | None, optional): Whether 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).
  • rolling (int, optional): The rolling window size to use for smoothing the data (simple moving average). Defaults to None.
  • trailing (int, optional): The trailing window size to use for summing the data over trailing periods (e.g. a trailing-4-quarter sum). Defaults to None.
  • growth (bool, optional): Whether to return the growth data or the actual data. Defaults to False.
  • lag (int, optional): The number of periods to lag the growth data. Defaults to 1.
  • standardize (bool, optional): Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.
  • rounding (int | None, optional): The number of decimals to round the results to. Defaults to None.

The Economics module page introduces the module, and the sidebar lists all of its functions.

Share