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)
- CES0500000002 — Total Private: Average Weekly Hours (SA)
- CES3000000002 — Manufacturing: Average Weekly Hours (SA)
Inputs are monthly. We require date, series_id, and value columns.
2. Data Handling & Validation
- Types & dates: Coerce numeric values; normalize
dateto month‑start timestamps. - Pivot & grid: Wide pivot by
series_id; align toasfreq('MS'). - Gaps: Bounded forward‑fill
ffill(limit=2). - Fail‑fast: raise if either hours series is fully missing after pivot.
3. Measures & Diagnostics
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.
5. Composite, Smoothing & Regimes
We average the two level z‑scores and derive regimes from the unsmoothed composite.
- 3‑period EMA for the headline.
- Min–max 0–100 scaling over observed history (NaN if flat).
- Regimes: HOT > +0.75, COOL < −0.75 (unsmoothed composite).
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.