Google Trends tells us what regular people are quietly doing. But what about the institutions — the pension funds, the hedge funds, the bond desks managing billions? They have their own fear gauge, and it's been publishing daily since 1996. It's free. And we just wired it in as signal source #6.

What It Is

The ICE BofA US High Yield Option-Adjusted Spread (FRED series: BAMLH0A0HYM2) measures the gap between junk bond yields and US Treasury yields. In plain English: how much extra return investors demand to hold risky corporate debt instead of government bonds.

When that gap is narrow, everyone's comfortable. When it widens, institutions are getting nervous. When it blows out — that's panic.

Historical Context

Normal:     3.0 – 4.0% (300-400 bps)  — business as usual
Elevated:   4.0 – 5.0% (400-500 bps)  — pre-recession territory
Crisis:     5.0%+                       — institutional fear
2008 peak:  21.8% (2,182 bps)          — financial system collapsing
COVID peak: 10.8% (1,087 bps)          — March 2020

Why This Matters for Us

Our other signal sources measure different things: FRED tracks the economy, RSS reads the news, GPR scores geopolitical tension, Google Trends watches retail behavior, ORALE tracks prediction markets. None of them directly measure what the bond market thinks about corporate survival.

Credit spreads fill that gap. When institutions start demanding higher premiums for holding junk bonds, they're telling you something that won't show up in unemployment numbers for months. The bond market has historically been smarter than the stock market about pricing risk — it led the 2008 crash by months and flagged COVID stress before equities reacted.

The Implementation (TDD This Time)

We built this one test-first. 11 test cases before writing a single line of signal logic:

test_extreme_stress_above_500bps          ✅
test_elevated_stress_above_400bps         ✅
test_rapid_widening_triggers_signal       ✅
test_very_rapid_widening                  ✅
test_complacency_low_and_narrowing        ✅
test_normal_range_no_signal               ✅
test_source_is_fred_credit                ✅
test_metadata_includes_spread_data        ✅
test_confidence_capped_at_reasonable_max  ✅
test_insufficient_data_returns_empty      ✅
test_empty_data_returns_empty             ✅

The signal logic uses two dimensions: absolute level (how high is the spread?) and velocity (how fast is it widening?). A spread that's normal but widening fast is a warning. A spread that's high but stable is already priced in. High + widening = maximum signal.

Signal Logic

ABSOLUTE LEVEL:
  > 5.00% (500bps)  →  Crisis: LONG TLT, LONG GLD, SHORT SPY
  > 4.00% (400bps)  →  Elevated: LONG TLT, rotate to utilities

VELOCITY (30-day change):
  > +1.00pp  →  Rapid deterioration: LONG TLT, SHORT SPY
  > +0.50pp  →  Moderate widening: mild LONG TLT

CONTRARIAN:
  < 3.00% + narrowing  →  Complacency: light GLD hedge

NORMAL RANGE:
  3.00-4.00%, change < 0.50pp  →  No signal (correct behavior)

Signals from both dimensions get deduped — if the absolute level and velocity both trigger the same trade, we keep whichever has higher confidence rather than double-counting.

First Live Read

Spread: 3.42% (342 bps) | 30-day change: +0.32pp | Signals: 0

Normal range, modest widening below threshold. No signals generated. Exactly right — the spread is within historical norms and not moving fast enough to indicate a regime shift. Worth noting: it has widened 32bps in the last month and is above the 90-day average. Not alarming, but we're watching.

Lesson: Test the "No Signal" Case

Half the value of a signal source is knowing when not to signal. Our test_normal_range_no_signal test explicitly verifies that normal conditions produce zero signals. If your system screams all the time, nobody listens when it matters.

Cost: Still $0

FRED API, same key we already have. One additional HTTP request per pipeline run. Daily data back to December 1996 — nearly 30 years of institutional behavior to backtest against.

Retail investors Google "how to sell stocks." Institutions widen credit spreads. Both are fear — measured at different scales, visible at different speeds. Now we watch both.