v4: Market Stress Overhaul — Why $4,700 Gold Was Scoring Zero
Three of four market signals were scoring zero stress during historically extreme conditions. Gold at $4,700, oil at $101, and Treasury yields at 4.45% all produced flat readings because the formulas only measured rate-of-change, not absolute level. This post explains the bug and the fix.
A meter that shows low stress during objectively extreme market conditions is worse than no meter at all. After deploying the market signals layer in v2, we noticed something wrong: despite gold trading near all-time highs, oil above $100 a barrel, and Treasury yields at levels not seen since before 2008, the market stress scores for all three were reading 0.0.
The root cause
All three signals — Gold, WTI Oil, and 10-Year Treasury — were measuring only rate-of-change: how much the price moved relative to a recent baseline. If a market has been elevated for weeks, the 7-day change is small even though the absolute level is historically alarming. The formula treated a flat week at $4,700 gold the same as a flat week at $1,800 gold.
VIX was the exception. Because VIX is itself a volatility measure — not a price — the absolute number already encodes how fearful the market is. A VIX of 35 means elevated fear whether it got there fast or slow. The other three signals do not have that property.
The fix: blend absolute level with rate-of-change
Each affected signal now uses a 60/40 blend: 60% of the stress score comes from where the price sits within a historically calibrated range, and 40% comes from the rate of recent change. A sustained high price registers stress even if it has been stable for a month. A sudden spike adds to that baseline.
| Signal | Level anchors | Rate-of-change cap | Old stress (today) | New stress (today) |
|---|---|---|---|---|
| Gold (XAU/USD) | $1,800 normal → $5,000 crisis | 5% above 30d avg = 10 | 0.0 | 5.4 |
| WTI Oil (CL=F) | $60 normal → $120 crisis | 10% weekly move = 10 | 0.0 | 4.3 |
| 10Y Treasury (^TNX) | 2% normal → 6% fiscal crisis | 50bps weekly move = 10 | 0.0 | 4.3 |
Gold: $1,800 → $5,000
Gold spent most of the decade between 2012 and 2020 in the $1,200–$1,800 range. The surge above $2,000 in 2020 was driven by COVID-era uncertainty. The current level near $4,700 reflects a sustained multi-year flight to safety that has no precedent in the modern era. The $1,800 lower anchor represents pre-crisis normal; $5,000 represents a plausible crisis ceiling. At $4,674 today, the level stress component alone registers 9.0/10. Blended with a near-flat 30-day deviation, the combined stress is 5.4.
stress = clamp(price, $1800, $5000) × 0.6 + clamp(% above 30d avg, 0%, 5%) × 0.4
WTI Oil: $60 → $120
Oil above $100 has historically coincided with geopolitical crises, supply shocks, and inflationary periods — the 2008 peak, the 2022 Russia-Ukraine supply disruption. $60 represents a low-tension equilibrium; $120 represents a supply shock ceiling. At $101 today, the level stress is 6.8. Blended with a small weekly change, the combined stress is 4.3.
stress = clamp(price, $60, $120) × 0.6 + clamp(|7d % change|, 0%, 10%) × 0.4
10-Year Treasury: 2% → 6%
Treasury yields are more contextual than commodity prices — high yields can reflect growth as much as risk. However, yields above 5% create genuine fiscal stress: the US government's interest payments become a dominant budget line, refinancing risk rises, and mortgage markets seize. The 2% lower anchor represents the near-zero rate environment of 2010–2021; 6% represents a threshold that would trigger a debt sustainability crisis. At 4.45% today, the level stress contributes 3.7. With a near-flat weekly change, combined stress is 4.3.
stress = clamp(yield, 2%, 6%) × 0.6 + clamp(|7d change|, 0bps, 50bps) × 0.4
Effect on the market score
| Signal | Weight | Old stress | New stress | Contribution before | Contribution after |
|---|---|---|---|---|---|
| WTI Oil | 35% | 0.0 | 4.3 | 0.00 | 1.51 |
| VIX | 30% | 1.5 | 1.5 | 0.45 | 0.45 |
| Treasury | 20% | 0.0 | 4.3 | 0.00 | 0.86 |
| Gold | 15% | 0.0 | 5.4 | 0.00 | 0.81 |
| Market score | — | 0.77 | 3.62 | — | — |
The overall market score moved from 0.77 to 3.62 — and because the market layer contributes 40% to the final meter, the doomsday meter itself rose accordingly. The news layer (60% weight) continues to drive the majority of the signal; the market layer now correctly reflects the macro environment it was designed to capture.
What did not change
VIX scoring is unchanged — its absolute level already encodes fear correctly, so no fix was needed. The 60/40 split between news and market layers is unchanged. The weights between the four market signals (WTI 35%, VIX 30%, Treasury 20%, Gold 15%) are unchanged. This is a calibration fix, not a structural change.