Long-Run Asset Returns
Get the yearly total returns of equity, housing, government bonds and bills for 18 advanced economies from 1870 to 2020, from the Jordà-Schularick-Taylor Macrohistory Database (Jordà, Knoll, Kuvshinov, Schularick and Taylor, 2019, “The Rate of Return on Everything, 1870-2015”, Quarterly Journal of Economics). A century and a half of returns across wars, depressions and inflations is what calibrates the long-run trend, the equity and housing risk premia and the cycles of scenario generators for 50 to 100-year horizons.
The asset classes: “equity” (dividends reinvested), “housing” (rental income included), “bonds” (long-term government bonds, coupons included), “bills” (short-term government bills), “risky” (a wealth-weighted mix of equity and housing), “safe” (a mix of bonds and bills) and “wealth” (all of them weighted by their share of national wealth). The countries: Australia, Belgium, Canada, Denmark, Finland, France, Germany, Ireland, Italy, Japan, the Netherlands, Norway, Portugal, Spain, Sweden, Switzerland, the United Kingdom and the United States, with gaps in the war years.
Returns are decimal fractions (0.08 for 8%), in local currency, and with real=True deflated by consumer price inflation.
The database is licensed under CC BY-NC-SA 4.0: it may be used for non-commercial purposes with attribution, and its authors expressly exclude commercial data providers. Pass accept_licence=True to confirm the use is non-commercial; the data is retrieved from macrohistory.net when needed and is not distributed with the Finance Toolkit. No API key is needed.
See definition: https://www.macrohistory.net/database/
Also known as: rate of return on everything, long-run returns, JST macrohistory, historical equity premium.
Long-Run Asset Returns in Python
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_long_run_asset_returns as shown below.
from financetoolkit import Economics
economics = Economics(start_date='2011-01-01', end_date='2020-12-31')
economics.get_long_run_asset_returns(
asset_class='equity',
countries=['United States', 'United Kingdom', 'Germany', 'Japan'],
real=True,
accept_licence=True,
)
Which returns:
| United States | United Kingdom | Germany | Japan | |
|---|---|---|---|---|
| 2011 | -0.0085 | -0.0755 | -0.1688 | -0.0456 |
| 2012 | 0.1448 | 0.0906 | 0.2654 | -0.0431 |
| 2013 | 0.2767 | 0.1752 | 0.2475 | 0.7158 |
| 2014 | 0.1389 | -0.0026 | 0.0231 | 0.0742 |
| 2015 | 0.0193 | 0.0106 | 0.1058 | 0.1029 |
| 2016 | 0.0233 | 0.1465 | 0.0529 | 0.0063 |
| 2017 | 0.1679 | 0.1107 | 0.1442 | 0.2135 |
| 2018 | 0.1149 | -0.1176 | -0.1843 | -0.16 |
| 2019 | 0.0624 | 0.1629 | 0.2113 | 0.1793 |
| 2020 | 0.1115 | -0.1025 | 0.0719 | 0.0786 |
Parameters
The function accepts the following parameters:
- asset_class (str, optional): “equity”, “housing”, “bonds”, “bills”, “risky”, “safe” or “wealth”. Defaults to “equity”.
- countries (list[str] | str | None, optional): The countries to include. Defaults to None, which includes all of them.
- real (bool, optional): Whether to deflate the returns by consumer price inflation. Defaults to False.
- accept_licence (bool, optional): Confirms that the data is used for non-commercial purposes, as its licence (CC BY-NC-SA 4.0) requires. Defaults to False, which returns nothing.
- rolling (int, optional): The rolling window size to use for smoothing the data (simple moving average). Defaults to None.
- growth (bool, optional): Whether to return the growth data or the actual data.
- lag (int, optional): The number of periods to lag the data by.
- 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.