Historical validation
Two-tier signal reconstructed day-by-day on SPY, 1996-12-31 → 2026-09-17 · generated 2026-09-17T16:46:10+00:00 · Live dashboard
Episodes (≥15% drawdowns)
9
Warned at the peak
2 / 9 (22%)
Red for majority of decline
0 / 9
Median lead (hits)
316 trading days
False-positive share of red days
26.9% (95 / 353 days)
Phase 1
Tactical warning
Phase 2
≥15% drawdown episode (peak → trough, numbered)
SPY adjusted close (log scale)
Drawdown episodes (≥15% peak-to-trough)
| # | Peak | Signal at peak | First amber/red | Lead / lag | Trough | Max drawdown | Recovery | Red share of decline | Call |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 1998-07-20 | AMBER | 1996-12-31 | +390 td lead | 1998-08-31 | -19.0% | 1998-11-23 | 3% (no) | hit |
| 2 | 2000-03-24 | PHASE 2 | 1999-04-13 | +241 td lead | 2002-10-09 | -47.5% | 2006-10-26 | 15% (no) | hit |
| 3 | 2007-10-09 | PHASE 1 | 2008-09-17 | -237 td (lag) | 2009-03-09 | -55.2% | 2012-08-16 | 22% (no) | miss |
| 4 | 2010-04-23 | PHASE 1 | — | no warning | 2010-07-02 | -15.7% | 2010-11-04 | 0% (no) | miss |
| 5 | 2011-04-29 | PHASE 1 | — | no warning | 2011-10-03 | -18.6% | 2012-02-03 | 0% (no) | miss |
| 6 | 2018-09-20 | PHASE 1 | — | no warning | 2018-12-24 | -19.3% | 2019-04-12 | 0% (no) | miss |
| 7 | 2020-02-19 | PHASE 1 | 2020-03-18 | -20 td (lag) | 2020-03-23 | -33.7% | 2020-08-10 | 17% (no) | miss |
| 8 | 2022-01-03 | PHASE 1 | — | no warning | 2022-10-12 | -24.5% | 2023-12-13 | 0% (no) | miss |
| 9 | 2025-02-19 | PHASE 1 | 2025-04-08 | -34 td (lag) | 2025-04-08 | -18.8% | 2025-06-26 | 3% (no) | miss |
Data sources & series splicing
| Indicator | ETF leg | Pre-ETF FRED proxy | Proxy description | Splice seam |
|---|---|---|---|---|
| Credit spread gate — HY leg | ICE BofA HY OAS (FRED) | BAA10Y | Moody's Baa corporate yield minus 10Y Treasury; FRED serves only a rolling 3-year window of ICE BofA history (ICE licensing, Sep 2023), so this spread stands in before the ICE window | rolling (~2023-09-18) |
| Credit spread gate — single-B leg | ICE BofA Single-B OAS (FRED) | — | no proxy available — leg inactive before the ICE window | n/a |
| GLD/CPER ratio — gold leg | GLD | GC=F | COMEX gold futures front month (yfinance), substituted for the London gold fixing series that FRED removed in 2020 | 2004-11-18 |
| GLD/CPER ratio — copper leg | CPER | PCOPPUSDM | IMF global copper price (USD/metric ton), monthly, forward-filled to daily | 2011-11-15 |
| BNO 20-day return | BNO | DCOILBRENTEU | Brent crude spot price (USD/bbl) | 2010-06-02 |
| SPHB/SPLV ratio | SPHB, SPLV | — | no proxy — indicator inactive before both ETFs trade and a full 200-day window exists (effective ~2012) | n/a |
Methodology
- The exact thresholds and state rules from monitor.py are re-applied to each trading day using only data available up to that day (trailing windows only; no centered or forward-looking values in the signal itself). FRED series are aligned to SPY's calendar by last-observation-carried-forward.
- Where an ETF did not yet exist, its price leg is spliced to the FRED proxy above; the proxy history is back-adjusted to the ETF's price level at the seam so the series is continuous. Spliced legs are listed and marked in the table above.
- An episode opens at a peak (highest close of the trailing 252 trading days) once the close falls ≥15% below it, and ends at the trough; scanning resumes at recovery to the peak level or at the next 252-day high, whichever comes first. This keeps secular bears (2000–02, the GFC) as single episodes while still catching independent declines that never set an all-time high (2010, 2011). "Lead" counts trading days from the start of the amber/red run containing the peak; negative means the first signal came after the peak. An episode is a "hit" when the signal was amber or red on the peak day.
- A false positive is a PHASE 2 day with SPY within 5% of its all-time high and no ≥15% drawdown episode beginning within the following 126 trading days (~6 months). The forward-looking part is used only to score history; it is never part of the signal.
- Summary metrics: hit rate = hits / episodes; median lead over hit episodes; false-positive share = false-positive days / all PHASE 2 days (353 of 7,475 days were red).
Limitations (read before trusting this)
- ETF history is short: SPHB/SPLV start May 2011, BNO mid-2010, CPER late 2010, GLD late 2004. Before the splices, proxies stand in; before ~2012 the SPHB/SPLV leg does not exist at all, so the quorum runs on 3 of 4 confirmations and PHASE 2 is harder to reach — the early record is therefore conservative, not directly comparable to the modern record.
- Credit gate data break: since September 2023, FRED serves only a rolling 3-year window of ICE BofA index history (licensing), and ALFRED vintage queries are blocked for these series. Before the ICE window (~2023-09), the credit gate runs on the Moody's Baa–10Y spread with the threshold unchanged, and the single-B leg is inactive. Baa is investment-grade debt — its spread typically runs 100–200 bps tighter than HY OAS — so the gate is structurally harder to trip before 2023. The pre-2023 record is therefore conservative; only the last ~3 years use the live series end to end.
- The gold leg uses COMEX front-month futures (GC=F, from 2000-08) because FRED removed the London gold fixing series in 2020; before 2000-08 the gold/copper leg is inactive, so the pre-2000 quorum runs on only 2 of 4 confirmations (claims and oil). The copper proxy is monthly (forward-filled), so the gold/copper trigger is coarse before CPER.
- FRED publication lags are ignored: series are treated as known on their observation date. In reality initial claims are released about a week late and credit spreads settle a day late, which slightly flatters the reconstructed signal.
- No vintage / point-in-time adjustment: revised FRED history is used as it stands today.
- The 5.10% yield gate is calibrated to the post-2022 rate regime. For most of 2000–2020 the 10Y never reached 5.10%, so Gate 2 was structurally inert for most of this sample; the TACTICAL WARNING state barely appears before 2022. Conversely, in the high-rate 1990s the gate stayed on for months at a stretch — the pre-2000 "hits" and the long median lead are regime artifacts (a permanent warning eventually brackets any peak), not predictive skill.
- 2015–16 is the archetypal false positive for the LIVE monitor: oil/EM credit stress pushed HY OAS through 375 bps with confirmations firing, yet SPY's decline stopped around −13–14%, short of the −15% episode definition. In this reconstruction the Baa proxy peaked at 363 bps, so the gate stays dark and those red days do not appear — the false-positive share here is very likely lower than the live signal's.
- Episode, lead and false-positive statistics are computed on closing prices; intraday path risk is not modeled.