Wage Growth & Inflation Composite (ECI + LMT)

A reproducible composite signal measuring wage inflation pressure and labor market tightness from BLS ECI and JOLTS data. The index combines private and civilian wage growth (quarterly) with labor tightness (monthly) to track structural inflation momentum.

Why: Rising wage growth alongside tight labor markets signals persistent inflation risk; falling wage pressure indicates disinflationary relief.

Abstract

This methodology merges the Employment Cost Index (ECI) with Labor Market Tightness (LMT) to create a unified measure of inflationary pressure. Quarterly wage data (ECI) are aligned to monthly frequency, robustly standardized, and integrated with the LMT z‑score to form a smoothed inflation composite with categorical regimes.

1. Data (BLS ECI Series)

Both are quarterly Employment Cost Index series. Dates are normalized to quarter‑end, then up‑sampled to monthly (start of month) for integration with JOLTS‑based labor metrics.

2. Data Handling & Validation

  • Quarter alignment: Convert to quarterly periods (to_period('Q')to_timestamp()).
  • Monthly up‑sampling: Resample with resample('MS') and ffill(limit=2).
  • Numeric enforcement: Coerce values to numeric; NaNs preserved.
  • Fail‑fast: Missing columns (date, series_id, value) trigger assertion error.

3. Transform Definitions

zt = (xt − medianW(x)) / (1.4826·MADW(x))

Robust z‑scores with adaptive rolling window (W=24 months, min 8) ensure stability across short and long samples.

The function protects against division errors (eps=1e‑9) and uses median absolute deviation scaling.

4. Wage Pressure Signal

Compute z‑scores for each wage series, then form a composite average:

Wage_Pressurez = mean(private_wagez, civilian_wagez)

The result is rescaled to 0–100 and smoothed via a 3‑month exponential moving average (ewm(span=3)).

5. Regime Classification

Regimes categorize the z‑score based on wage inflation risk thresholds:

  • HOT (wage inflation risk): z > +1.0
  • NEUTRAL: −1.0 ≤ z ≤ +1.0
  • COOL (disinflationary): z < −1.0

6. Inflation Composite (Integration with LMT)

We merge Wage Pressure with the Labor Market Tightness (JOLTS) signal to create a broader inflation composite:

Inflation_Compositez = mean(Wage_Pressurez, Labor_Tightnessz)

The joined index is aligned on monthly start frequency, forward‑filled within month, and output as z‑score, 0–100 scale, smoothed headline, and regime.

7. Output Structure

Wage_Pressure_Signal = [
  'private_wage_yoy','civilian_wage_yoy',
  'private_wage_z','civilian_wage_z',
  'Wage_Pressure_z','Wage_Pressure_0_100',
  'Wage_Pressure_Smoothed','Wage_Regime'
]

Inflation_Composite = [
  'Wage_Pressure_z','Labor_Tightness_z',
  'Inflation_Composite_z','Inflation_Composite_0_100',
  'Inflation_Composite_Smoothed','Inflation_Regime'
]

8. Interpretation & Use

HOT regimes reflect elevated wage inflation and potential persistence of CPI/PCE pressures, while COOL phases imply softening wage dynamics and macro disinflation. The composite aligns closely with real‑time macro indicators such as PMI prices and liquidity conditions.

9. Governance & Change Control