Get the NBER-based US Recession Indicator from FRED.

This is the official US business-cycle chronology maintained by the National Bureau of Economic Research (NBER) Business Cycle Dating Committee, encoded as 1 during NBER-dated recession months (peak through trough) and 0 otherwise. The Committee determines recession dates retrospectively from a broad set of coincident indicators - including Nonfarm Payrolls (see get_nonfarm_payrolls) and the Industrial Production Index (see get_industrial_production_index) - rather than the popular “two consecutive quarters of negative GDP growth” rule of thumb, which the NBER does not use. This series is the standard ground-truth label used in academic and applied business-cycle research to backtest whether other indicators lead, lag or coincide with recessions.

Requires a free FRED API key, see the fred_api_key parameter of the Economics class.

See definition: https://fred.stlouisfed.org/series/USREC

Also known as: USREC, NBER recession dummy, business cycle indicator.

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

Calculate the Recession Indicator in Python

The Recession Indicator is available in the Economics module of the open-source Finance Toolkit. Install it with:

pip install financetoolkit -U

Then call get_recession_indicator as shown below.

from financetoolkit import Economics

economics = Economics(start_date='2020-01-01', fred_api_key='FRED_API_KEY')

economics.get_recession_indicator()

Which returns:

Date United States
2026-02-01 0
2026-03-01 0
2026-04-01 0
2026-05-01 0
2026-06-01 0

Parameters

get_recession_indicator accepts the following parameters:

  • 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. 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.

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

Share