Reading Market Crises Before They Happen: The Macro & Geopolitical Risk Index
How a quantitative macro regime classifier flagged the Hormuz escalation six weeks before it became front-page news.
The Setup
On April 18, 2026, leaders from France, the UK, Italy, and Germany gathered in Paris to formalize a joint naval mission in the Strait of Hormuz. Oil had crossed $100/barrel. European inflation was accelerating. Equity markets were down ~7% from the onset of the conflict.
For most investors, this felt like a sudden shock.
For the moneyfeel Macro Risk Index (MRI), the deterioration had been visible in the data since early March.
What Is the MRI?
The MRI is an institutional-grade macro regime classifier covering 5 regions — GLOBAL, US, EU, ASIA, EM — across 3 timeframes (Daily, Weekly, Monthly), updated daily at market close.
It classifies market conditions into 5 discrete regimes:
| Regime | Equity Exposure | Signal |
|---|---|---|
STRONG_BULL |
100% | Strong momentum, compressed volatility |
BULL |
100% | Positive macro, manageable conditions |
NEUTRAL |
100% | Mixed signals, no confirmed stress |
BEAR |
20% | Elevated credit stress, rising volatility |
STRONG_BEAR |
0% | Crisis conditions, extreme systemic stress |
The model ingests 11 macro variables across 5 risk dimensions:
- Credit markets — IG/HY spreads, credit stress indicators
- Volatility — implied vol surface, VIX regime
- Rate dynamics — curve shape, rate of change
- Sovereign spreads — cross-country stress differentials
- Geopolitical risk — GPR Index (Iacoviello, 2022), smoothed to isolate medium-term trends
The Methodology: What Makes It Different
Most regime models rely on price data — momentum signals, moving averages, or drawdown thresholds. The MRI is different: it reads what the market is already pricing in, before it shows up in equity drawdowns.
Rolling Percentiles, Not Absolute Levels
Each variable is normalized through 3-year rolling percentiles. This ensures cross-regional comparability and removes structural drift — a credit spread level that was "elevated" in 2010 carries different information in 2026.
Geopolitical Risk Integration
The GPR component uses Iacoviello's newspaper-based index, but applies a smoothing filter to separate medium-term regime shifts from short-term noise (e.g., a single day's headlines vs. a sustained escalation trajectory).
Composite Score
The 11 inputs are aggregated into a single MRI score ranging from +1 (maximum bull) to -1 (maximum bear). The regime threshold matrix is:
score > 0.3 → STRONG_BULL
0.0 to 0.3 → BULL
-0.2 to 0.0 → NEUTRAL
-0.6 to -0.2 → BEAR
score < -0.6 → STRONG_BEAR
Confidence is reported alongside each regime classification.
Case Study: The Hormuz Crisis (2026)
On March 2, 2026 — two days after the conflict onset in Iran — the MRI flagged a regime shift to BEAR with a score of -0.637.
By late March, the score had deteriorated to -0.966, with STRONG_BEAR conditions and ~60% confidence. Six consecutive weeks in bear territory, with the signal preceding the mainstream narrative by weeks.
Notably, the EU regime returned to NEUTRAL on April 10 — 8 days before the Paris summit — already capturing the diplomatic de-escalation before it became public.
Historical Track Record
The MRI covers 2007 to present (daily granularity). A few reference points:
| Crisis | MRI Behavior |
|---|---|
| 2008 GFC | Strong Bear regime, score → -1.0 |
| COVID-19 (2020) | Rapid Bear transition across all regions simultaneously |
| 2022 Fed tightening cycle | Score hit 100th percentile stress; Bear active throughout |
| 2025 Tariff shock | 75% stress level; Bear on US + EM |
| 2026 Hormuz | Bear from March 2, score -0.966 at peak |
The pattern is consistent: deterioration in the underlying macro data precedes the full equity repricing.
API Access — Free for Researchers
The MRI is accessible via a REST API. A free API key gives you:
- Full historical dataset (2007–present)
- All 5 regions × 3 timeframes
- Performance metrics, drawdown series, year-by-year returns
- CSV export for backtesting
# No auth required — current regime for all regions
curl https://api.moneyfeel.ai/v1/current
As of today (April 22, 2026), the GLOBAL Weekly regime is BEAR at -0.553 — compression from the March lows, but still in stress territory.
Python Quickstart
pip install moneyfeel-mri
from moneyfeel import MRI
client = MRI("mf_live_YOUR_KEY")
# Current regime snapshot
current = client.current()
for r in current:
print(r["region"], r["regime_weekly"], r["score_weekly"])
# Full US Weekly history as DataFrame
df = client.history_df("US", "WEEKLY", from_date="2020-01-01")
print(df.tail())
# Performance metrics
m = client.metrics("US", "WEEKLY")[0]
print(f"Sharpe: {m['sharpe']} | CAGR: {m['cagr_strategy']}% | MaxDD: {m['max_dd']}%")
Output example:
GLOBAL BEAR -0.553
US BEAR -0.612
EU NEUTRAL 0.041
ASIA BEAR -0.441
EM BEAR -0.388
R Integration
library(httr2)
key <- "mf_live_YOUR_KEY"
base <- "https://api.moneyfeel.ai/v1"
resp <- request(base) |>
req_url_path_append("history") |>
req_url_query(region = "US", tf = "WEEKLY", from = "2020-01-01") |>
req_headers(Authorization = paste("Bearer", key)) |>
req_perform() |>
resp_body_json()
df <- do.call(rbind, lapply(resp$data, as.data.frame))
head(df)
API Endpoints Reference
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| GET | /v1/status |
No | Health check |
| GET | /v1/current |
No | Current regime, all regions |
| GET | /v1/history |
Yes | Historical regime series |
| GET | /v1/regime/latest |
Yes | Latest record for region+tf |
| GET | /v1/metrics |
Yes | Strategy KPIs (Sharpe, CAGR, MaxDD) |
| GET | /v1/timeseries |
Yes | Daily strategy vs benchmark |
| GET | /v1/eoy |
Yes | Year-by-year returns |
| GET | /v1/drawdowns |
Yes | Top 10 drawdowns |
| GET | /v1/download |
Yes | Full CSV export |
Rate limits: 30 req/min, 2,000 req/day (free tier).
Get Your Free API Key
- Register at moneyfeel.it — no credit card required
- Go to your account page
- MRI API Access → Generate API Key
→ GitHub Repository
→ PyPI Package
→ Live Dashboard
Citation
If you use MRI data in research or publications:
moneyfeel (2026). Macro & Geopolitical Risk Index (MRI). moneyfeel.it.
Retrieved from https://moneyfeel.it/dashboard/macro-risk-index/Iacoviello, M. (2022). Measuring Geopolitical Risk.
American Economic Review, 113(4), 1194–1225.
License: CC BY-NC 4.0 — free for research and non-commercial use.
Originally published on Medium

Top comments (0)