Policy‑Relevant Inflation (PCE)
Equal‑weight composite of headline and core PCE inflation to mirror the Fed’s policy focus. Regimes: Hot, Neutral, Cool.
Abstract
This signal combines the year‑over‑year change in the PCE price index and its ex‑food‑and‑energy counterpart (Core PCE). Each series is standardised via a rolling robust z‑score and averaged 50/50. Thresholds of ±0.75 map the composite to policy‑relevant regimes.
1. Data
- PCEPI — Personal Consumption Expenditures: Chain‑Type Price Index (headline PCE).
- PCEPILFE — Personal Consumption Expenditures Excluding Food and Energy (core PCE).
Both are monthly indices from BEA (via FRED). Ensure month‑end alignment before transformations.
2. Transformations
- YoY Inflation: \Delta\%_{12m}(X)_t = X_t/X_{t-12} − 1
- Robust z‑score:
z_{rob}(X)_t = \dfrac{X_t − \mathrm{median}(X)_{t,w}}{1.4826·\mathrm{MAD}(X)_{t,w}}with w = 60 months (min 24). MAD scaling reduces sensitivity to outliers and level shifts.
3. Composite & Regimes
PCE\_{Composite,t} = 0.5·z(PCE\_{YoY,t}) + 0.5·z(CorePCE\_{YoY,t})
If\ C_t > 0.75 → \textit{Hot};\quad |C_t| ≤ 0.75 → \textit{Neutral};\quad C_t < −0.75 → \textit{Cool}
4. Implementation (Python)
import pandas as pd
import numpy as np
def robust_z(s, win=60, min_win=24):
x = pd.to_numeric(s, errors="coerce").astype(float)
w = max(min_win, min(win, x.dropna().size))
med = x.rolling(w, min_periods=min_win).median()
mad = (x - med).abs().rolling(w, min_periods=min_win).median()
return (x - med) / (1.4826 * mad.replace(0, np.nan))
p = df_pce.copy()
p["PCE_YoY"] = p["PCEPI"].pct_change(12)
p["CorePCE_YoY"] = p["PCEPILFE"].pct_change(12)
p["Z_PCE"] = robust_z(p["PCE_YoY"])
p["Z_cPCE"] = robust_z(p["CorePCE_YoY"])
p["PCE_Composite"] = 0.5*p["Z_PCE"] + 0.5*p["Z_cPCE"]
hi, lo = 0.75, -0.75
def _regime(v):
if pd.isna(v): return np.nan
return "Hot" if v > hi else ("Cool" if v < lo else "Neutral")
p["PCE_Regime"] = p["PCE_Composite"].apply(_regime)
df_sig_pce = p
display(df_sig_pce.tail())
5. Interpretation
- Hot: sustained above‑trend inflation pressure; hawkish policy bias.
- Neutral: inflation near trend; data‑dependent policy stance.
- Cool: below‑trend inflation; scope for easing if activity weakens.
6. Limitations
- Core and headline can diverge for long periods; equal weights are heuristic and can be tuned.
- Revisions from BEA may shift recent YoY prints; robust scaling moderates but does not remove effects.
- Thresholds ±0.75 are static; consider volatility‑aware calibration for trading applications.