US 10-Year Real Yield (DFII10) Regime Signal Methodology

A reproducible specification for regime classification based on real yield levels and trend analysis (2003–present).

Abstract

This paper describes the methodology for deriving market regime signals from the US 10‑year real yield (DFII10), using a trend‑based framework. The approach computes the 6‑month moving average of the real yield and applies a categorical regime classification—Bullish, Bearish, or Neutral—based on the relationship between the yield and its trend. This framework aligns monetary conditions and real‑rate dynamics for macro interpretation.

1. Data

The dataset is sorted by Date and filtered to post‑2003 observations. All analysis is performed in percentage yield space.

Data source overview

  • Publisher / platform: Federal Reserve Economic Data (FRED), maintained by the Federal Reserve Bank of St. Louis.
  • Instrument definition: Constant‑maturity 10‑year Treasury Inflation‑Protected Security (TIPS) real yield.
  • Units & frequency: Percent, monthly (as published by FRED). Downstream code may resample to month‑end if daily inputs are used elsewhere.
  • Transformations used in this model: none beyond sorting, windowed averaging, and a tolerance band for classification.
  • Revisions / vintage risk: FRED series can be revised; store the retrieval date and (if available) vintage identifiers for auditability.

Optional companion series can improve interpretation and diagnostics without changing the core regime label:

  • Nominal 10‑year Treasury yield: for decompositions and context around inflation compensation (e.g., FRED DGS10).
  • Breakeven inflation: to separate expected inflation from real‑rate moves (e.g., FRED T10YIE), noting breakevens embed liquidity and risk premia.
  • Term‑structure cross‑checks: 5‑year vs 10‑year real yields (e.g., FRED DFII5 vs DFII10) to detect curve steepening/flattening in real rates.

2. Methodology

  1. Compute a 6‑month moving average to capture medium‑term trend behaviour:
    Trendt = Mean(Valuet−5:t)
  2. Classify the signal based on yield position relative to trend:
    • Bullish: Real yield Valuet below its trend (Valuet < Trendt), implying accommodative conditions.
    • Bearish: Real yield above its trend (Valuet > Trendt), indicating tightening or restrictive conditions.
    • Neutral: Real yield within ±0.05 % of its trend.

This framework highlights medium‑term turning points in real interest‑rate regimes and serves as a diagnostic tool for assessing the stance of monetary conditions.

Methodology note (v1.1): Real‑yield estimates can be affected by TIPS market liquidity, particularly in risk‑off episodes. The current implementation uses a simple moving‑average crossover; extensions such as volatility‑adjusted trend filters or explicit term‑structure checks (5‑yr vs 10‑yr TIPS) can reduce noise.

3. Interpretation and academic context

What the regime label means (and does not mean)

  • Bullish (Value < Trend): real yields are below their recent trend, consistent with easing real‑rate pressure at the margin (often interpreted as more accommodative real financial conditions).
  • Bearish (Value > Trend): real yields are above trend, consistent with tightening real‑rate pressure at the margin.
  • Neutral: real yields are close to trend (within the tolerance band), signalling no clear directional impulse from this series alone.

This is a trend‑relative classifier, not a statement about whether real yields are “high” or “low” in absolute terms. Use it as a directional input into a broader macro model rather than a standalone forecast.

Key interpretation cautions from the literature

  • TIPS liquidity can distort real‑yield estimates: during risk‑off episodes, TIPS may embed a liquidity premium that pushes observed TIPS yields away from frictionless “risk‑free” real rates. This can mechanically amplify regime flips if not contextualised.
  • Breakeven inflation is not pure expected inflation: breakevens incorporate inflation risk premia and (often) liquidity premia, so “real vs nominal” decompositions require care, especially when volatility is elevated.
  • Trend rules are intentionally simple: moving‑average based signals are widely studied as parsimonious trend filters; their usefulness is typically regime‑dependent and can decay as conditions change.

How to use this signal in a macro model

  • Use as a “real‑rates impulse” indicator: map Bullish/Bearish to easing/tightening real‑rate pressure (directional), and combine with inflation, growth, and liquidity blocks rather than interpreting in isolation.
  • Cross‑check with term structure: compare 5‑year vs 10‑year real yields to distinguish front‑end policy repricing from longer‑run real‑rate repricing.
  • Stress‑test in risk‑off windows: when financial stress is high, treat abrupt moves as candidates for liquidity‑driven distortion unless corroborated by multiple real‑rate measures.

Selected academic and policy references

  • D’Amico, Kim, and WeiThe Informational Content of Treasury Inflation‑Protected Securities — documents liquidity premia in TIPS and implications for breakevens.
  • Abrahams, Adrian, Crump, Moench, and YuDecomposing Real and Nominal Yield Curves — discusses distortions in breakevens and real yields (liquidity and risk premia).
  • Adrian and WuThe Term Structure of Inflation Expectations — shows model‑implied inflation expectations can diverge from breakevens when volatility is high.
  • Andreasen, Christensen, and RiddellThe TIPS Liquidity Premium — term‑structure evidence on liquidity premia in TIPS.
  • Brock, Lakonishok, and LeBaronSimple Technical Trading Rules… — foundational evidence on moving‑average style rules as trend filters.

4. Implementation Notes

chart_df = merged_df.copy()
chart_df = chart_df.sort_values('Date')
chart_df = chart_df[chart_df['Date'] >= pd.Timestamp('2003-01-01')]

chart_df['DFII10_Trend'] = chart_df['Value_DFII10'].rolling(6, min_periods=1).mean()

def classify_signal(row):
    if pd.isna(row['Value_DFII10']) or pd.isna(row['DFII10_Trend']):
        return 'Neutral'
    diff = row['Value_DFII10'] - row['DFII10_Trend']
    if diff > 0.05:
        return 'Bearish'
    elif diff < -0.05:
        return 'Bullish'
    return 'Neutral'

chart_df['Signal'] = chart_df.apply(classify_signal, axis=1)

5. Sensitivity and Limitations

6. Reproducibility

7. Applications

The real‑yield regime signal assists in assessing market expectations for real rates and inflation compensation. It provides macro context for equity‑bond correlation shifts and can be integrated into multi‑asset regime frameworks.