Explicit Neutral Rate (r*) Proxy

Contextual estimate of the policy-neutral real rate using market-implied real yields, a term-premium-adjusted variant, and inflation expectations. Designed to assess policy stance relative to neutral, not to estimate r* precisely.

Why: Policy can remain restrictive even without hikes; cuts may be justified but delayed when neutral drifts.

Abstract

We construct a daily, market-anchored proxy for the neutral real policy rate. The signal combines long-run real yields and a term-premium-adjusted variant into a composite r* context. The current real policy rate is then evaluated against this proxy to classify the stance as restrictive, near neutral, or accommodative. Directional drift and confidence are derived to support reaction-function analysis.

1. Data (FRED Identifiers)

All series are sourced from FRED. Market series are daily; the policy rate is forward-filled between updates to reflect known policy settings.

2. Data Handling & Validation

  • Alignment: Align all series to a daily index; retain business days for modelling.
  • Missing values: Forward-fill market series across weekends/holidays; forward-fill FEDFUNDS between releases.
  • Optional term premium: Select the first available term-premium series from a candidate list; proceed without term premium if none exist.
  • Validation: Require at least one r* component to be non-null in the final panel.

3. Neutral Rate Components

r*market = DFII10
r*term-adj = DFII10 − THREEFYTP10

The first component captures the market-implied long-run real rate; the second adjusts for term premia as a policy-relevant variant.

4. Composite Neutral Proxy

We use a simple equal-weighted mean of available components. This is a context proxy and is not intended as a structural estimate of r*.

r*proxy = mean( r*market, r*term-adj )

5. Policy Stance Relative to Neutral

We approximate a real policy rate using expected inflation and compare it to the neutral proxy.

policy_real = FEDFUNDS − T10YIE
stance_gap = policy_real − r*proxy

6. Directional Drift of Neutral

We measure the change in the neutral proxy over a three-month (business-day) window to infer drift.

drift3m = Δ63bd( r*proxy )

7. Confidence

Confidence is driven by cross-proxy dispersion and component availability.

dispersion = std( r* components )

8. Output Panel

[
  "rstar_proxy",
  "policy_real_proxy",
  "stance_gap",
  "policy_stance_vs_neutral",
  "neutral_drift",
  "confidence",
  "rstar_market_real",
  "rstar_term_prem_adj_real"
]

9. Implementation Notes (Python)

# Expect df_rstar_inputs indexed by date (business-day), ffilled.
# rstar_market_real = DFII10
# rstar_term_prem_adj_real = DFII10 - THREEFYTP10 (if available)
# rstar_proxy = mean(components)
# policy_real_proxy = FEDFUNDS - T10YIE
# stance_gap = policy_real_proxy - rstar_proxy
# drift_3m = rstar_proxy.diff(63)
# confidence via dispersion std(components) + component count

10. Interpretation & Use

This signal is intended to be interpreted as a policy-stance context indicator: it compares an inflation-adjusted policy-rate proxy to a market-anchored neutral-rate proxy. It does not estimate the structural neutral rate (r*) directly.

10.1 Model Interpretation (how to read the signal)

What the level means

How to interpret the stance regime (thresholds)

What the drift means (neutral moving under your feet)

What “confidence” means (signal reliability, not correctness)

Confidence is a measurement quality proxy based on component availability and dispersion across components (where applicable). It should be interpreted as “how stable the proxy is,” not “probability the stance call is correct.”

10.2 How to use it inside a macro model

10.3 Key caveats (avoid common misreads)

10.4 Academic anchors (why these variables matter)

10.5 Selected references (starter list)