Weekly Hours (CES)

Lead indicator of demand derived from Total Private and Manufacturing average weekly hours. Produces 3‑month change diagnostics, robust level z‑scores, a composite, EMA smoothing, 0–100 scaling, and regimes.

Why: Firms adjust hours before headcount; rising hours often precede hiring and production upturns.

Abstract

We build a monthly signal from CES weekly hours for total private and manufacturing. After alignment and cleaning, we compute 3‑month changes and robust level z‑scores, average them into a composite, smooth the headline, scale to 0–100, and classify regimes indicating strength or softness in labor demand.

1. Data (BLS CES Identifiers)

Inputs are monthly. We require date, series_id, and value columns.

2. Data Handling & Validation

  • Types & dates: Coerce numeric values; normalize date to month‑start timestamps.
  • Pivot & grid: Wide pivot by series_id; align to asfreq('MS').
  • Gaps: Bounded forward‑fill ffill(limit=2).
  • Fail‑fast: raise if either hours series is fully missing after pivot.

3. Measures & Diagnostics

total_hours_chg_3m = Δ3m(Total Private Hours)
mfg_hours_chg_3m = Δ3m(Manufacturing Hours)

Composite of 3‑month changes and its 3‑month moving average summarise short‑run momentum.

4. Standardisation (Robust Rolling z‑scores)

Levels are scaled with a median/MAD z‑score using an adaptive window.

zt(x) = (xt − medianW(x)) / (1.4826·MADW(x)),\ W = min(24, max(8, ⌊0.8·Nvalid⌋))

5. Composite, Smoothing & Regimes

We average the two level z‑scores and derive regimes from the unsmoothed composite.

Hours_Level_Compositez = mean( z(Total Private Hours), z(Manufacturing Hours) )

6. Output Panel

[
  "total_private_hours","manufacturing_hours",
  "total_hours_chg_3m","mfg_hours_chg_3m",
  "Hours_Change_3m_Composite","Hours_Change_3m_Composite_ma3",
  "total_hours_z","mfg_hours_z",
  "Hours_Level_Composite_z","Hours_Level_Composite_Smoothed","Hours_Level_Composite_0_100",
  "Weekly_Hours_Regime"
]

7. Implementation Notes (Python)

# Expect monthly CES hours with columns: date, series_id, value
# Align to MS grid; ffill(limit=2); compute 3m changes; robust_z() on levels; 
# build composite, EMA smoothing, 0–100 scaling; classify regimes.

8. Interpretation & Use

A HOT weekly‑hours regime indicates firming labor demand and near‑term production momentum; a COOL regime flags softening demand. Use with payroll growth and order‑book signals.