v2: Market Signals — Adding a Financial Layer to the Risk Meter
The meter now blends news coverage intensity (60%) with real-time financial market stress (40%). This post explains what changed, why, and how the four new signals are normalised. Also: Gemini Flash joins Claude as a second AI scorer.
Since launch, the WakeUpNeo.ai meter has been purely news-driven: articles from five international RSS feeds scored by a combination of keyword analysis and Claude AI, then averaged into a single 0–10 number. That approach works well for capturing the volume and intensity of news coverage — but news coverage lags. Financial markets, by contrast, price in fear almost instantaneously.
What changed
Starting with v2, the final meter score is a weighted blend of two independent layers:
final_meter = news_score × 0.60 + market_score × 0.40
The news layer is unchanged — the same 72-hour rolling window, top-100 article mean, Claude AI enhancement. The market layer is new: four financial stress signals polled every 6 hours, each normalised to a 0–10 scale, averaged into a single market score.
The four market signals
| Signal | Source | Stress formula |
|---|---|---|
| VIX (CBOE Volatility Index) | Alpha Vantage | clamp((VIX − 15) / 25, 0, 1) × 10 — calm below 15, max above 40 |
| Gold (XAU/USD) | Alpha Vantage | % above 30-day moving average, capped at 5% = 10 |
| 10-Year Treasury Yield | FRED (Federal Reserve) | abs(7-day yield change), capped at 0.5 pp = 10 |
| WTI Crude Oil | Alpha Vantage | abs(7-day % price change), capped at 10% = 10 |
Why 60 / 40?
The weighting reflects a deliberate editorial choice: this is primarily a news signal, not a trading indicator. That said, financial markets are forward-looking in a way that text analysis is not — they price in fear before reporters finish writing their headlines. At 40%, the market layer has genuine influence without being able to override clear news signals on its own.
Failure handling
- If a single signal fails to fetch (API error, rate limit), it defaults to a neutral stress of 5.0 rather than being dropped — this prevents one flaky endpoint from distorting the market score.
- If the entire market layer is unavailable, the meter silently falls back to news-only scoring. There is no gap in service.
- Each scoring run reads the most recently cached market score from Firestore, so a 6-hour polling cadence does not introduce staleness into the 2-minute news cycle.
API quota
The implementation was designed to stay within free-tier limits. Alpha Vantage's free plan allows 25 API calls per day. Polling 3 signals (VIX, Gold, WTI) 4× per day = 12 calls. FRED is effectively unlimited for read access. Total: 12 Alpha Vantage calls per day, leaving comfortable headroom.
What's next
- Additional AI models — Gemini Flash now runs alongside Claude as a second scorer. Their outputs are averaged (50/50 ensemble) before blending with the lexicon, reducing single-model bias.
- Regional meters — breaking the global signal into geographic zones (Americas, Europe, Asia-Pacific, MENA) so the meter reflects where tension is concentrated, not just how much.
- User accounts — the ability to save threshold alerts (e.g. notify me when the meter crosses 7).
- Source expansion — adding Arabic, Chinese, and Spanish-language outlets to address the current English-language gap.