Fifteen FRED-anchored factors, weighted and normalized to a single regime read between −2.0 and +2.0. Updated automatically. Open to critiques.
An economist is an expert who will know tomorrow why the things he predicted yesterday didn't happen today.— Laurence J. Peter
One number, −2.0 to +2.0.
Fifteen macro factors are each scored on the same −2.0 to +2.0 scale, weighted by importance, and averaged into a single reading. Positive leans toward healthy or inflationary expansion. Negative means stress: cost-push inflation eating into the real economy, sliding toward stagflation and, at the extreme, contraction. Today's reading of −0.63 sits in Recessionary Contraction: broad deterioration.
Read the zone, not the third decimal. The robustness band (−0.75 to −0.40) is how far the number drifts when the inputs are stress-tested 20,000 ways; a wide band or a low zone-stability (60.1% here) means the read sits near a boundary and the zone is contested.
What it would have read, back to 2000.
The engine run point-in-time each quarter, on the factors that had FRED data then, against CPI inflation on the right axis. This is what it is honest about: it is a cost-push gauge, not a recession timer. Across 106 quarters it moves inversely to inflation (correlation -0.6); it falls when prices bite (2008 oil, 2022 to 2023, now). In the disinflationary crashes of 2009 and 2020 it turned up, not down, because inflation collapsed and policy eased. NBER recessions are shaded for context.
Q2 2026: the read, quarter by quarter.
The latest move is −0.24 on the quarter. The index is a regime read, so watch the band it sits in, not the third decimal.
All fifteen, weighted.
Every factor in the index — its weight, its FRED series, and where it sits this quarter. Weights sum to 20.5; the reading is their weighted average, bounded −2.0 to +2.0. Each factor is dated to the period its data covers.
A model you can't critique is a model you can't trust.
The index is a regime diagnostic, not a crystal ball. It confirms turns, it doesn't call them. Most factors are coincident-to-lagging; a few (LEI, sentiment) lead. Use it for direction and discipline: first-lien posture, shorter duration, real stress-testing of exit assumptions.
15 factors, FRED-sourced, symmetric −2/+2 rubric, normalized by weight. 13 of 15 factors live this quarter; the rest hold their last audited value, dated above. Window: 6 quarters.
The Haruspex Index is a personal macroeconomic research tool that uses my own proprietary hobby-level "Haruspex Macroeconomic Regime Engine", not investment advice and not a solicitation. It is a hobby read, not a forecast. Always read it with these things in mind.
FRED, Federal Reserve Bank of St. Louis · University of Michigan (UMCSENT) · National Association of Realtors (FIXHAI)
How the read is built, step by step.
Reproduced from the audited workbook and re-run every quarter: fifteen FRED-anchored factors, each scored on a symmetric −2.0 to +2.0 rubric, weighted, normalized to one number — then stress-tested for how much that number can actually be trusted.
Scoring rubric
Each factor carries a direction and a ladder of (threshold → score) bands. GTE factors score higher as the raw reading rises; LT factors are inverted — lower is better (cost pressures, leverage, policy rates). The engine walks the ladder top-down, first match wins, floor is −2.0. It's the nested-IF logic from the workbook's Rubric tab, ported verbatim.
F10 input-cost PPI (YoY %, inverted): ≤0% → +2 · 4% → 0 · 10% → −1 · >14% → −2Normalization
Index = Σ(factor score × weight) ÷ Σ(weights), bounded −2.0 to +2.0. Weights sum to 20.5. Because it's a weighted average on one shared scale, no single factor can run away with the read and the number stays comparable quarter to quarter. Change a threshold or a weight in the workbook and the whole model re-scores.
Diagnostic bands
- +0.75 to +2.00 Inflationary Expansion
- +0.20 to +0.74 Neutral Expansion
- −0.15 to +0.19 Fragile / Artificial Stability
- −0.55 to −0.16 Stagflation Risk
- −2.00 to −0.56 Recessionary Contraction
Robustness band — Monte Carlo
Every run, 20,000 draws perturb each raw input by ±15% of its rubric band-width (a data-revision proxy) and every weight by ±20% (weighting-judgment uncertainty), then re-score and re-normalize. The P05–P95 spread is the published band; zone-stability % is the share of draws that stayed in the same regime. A fuzzy number sitting inside a stable zone is the honest output.
Effective factors — PCA
Fifteen factors are not fifteen independent signals. Each run eigendecomposes their correlation matrix and reports a participation ratio, (Σλ)² ÷ Σλ². On current data the index carries the information of roughly 2 to 3 independent factors — which is exactly why it's read as a regime, not a third decimal.
Data, window & updates
Every series pulls from FRED and refreshes quarterly. AUTO factors read a single series; SEMI factors need a computed transform (YoY, spread, ratio, quarterly average, 6-month change) and get verified. All fifteen are aligned to the longest common window where every series has data — the latest-start constraint — and the backtest runs point-in-time on the factors that had data then, no hindsight. Any factor's raw value can be hand-overridden, and overrides are flagged.
FRED-native swaps (v1.0)
Two factors moved to FRED-native series so nothing hangs on a manual pull: F10 Input Costs → PCUOMFGOMFG (Manufacturing PPI, YoY %); F13 Housing Affordability → FIXHAI (NAR), which flipped direction and had its weight raised 1.0 → 1.5. That lifted the weight sum to 20.5; normalization adjusts automatically.
Reproducibility
A regression test feeds the workbook's historical raw values and asserts the code reproduces its audited scores to the decimal. The quarterly build fails rather than publish a reading that drifts from the source model. The code's only job is to mirror the workbook, then make it live.
Data retrieved from FRED, Federal Reserve Bank of St. Louis. UMCSENT © University of Michigan. FIXHAI © National Association of Realtors.
