Regime assignments use canonical definitions established 2026-03-07 (GMM, k=12, deep-history dataset). View WCSS analysis.
Macro Economic Regime Clustering (2006–2026)
Published 2026-03-07
This analysis identifies distinct macroeconomic regimes by applying unsupervised K-Means clustering to 22 weekly-aggregated macro indicators spanning 2006 to 2026 (1,002 weeks of data). The algorithm discovered 12 distinct regimes, each characterized by a unique combination of growth, inflation, credit, and risk conditions.
Identified Regimes
Each row summarizes one regime: its auto-generated label, the number of weeks assigned to it, the span of dates it covers, and the three indicator values (with z-scores) that most distinguish it from the others.
| ID | Label | Weeks | Date Span | Top Distinguishing Features (centroid) |
|---|---|---|---|---|
| 0 | Steepening / Credit Stress / Low 3M Treasury Yield | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
| 1 | Tightening / Low Industrial Production / Deteriorating | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
| 2 | Expanding / Low 10Y Treasury Yield / Inflationary | 24 | 2020-05-22 – 2020-10-30 | M2 Money Supply: 2.76 (z=+2.50); Fed Balance Sheet: 3.44 (z=+1.71); IG OAS: -2.66 (z=-1.59) |
| 3 | Expanding / Low BAA Spread / Low CPI | 957 | 2006-12-29 – 2026-03-06 | Initial Jobless Claims: -0.22 (z=-0.09); VIX: -0.00 (z=-0.08); M2 Money Supply: 1.82 (z=-0.08) |
| 4 | Optimistic / Expanding / Low NFCI | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
| 5 | Expanding / Inflationary / Low Consumer Sentiment | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
| 6 | Low Industrial Production / Low CPI / Low GDP | 21 | 2008-12-19 – 2022-11-11 | Initial Jobless Claims: 4.69 (z=+2.93); Recession Probability: 4.45 (z=+2.65); VIX: 3.11 (z=+2.54) |
| 7 | Steepening / Low 3M Treasury Yield / Deteriorating | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
| 8 | Recessionary / Tight Conditions / Tightening | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
| 9 | Tight Conditions / Tightening / Low Short-10Y Spread | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
| 10 | Recessionary / Credit Stress / Low Consumer Sentiment | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
| 11 | Deteriorating / Low Capacity Utilization / Recessionary | 0 | No occurrences in this dataset | Capacity Utilization: -0.18 (z=+0.00); M2 Money Supply: 1.85 (z=+0.00); Fed Balance Sheet: 1.67 (z=+0.00) |
Visualization
Top panel — PCA Feature Space: Each dot represents one week projected into two principal components (capturing 63.0% of total variance). Color indicates the assigned regime. Dots that form tight, well-separated clusters indicate regimes with distinctive macro fingerprints.
Bottom panel — Regime Timeline: The same regime assignments plotted chronologically, so you can see when each macro regime was in force. The legend below the timeline panel identifies each color.
Regime Fingerprints — Feature Z-Scores
The table below shows the standardized z-score of each feature's cluster centroid. A value of +2.0 means that regime has a feature value roughly 2 standard deviations above the historical average; −2.0 means 2 standard deviations below. Dark red = strongly above average Dark blue = strongly below average
| Feature | Regime 0 Steepening / Credit Stress / Low 3M Treasury Yield | Regime 1 Tightening / Low Industrial Production / Deteriorating | Regime 2 Expanding / Low 10Y Treasury Yield / Inflationary | Regime 3 Expanding / Low BAA Spread / Low CPI | Regime 4 Optimistic / Expanding / Low NFCI | Regime 5 Expanding / Inflationary / Low Consumer Sentiment | Regime 6 Low Industrial Production / Low CPI / Low GDP | Regime 7 Steepening / Low 3M Treasury Yield / Deteriorating | Regime 8 Recessionary / Tight Conditions / Tightening | Regime 9 Tight Conditions / Tightening / Low Short-10Y Spread | Regime 10 Recessionary / Credit Stress / Low Consumer Sentiment | Regime 11 Deteriorating / Low Capacity Utilization / Recessionary |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GDP | +0.00 | +0.00 | -0.70 | +0.03 | +0.00 | +0.00 | -0.55 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Unemployment Rate | +0.00 | +0.00 | +1.05 | -0.05 | +0.00 | +0.00 | +1.09 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| CPI | +0.00 | +0.00 | -0.07 | -0.00 | +0.00 | +0.00 | +0.25 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Fed Funds Rate | +0.00 | +0.00 | -0.56 | +0.01 | +0.00 | +0.00 | +0.05 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Initial Jobless Claims | +0.00 | +0.00 | +0.99 | -0.09 | +0.00 | +0.00 | +2.93 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Retail Sales | +0.00 | +0.00 | +0.63 | +0.01 | +0.00 | +0.00 | -0.97 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Consumer Sentiment | +0.00 | +0.00 | -0.43 | +0.03 | +0.00 | +0.00 | -0.87 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Recession Probability | +0.00 | +0.00 | -0.19 | -0.05 | +0.00 | +0.00 | +2.65 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Industrial Production | +0.00 | +0.00 | -1.50 | +0.08 | +0.00 | +0.00 | -1.93 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| 3M Treasury Yield | +0.00 | +0.00 | -0.49 | +0.01 | +0.00 | +0.00 | +0.15 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| 2Y Treasury Yield | +0.00 | +0.00 | -0.67 | +0.01 | +0.00 | +0.00 | +0.14 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| 10Y Treasury Yield | +0.00 | +0.00 | -1.52 | +0.05 | +0.00 | +0.00 | -0.53 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| 2s10s Spread | +0.00 | +0.00 | -0.62 | +0.03 | +0.00 | +0.00 | -0.61 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| 3m10y Spread | +0.00 | +0.00 | -0.69 | +0.03 | +0.00 | +0.00 | -0.44 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| VIX | +0.00 | +0.00 | +1.16 | -0.08 | +0.00 | +0.00 | +2.54 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| HY OAS | +0.00 | +0.00 | +0.51 | -0.05 | +0.00 | +0.00 | +1.80 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| IG OAS | +0.00 | +0.00 | -1.59 | +0.01 | +0.00 | +0.00 | +1.16 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| NFCI | +0.00 | +0.00 | +0.17 | -0.06 | +0.00 | +0.00 | +2.31 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| 5Y Breakeven Inflation | +0.00 | +0.00 | -0.85 | +0.05 | +0.00 | +0.00 | -1.43 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Fed Balance Sheet | +0.00 | +0.00 | +1.71 | -0.07 | +0.00 | +0.00 | +1.05 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| M2 Money Supply | +0.00 | +0.00 | +2.50 | -0.08 | +0.00 | +0.00 | +0.92 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
| Capacity Utilization | +0.00 | +0.00 | -1.05 | +0.06 | +0.00 | +0.00 | -1.39 | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 |
Methodology
Data Sources
Indicators are loaded from pre-fetched S3 Parquet files collected via the Financial Modeling Prep (FMP) API and the FRED (St. Louis Fed) API. The following categories are used:
- FMP Economic Indicators — GDP, Unemployment Rate, CPI, Federal Funds Rate, Initial Jobless Claims, Retail Sales, Consumer Sentiment, Smoothed US Recession Probabilities, Industrial Production Index
- Treasury Yields & Spreads — 3-month, 2-year, and 10-year yields; derived 2s10s and 3m10y term-spread series
- Market Volatility — CBOE VIX (implied vol of S&P 500 options)
- FRED Series — ICE BofA HY OAS, IG OAS, Chicago Fed NFCI, 5-Year Breakeven Inflation, Federal Reserve Balance Sheet (WALCL), M2 Money Supply, Capacity Utilization
Sector performance data and the market risk premium snapshot were excluded. Bitcoin (BTCUSD) was excluded due to absent pre-2010 data.
Weekly Aggregation
All daily series are averaged to week-ending-Friday frequency. Monthly and quarterly series (GDP, CPI, unemployment, etc.) are forward-filled up to 92 days before resampling so that every week carries the most recently released value. Weeks with fewer than 50 % of features populated are dropped. Any remaining individual NaNs are filled with the column median before clustering.
Feature Preprocessing
All 22 features are standardized to zero mean and unit variance
(sklearn.preprocessing.StandardScaler) so that indicators with
vastly different magnitudes (VIX in 10–80, GDP in $ trillions) contribute
equally to the K-Means distance metric.
Clustering Algorithm
Gaussian Mixture Model clustering (sklearn.mixture.GaussianMixture,
covariance_type='full', n_init=10, random_state=655321) with
k = 12 components. The canonical
k=12 was selected by GMM log-likelihood inflection analysis on the
full deep-history dataset and stored as canonical regime definitions in S3.
Regime assignments use MAP (maximum a posteriori) inference: each week is
assigned to the component with the highest posterior probability.
Cluster Labeling
Each cluster is automatically labeled using the three features whose standardized centroid values deviate most from the global mean (largest absolute z-score). A positive deviation uses the feature's descriptive direction tag (e.g. a VIX centroid well above average → "Stressed"); a negative deviation uses "Low <feature name>".
Visualization
Principal Component Analysis (PCA) projects all 22 features into two dimensions for the scatter plot. PC1 and PC2 together capture 63.0% of total variance (44.0% + 19.0%).
Comments