Underemployment Risk (CPS)
Composite stress indicator based on U‑6 underutilization and median weeks unemployed. Outputs include robust z‑scores, optional percentile ranks, EMA smoothing, 0–100 scaling, and categorical regimes.
Why: Elevated U‑6 and longer unemployment durations reflect slack and scarring in the labor market that often precede demand weakness.
Abstract
We build a monthly underemployment risk signal from CPS series capturing broad slack (U‑6) and job‑loss persistence (median unemployment duration). Each series is standardized using robust rolling z‑scores; the composite is their average. We also report full‑sample percentile ranks for interpretability, apply EMA smoothing, scale to 0–100, and classify regimes.
1. Data (BLS CPS Identifiers)
- LNS13327709 — U‑6: Alternative measure of labor underutilization (%)
- LNS13008276 — Median weeks unemployed
Inputs are monthly. We enforce presence of date, series_id, and value, and align data to a month‑start grid with bounded forward‑fill (ffill(limit=2)).
2. Data Handling & Validation
- Types & dates: Coerce numeric values; normalize dates to month‑start timestamps.
- Pivot & grid: Wide pivot by
series_id, align toasfreq('MS'). - Fail‑fast: raise if either series is fully missing after pivot.
3. Measures & Diagnostics
Diagnostics: 3‑month momentum for both inputs (diff(3)).
4. Standardisation (Robust Rolling z‑scores)
Each series is scaled with a median/MAD z‑score using an adaptive window.
5. Composite Construction
We take an equal‑weight average of the two z‑scores (both are bad when high):
For interpretability, we also compute full‑sample percentile ranks for each input and average them: Underemployment_Composite_pctRank.
6. Smoothing, Scaling & Regimes
- Headline smoothing: 3‑period EMA on the composite z‑score.
- Score (0–100): min–max scaling over observed history; NaN if the series is flat.
- Regimes: thresholds on the unsmoothed composite z‑score.
- HOT (stress ↑): > +0.75
- NEUTRAL: −0.75 to +0.75
- COOL (stress ↓): < −0.75
7. Output Panel
[
"u6_underutilization_rate","median_weeks_unemployed",
"u6_pct_rank_fullsample","weeks_pct_rank_fullsample",
"Underemployment_Composite_pctRank",
"u6_z","weeks_z","Underemployment_z",
"Underemployment_0_100","Underemployment_Smoothed","Underemployment_Regime",
"u6_mom_3m","weeks_mom_3m"
]
8. Implementation Notes (Python)
# Expect columns: date, series_id, value (monthly)
# Align to MS grid; ffill(limit=2); pivot to wide; compute z-scores, pct-ranks,
# composite, EMA smoothing, 0–100 scaling, regime classification as detailed above.
9. Interpretation & Use
A HOT underemployment regime indicates broad slack and elongated job‑finding, often consistent with cooling demand and softer wage pressure. A COOL regime reflects easing stress and faster re‑employment dynamics.