Methodology

Last updated May 2025 · Source on GitHub

Overview

The Consumer Compass headline score is a weighted composite of 7 sub-scores covering ~30 indicators sourced entirely from free U.S. government APIs (FRED, BLS, BEA, NY Fed, SEC EDGAR). Each indicator is converted to a 0–100 score using an expanding-window percentile rank — its current value is ranked against all historical values back to 1990. This eliminates look-ahead bias and ensures the score is directly comparable across time.

Percentile Transform

For each indicator at time t, the score is:

rank(value_t) / N_t × 100
where N_t = count of all observations from history[0] through history[t]
  • Higher-is-better indicators (e.g., payrolls, savings rate): higher percentile = higher score.
  • Lower-is-better indicators (e.g., unemployment, delinquency): percentile is inverted (100 − percentile).
  • CPI indicators: scored by proximity to 2% — the absolute distance |YoY − 2%| is ranked; lower distance scores higher.
  • Context-only indicators (Manheim MUVVI): charted for context but excluded from scoring.

Pre-Score Transforms

Indicator Transform
Nonfarm Payrolls (PAYEMS) MoM change → 3-month rolling average
Real Hourly Earnings, DPI, Retail Sales, PCE Year-over-year % change
PCE (spending momentum) 3-month annualized rate of change
Net Worth / DPI BOGZ1FL192090005Q ÷ DSPI (both quarterly)
CPI (all variants) |YoY − 2.0%| distance → scored on lower distance
TSA Throughput vs. 2019 baseline (pre-pandemic normalization)
All others Raw level (already stationary or ratio)

Smoothing

After scoring, each indicator's 0–100 series is smoothed with a rolling average before sub-score aggregation:

  • Monthly indicators: 3-month centered rolling average
  • Weekly indicators: 4-week rolling average
  • Daily indicators: 30-day rolling average
  • Quarterly indicators: no smoothing applied

Sub-Score Weights

Sub-Score Weight Indicators
Labor & Income 20% UNRATE, PAYEMS, IC4WSA, CCSA, Real AHE YoY
Credit Stress 20% CC delinquency, Consumer loan delinquency, Charge-offs, NY Fed serious delinq transition, SLOOS tightening
Balance Sheet 15% Personal saving rate, Real DPI YoY, Debt service ratio, Net Worth/DPI
Spending & Demand 15% Real PCE 3-mo ann., Real retail sales YoY, TSA throughput vs 2019, Real PCE food svcs YoY
Sentiment 10% UMich Consumer Sentiment, OECD Consumer Confidence, NY Fed SCE missing payment prob.
Inflation 10% Headline CPI, Core CPI, Shelter CPI (all proximity to 2%), EIA gas prices
Big Ticket 10% 30yr mortgage rate, Auto loan rate (72mo), CC interest rate, Housing affordability index

Within each sub-score, indicators are equally weighted. Sub-scores are renormalized if an indicator has no data.

Recession Back-Test

The scoring engine validates that the headline score drops ≥15 points by the NBER-designated recession peak (start of recession). Expected behavior:

Recession NBER Peak Expected Score Drop
1990–91 Jul 1990 ≥15 pts from pre-recession baseline
2001 Mar 2001 ≥15 pts from pre-recession baseline
2007–09 Dec 2007 ≥15 pts (score floors near 20 in 2009)
2020 COVID Feb 2020 ≥15 pts (score craters by Apr 2020)

Data Sources & Legal

  • FRED: Federal Reserve Bank of St. Louis. Free API, attribution required.
  • BLS: Bureau of Labor Statistics. Free API, public domain.
  • BEA: Bureau of Economic Analysis. Free API, public domain.
  • NY Fed HHDC: Household Debt and Credit. Free download, public data.
  • NY Fed SCE: Survey of Consumer Expectations. Free download.
  • EIA: U.S. Energy Information Administration. Free API, public domain.
  • SEC EDGAR: 8-K Exhibit 99 earnings transcripts only. U.S. government system, public domain.
  • Manheim MUVVI: Used for context only (not scored). Chart displays index level.
  • Conference Board CCI: Redistribution restricted — not stored. Linked externally only.

The Consumer Compass is not investment advice. Scores are statistical computations, not editorial recommendations. Source code is MIT-licensed.