US 10-Year Real Yield (DFII10) Regime Signal Methodology
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
- DFII10: 10‑Year Treasury Inflation‑Indexed Security, constant maturity (Real Yield), monthly.
- Data sourced from FRED and begins in 2003‑01‑01.
- Additional contextual data (optional): market regimes or policy events for cross‑validation.
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
DFII5vsDFII10) to detect curve steepening/flattening in real rates.
2. Methodology
- Compute a 6‑month moving average to capture medium‑term trend behaviour:
Trendt = Mean(Valuet−5:t)
- 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 Wei — The Informational Content of Treasury Inflation‑Protected Securities — documents liquidity premia in TIPS and implications for breakevens.
- Abrahams, Adrian, Crump, Moench, and Yu — Decomposing Real and Nominal Yield Curves — discusses distortions in breakevens and real yields (liquidity and risk premia).
- Adrian and Wu — The Term Structure of Inflation Expectations — shows model‑implied inflation expectations can diverge from breakevens when volatility is high.
- Andreasen, Christensen, and Riddell — The TIPS Liquidity Premium — term‑structure evidence on liquidity premia in TIPS.
- Brock, Lakonishok, and LeBaron — Simple 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
- Shorter windows (e.g., 3 m) capture tactical movements but add noise.
- Real‑yield estimates depend on TIPS market liquidity: during risk‑off episodes, breakevens and observed TIPS yields may be distorted by liquidity premia; interpret regime shifts directionally and corroborate with other measures.
- Simple moving‑average crossover is intentionally parsimonious: adding volatility‑adjusted trend filters and/or term‑structure information (e.g., 5‑yr vs 10‑yr TIPS) can reduce noise and false flips.
- Neutral bounds (±0.05 %) can be tuned to reflect investor tolerance for noise.
6. Reproducibility
- Record source (
DFII10from FRED), retrieval date, and version control of scripts. - Ensure consistent rolling‑window definitions and tolerance levels.
- Save both the chart image (
US_Real_Yield_Signal_chart_mpl.png) and DataFrame output for auditability.
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.