Macro Regime Classification: Methodology and Data
eco3min · macro regime classification
Eco3min assigns a monthly macro regime to the US economy by combining public institutional indicators with a published threshold table. This page details the design, data sources, classification logic, and limitations.
What this classification computes
For any given month, the classification answers: what macro regime is the US economy in, based only on public data and a verifiable rule?
Every term is verifiable: the regime name follows from the growth × inflation grid (see Architecture), the financial conditions qualifier from the Chicago Fed’s NFCI, the global context from OECD CLIs and the ECB’s CISS.
What this classification is NOT
- A proprietary score (no opaque weighting)
- A trading signal or investment recommendation
- A forecast of future conditions
- An official cycle dating (≠ NBER)
- A portfolio timing or allocation system
Three independent axes
The classification uses three independent axes — real activity, inflation, financial conditions — rather than a flat list that conflates orthogonal dimensions. These three axes are the inputs of the calculation: what the engine measures to produce a verdict. They must not be confused with the three layers of the Atlas (see below), which describe the nature of the regime objects, at different horizons and evidentiary statuses. Two distinct reading grids: the axes are the ingredients, the layers are the dishes.
Axis 1 — Growth / real activity
Three states: acceleration (G+) / on-trend (G=) / contraction (G−). Primary input: Chicago Fed’s CFNAI (3-month moving average). A CFNAI value of 0 corresponds to the historical long-run trend.
Axis 2 — Inflation
Three states: acceleration (I+) / stable (I=) / disinflation (I−). Primary input: Dallas Fed’s Trimmed Mean PCE (12-month rate). This axis measures persistent underlying inflation. The Trimmed Mean PCE excludes, by construction, the most volatile price components — including energy. A transitory energy shock (a spike in gasoline or Brent) can therefore leave this axis at “stable” even as headline inflation climbs: this is intended behaviour, not a failure. In that case, the shock appears in the global context layer (commodity channel) and via the headline/underlying divergence flag — not in the regime name.
Axis 3 — Financial conditions (overlay-qualifier)
Four levels: accommodating / neutral / restrictive / acute stress. Primary input: Chicago Fed’s NFCI (composite of 105 variables, weekly since 1971). This axis prefixes the regime name without creating a third nominal axis, and updates without hysteresis. A vocabulary point not to confuse: this same financial-conditions axis is expressed at two granularities. (1) As a prefix, it qualifies the cyclical regime (“under restrictive conditions”). (2) When a bundle of signals fires jointly (broad dollar, NFCI, HY spreads), it takes the form of a named overlay — the Dollar Shortage of layer 2 of the Atlas. The word “overlay” therefore denotes two expressions of the same axis: a light qualifier on one side, a named regime on the other.
The 3×3 growth × inflation grid maps to seven named regimes plus a transition state.
A hierarchical world view, not an aggregated score
A single aggregated world score masks inter-zone divergence (e.g., 2022: US tightening vs China easing) — a misleading indicator. The architecture is hierarchical:
US core
Detailed growth × inflation classification + overlay, using the full set of US inputs. This is the primary verdict.
Global context layer
Qualifies the environment around the US core on two dimensions: synchronization (are other zones moving in the same direction? via OECD CLIs) and global transmission channels (broad dollar, commodities, market stress via VIX + ECB CISS eurozone).
The eurozone will become a second classified core (same architecture, ECB/Eurostat inputs) in version 1.1. The code is parameterized so that adding a zone is a configuration parameter, not a rewrite.
The seven regimes and the transition state
| Growth \ Inflation | I− (disinflation) | I= (stable) | I+ (acceleration) |
|---|---|---|---|
| G+ (above trend) | Disinflationary Expansion | Balanced Expansion | Overheating |
| G= (on trend) | Transition | Transition | Inflationary Pressure |
| G− (contracting) | Disinflationary Contraction | Slowdown | Stagflation |
Disinflationary Expansion G+ I−
Above-trend activity with inflation decelerating or below target.
Examples: 1995–1999 (New Economy) · 2013–2015 (post-GFC recovery) · 2023–2024 (soft landing)
Balanced Expansion G+ I=
Above-trend activity with inflation near target.
Examples: 2005–2006 · late 2017–2018
Overheating G+ I+
Strong activity with accelerating inflation. Typically late-cycle.
Examples: 2021 (COVID reopening) · 1999–2000
Inflationary Pressure G= I+
On-trend or stalling activity with still-rising inflation. Often a transition phase from Overheating.
Examples: H1 2022 · 1980 (rate shock)
Stagflation G− I+
Contracting activity with accelerating inflation. The most damaging configuration for real purchasing power. Illustrative historical references (outside formal classification window): 1973–1975, 1979–1982. These episodes predate 2003 and can only be formally validated by the classifier in degraded mode — they serve as conceptual references, not method validations.
Slowdown G− I=
Mild contraction without inflationary pressure.
Examples: 2001 · 2015–2016
Disinflationary Contraction G− I−
Contraction with deflation risk.
Examples: 2008–2009 (GFC) · March–May 2020 (COVID)
Transition / Mixed signals G= neutral
G= neutral states on both axes, or an unresolved hysteresis window. Not a stable regime — signals ambiguity or a turning point.
The overlay prefixes the name: “Disinflationary Contraction under acute financial stress”, “Balanced Expansion under accommodating conditions”.
Three axes in, three layers out
The previous section describes the seven regimes of the G × I grid: this is layer 1 of the Atlas, the one the engine computes in real time. But the Atlas of regimes contains two other kinds of objects, read at different time horizons and with different evidentiary status. To avoid confusion: the three axes above are the inputs of the calculation (growth, inflation, financial conditions); the three layers below are the nature of the regime objects. They are not two names for the same thing.
The growth × inflation state of the moment (the seven regimes above + transition), at a horizon of a few months. Produced by axes 1 and 2. This is the verdict the classification outputs. In the Atlas, these states group into two cyclical meta-regimes: inflationary (column I+) and disinflationary (column I−).
Derived from axis 3. Superimposes on any cyclical state, at a horizon of weeks to a few months, quickly reversible and without hysteresis. It has two expressions: the qualifier as a prefix (accommodating / restrictive / stress) and, when a bundle of signals fires, the named overlay — the Dollar Shortage. No G/I code: it is not a state of the grid.
Background regimes that unfold over several years and deform the grid itself (a durably low natural rate r* changes what “G+” means). These are not real-time computed verdicts: they are interpretive frameworks, set by editorial judgment over the long run. Three pages: secular stagnation, financial repression, fiscal dominance.
Dividing line — why this distinction protects rigor
The criterion separating layer 2 from layer 3 is falsifiable: does the engine compute a signal for this object, yes or no? Dollar Shortage has three measured signals (broad dollar, NFCI, HY spreads) → layer 2, computed. Secular stagnation, repression, dominance have no live signal → layer 3, long-run judgment. The classification never presents as “measured” what is “judged”: this is the condition of its reproducibility.
US core and global context inputs
US Core
| Indicator | Series code | Source | Frequency | From |
|---|---|---|---|---|
| Chicago Fed NAI (MA3) | CFNAI | Chicago Fed / FRED | Monthly | 1967 |
| Sahm rule (real-time) | SAHMREALTIME | FRED | Monthly | 1960 |
| SOS indicator | (Richmond Fed) | Richmond / Philadelphia Fed | Weekly | 1971 |
| Trimmed Mean PCE (12m) | PCETRIM12M159SFRBDAL | Dallas Fed / FRED | Monthly | 1977 |
| 5Y5Y forward breakeven | T5YIFR | Federal Reserve / FRED | Daily → monthly | 2003 |
| NFCI | NFCI | Chicago Fed / FRED | Weekly | 1971 |
| HY OAS (optional)* | BAMLH0A0HYM2 | ICE / FRED | Daily → monthly | 1996 |
| Fed funds rate | FEDFUNDS | Federal Reserve / FRED | Monthly | 1954 |
| 10Y–2Y yield spread | T10Y2Y | Federal Reserve / FRED | Daily → monthly | 1976 |
* HY OAS: optional corroboration only. Since April 2026, FRED truncates ICE BofA series to 3 rolling years. Included only when a full pre-April 2026 historical fixture is available locally.
Global context layer
| Indicator | Series code | Source | Role |
|---|---|---|---|
| US CLI (amplitude adj.) | USALOLITOAASTSAM | OECD / FRED | Synchronization — US baseline |
| G7 CLI (amplitude adj.) | G7LOLITOAASTSAM | OECD / FRED | Synchronization — G7 vs US |
| CISS eurozone | ECB SDW | ECB | European systemic stress |
| Broad dollar | DTWEXBGS | Federal Reserve / FRED | Global financial conditions channel |
| Brent / WTI | World Bank CMO | World Bank | Commodity channel |
| VIX | VIXCLS | CBOE / FRED | Global market stress |
Fixed institutional thresholds
These thresholds are not Eco3min editorial choices — they are defined by the producing institutions:
Institutional thresholds (version 1.0.0)
Calibrated thresholds
Other thresholds (CFNAI-MA3 levels, Trimmed Mean PCE bands, NFCI overlay levels) are calibrated by percentile rank on the full available history, then validated against reference episodes: 2008 GFC, 2020 COVID, 2021 reflation, 2022 tightening, 2023–2024 soft landing.
Any threshold modification receives a version number and a changelog entry. The full table is published in the GitHub repository (thresholds.json, versioned in semver).
Hysteresis: preventing regime oscillation
Without a hysteresis mechanism, an indicator oscillating around a threshold would produce unreadable regime changes month after month. The rule:
Hysteresis rule
A state change on the growth or inflation axes is confirmed only after two consecutive months beyond the threshold.
Exception — Sahm hard gate: when the Sahm rule reaches 0.50, the transition to G− is immediate with no confirmation delay. This signal is robust enough to bypass hysteresis.
Stress overlay: updates without hysteresis. It reflects current financial conditions and can change every month.
Two resolution windows
Full resolution — from January 2003
All indicators available: T5YIFR, net liquidity (RRP from 2003), SOS. This is the reference window for calibration and validation.
Retroactive degraded extension — from 1977
Reduced input set: CFNAI (≥1967), NFCI (≥1971), Trimmed Mean PCE (≥1977), T10Y2Y (≥1976), Sahm (≥1960). T5YIFR and net liquidity absent. Clearly flagged in all exports (data_quality: "degraded"). To be interpreted with caution.
What this system cannot do
- Revisions: the current month’s regime may change after data source revisions (CFNAI is regularly revised). The JSON timestamps the computation and flags lagged inputs.
- Publication lags: the CFNAI publishes with ~3-week lag. The classification uses the last known value and documents the pending input in the JSON.
- OECD CLI lag: ~6 weeks. The global context layer updates slower than the US core and may delay detection of inter-zone divergence.
- Not a forecast: the classification describes the currently measured state, not future conditions.
- Energy supply shocks: the Trimmed Mean PCE excludes volatile components. An oil spike can be invisible on the inflation axis while headline CPI surges. The
headline_underlying_divergenceflag in the JSON signals this case automatically. - Structural regimes not computed: layer 3 regimes (secular stagnation, financial repression, fiscal dominance) are not produced by the engine. They are long-run editorial frameworks and must not be read as a measured monthly verdict.
Any third party can recalculate the regime
Any third party can recalculate the regime from primary institutional sources and the published threshold table, with no opaque component. The Python code and thresholds are published open source.
GitHub repository: [URL to be added after deployment]
Files: regime_classifier.py, thresholds.json (semver versioned), data/regime_history.csv, requirements.txt, LICENSE (MIT code, CC-BY 4.0 derived data).
Suggested citation format
“Eco3min Macro Regime Classification, based on the Chicago Fed NFCI, CFNAI, and Dallas Fed Trimmed Mean PCE. Threshold table v1.0.0. eco3min.fr/en/macro-regime-classification-methodology/”
Source indicator values
| Indicator | Value | Code |
|---|---|---|
| CFNAI-MA3 | 0.0267 | CFNAI |
| Sahm Rule | 0.1 | SAHMREALTIME |
| SOS indicator | — | Richmond Fed |
| Trimmed Mean PCE 12m | 2.35 % | PCETRIM12M159SFRBDAL |
| 5Y5Y breakeven | 2.24 % | T5YIFR |
| NFCI | -0.5008 | NFCI |
| HY OAS | 2.76 bps | BAMLH0A0HYM2 |
| Courbe 10Y–2Y | 0.38 % | T10Y2Y |
| Fed funds | 3.63 % | FEDFUNDS |
| Dollar broad (3m) | 0.8963 % | DTWEXBGS |
| Brent YoY | 66.2374 % | World Bank CMO |
| VIX | 21.51 | VIXCLS |
Subject to revision on source updates.
NFCI), CFNAI (CFNAI) · Dallas Fed Trimmed Mean PCE (PCETRIM12M159SFRBDAL) · Federal Reserve FRED (SAHMREALTIME, T5YIFR, T10Y2Y, DTWEXBGS, VIXCLS, FEDFUNDS) · Richmond & Philadelphia Fed (SOS indicator) · OECD CLIs (USALOLITOAASTSAM, G7LOLITOAASTSAM) · ECB SDW (CISS) · ICE BofA (BAMLH0A0HYM2). Classification as of the 1st of the current month. Subject to revision.Disclaimer. The data, indicators and classifications presented on this page are provided for strictly informational and educational purposes. They are sourced from public institutional data and may be subject to delays, revisions or errors. They do not constitute investment advice, personalized recommendations, solicitation to buy or sell any financial instrument, or predictive analysis of the economic cycle. eco3min.fr is not a licensed financial institution and does not provide investment advisory services within the meaning of applicable regulations (MiFID II, French Monetary and Financial Code articles L.541-1 et seq.). Any investment decision is the sole responsibility of the investor, who is encouraged to consult a licensed professional. Past performance is not indicative of future results.
Last updated — 28 May 2026
Disclaimer – Financial Information: The analyses, commentary, and content published on eco3min.fr are provided for informational and educational purposes only. They do not constitute investment advice or a solicitation to buy or sell financial instruments. Past performance is not indicative of future results. All investment decisions involve risk and are the sole responsibility of the reader.
