Anatomy of the GeoPulse composite index: how to summarise the markets in a single 0–100 score
When you open the GeoPulse dashboard, the first thing you see is a circular gauge with a number: the composite index. A 0-to-100 score meant to tell you, at a glance, where markets stand between panic and euphoria.
It's tempting to treat that score as a black box. We prefer to open it. Here's exactly what it's made of, how we compute it, and why we made these choices rather than others.
What the number represents
Inverted scale, like the classic Fear & Greed:
- 0–20: Extreme Fear — the contrarian's buy signal
- 20–40: Fear — significant tensions, elevated volatility
- 40–60: Neutral — normal conditions
- 60–80: Greed — appetite for risk, complacency
- 80–100: Extreme Greed — caution warranted, possible excess
The score does not tell you what to buy. It tells you which market regime you're in — and which past regime today's conditions most resemble.
The five sub-scores and their weights
The composite is a weighted average of five independent components. We publish the exact weights:
| Component | Default weight | What it captures |
|---|---|---|
| Geopolitical calm | 25% | International tensions, conflicts, sanctions (inverted risk scale) |
| Sentiment | 20% | Crypto Fear & Greed + CNN Fear & Greed |
| Financial stress | 20% | VIX, NFCI, 2y/10y yield curve |
| Cross-asset momentum | 20% | % of assets up over 24h |
| Abnormal volatility | 15% | Dispersion of daily moves |
Why these weights specifically? Because we observed, in backtests, that geopolitics is the dominant driver of extreme regimes (25% reflects that role), and that pure volatility, while informative, is too noisy to weigh more without distorting the signal (hence 15%).
These are documented choices, not constants set in stone. If market behaviour changes structurally, the weights will too.
Sub-score 1: Geopolitical calm (25%)
We start from the raw geopolitical risk (0–10 scale) computed by aggregating our scored events (NLP + rules-based) over recent days. An event like "Russia announces nuclear escalation" scores high; "successful diplomatic summit" scores low.
To align with the global index direction (where 100 = greed, 0 = fear), we invert the scale in the composite. Hence the "Geopolitical calm" label on the dashboard, which is the mirror of risk.
Formula: score = (10 - raw_risk) × 10. Geopolitical risk of 10/10 yields 0 (extreme fear); 0/10 yields 100 (greed).
It's the most qualitative component, so the most exposure-prone to error. We weight it heaviest anyway, because in practice it's what precedes major reversals (2008 was not foreseen by volatility; the Ukraine invasion was foreseen by geopolitical indicators as early as November 2021). The raw risk remains shown separately in the "Geopolitical risk" panel of the dashboard if you'd rather think on the non-inverted scale.
Sub-score 2: Sentiment (20%)
Average of two widely followed indicators:
- Crypto Fear & Greed (alternative.me) — derived from volumes, momentum, Google trends, BTC dominance
- CNN Fear & Greed — built on 7 technical sub-indicators of US equity markets
We don't reconstruct these indicators from scratch. We aggregate the outputs of two recognised providers, because recomputing them locally would add no value.
Edge case: if one of the two is unavailable, we use the other alone. We don't fabricate an artificial median.
Sub-score 3: Financial stress (20%)
The most "quantitative" component, aggregating three well-established stress signals:
VIX (S&P 500 implied volatility):
stress = 100 - (VIX - 10) × 2.7
→ VIX at 10 → stress = 100 (extreme calm)
→ VIX at 25 → stress ≈ 60 (moderate tension)
→ VIX at 40 → stress = 19 (panic)
NFCI (Chicago Fed National Financial Conditions Index):
- NFCI > 0 → tight conditions → -15 points
- NFCI between -0.3 and 0 → mildly tight → -5 points
- NFCI < -0.3 → accommodative conditions → +5 points
2y/10y curve:
- Inverted (spread < 0) → -20 points (historic recession signal)
- Flattened (spread between 0 and 0.3%) → -10 points
- Normal → no penalty
Methodological note: the 2y/10y curve isn't a perfect oracle. It inverted in 2022 without an immediate 2023 recession. But it remains one of the empirically most robust signals over 50 years of US data. We keep it, weighted so it doesn't dominate alone.
Sub-score 4: Cross-asset momentum (20%)
The question is simple: of the assets we track, how many are up over the last 24 hours?
Formula: (# assets up / # active assets) × 100.
A non-trivial detail: we exclude assets whose feed is frozen (24h change exactly 0). On weekends, TradFi markets (S&P, gold, VIX, DXY, etc.) have no new data — Yahoo returns Friday's last quote. If we counted them as "not up", the momentum score would collapse artificially to 16–25% every weekend.
So we only count assets with a live signal — typically BTC and ETH on weekends, and all 12 assets on weekdays.
This kind of technical detail is the difference between an indicator that works 5 days a week and one that works permanently.
Sub-score 5: Abnormal volatility (15%)
Average of the absolute 24h moves across all assets:
vol = mean(|24h_change_i|)
score = 80 - vol × 14
clamped between 10 and 80
- Average move of 0% → score 80 (calm)
- Average move of 2% → score 52 (tensions)
- Average move of 5%+ → score 10 (extreme vol)
Why only 15% weight? Because volatility can be symmetric — a big rally and a big crash both produce strong absolute volatility, but they don't tell the same story. Momentum (sub-score 4) complements by giving direction.
What the index does not do
Transparency obliges us to spell out its limits:
- It doesn't predict: it's a regime indicator, not an entry/exit signal. A score of 15 ("extreme fear") means current conditions resemble historical extreme-fear moments — not that the market will bounce tomorrow.
- It smooths: aggregating five components dampens the signal. A violent move on a single component can be diluted by stability in the others. That's why we also display individual sub-scores — you can click each to see its history.
- It's retrospective: the data consumed is minutes to hours old depending on the asset. The index reflects the recent past, not the exact present.
How to use it
A few rules we apply ourselves:
- Don't just look at the global number. Look at which components diverge. A composite of 45 with a geopolitical sub-score of 20 and momentum of 75 tells a different story than a composite of 45 where everything sits at 45.
- Extremes are more informative than middle zones. A score of 10 or 90 deserves attention; a score of 52 is noise.
- Compare to historical context. On the dashboard, the composite history is one click away — that's where the magic happens. "The score is at 22" means something completely different if last week it was at 60 versus if it's been at 22 for three months.
Calibrate the composite to your style (Premium)
The 25/20/20/20/15 weights are our default, calibrated on historical market behaviour. But your reading may differ: an options trader prioritises volatility, a macro investor looks at the yield curve first, a geopolitical investor wants risk in the lead.
Since version 1.8, Premium subscribers can adjust the five weights individually from the /account area. Five sliders, sum-to-100% constraint, and a live preview of the recomputed score: you see immediately how the current composite would shift from 52 to 48 if you gave 35% to financial stress instead of 20%.
Same formula, same engine — you only touch your own reading. Your custom weights don't modify the public index; they create your alternative composite, computed in real time on the same data.
See the composite live
The index recomputes every hour from the freshest data available. You can consult it, alongside its five sub-scores, directly from the dashboard. Each sub-score is clickable: you see its evolution over recent weeks and the regime it's currently in.
Transparency is a form of discipline. Publishing the methodology forces us to stay consistent with it — and gives you the tools to judge for yourself whether our reading of the markets makes sense.
GeoPulse
Follow the markets in real time
GeoPulse correlates geopolitical events with financial markets using AI analysis of every event.
Create a free account