Methodology
How the score and the forecasts are built
1. Indicators and weights
Five indicators, each carrying an equal 30% weight. Equal weighting is a deliberate choice: any other split would imply a precision about the relative importance of these factors that the data does not support.
| Indicator | Weight | Normalisation (0 = least risk, 100 = most risk) |
|---|---|---|
| Inflation | 30% | Absolute deviation of headline CPI inflation from a 2% price-stability anchor. 0pp deviation = 0 risk, 15pp deviation or more = 100 risk. Higher inflation raises risk; deflation is penalised as well. |
| Unemployment | 25% | Headline unemployment rate. 3% = 0 risk, 20% or more = 100 risk. Higher unemployment always raises risk. Headline rates understate informal employment and underemployment. |
| GDP Growth | 20% | Real GDP growth. +6% or more = 0 risk, -6% (deep contraction) = 100 risk. Weaker or negative growth raises risk. |
| Interest Rate | 15% | Central-bank policy / short-term interest rate where published, otherwise the domestic lending rate. 2% = 0 risk, 25% or more = 100 risk. Unusually high rates restrict credit and raise debt-service cost. |
| GDP per Capitastructural factor | 10% | GDP per capita in current USD on a logarithmic scale: 80,000 USD = 0, 1,000 USD = 100. A structural buffer rather than a cyclical signal — richer economies absorb shocks better, so a low value raises structural vulnerability, not the probability of a near-term crisis. |
2. Composite score and bands
Each indicator value is clipped to its scale and mapped linearly (logarithmically for GDP per capita) to a 0–100 sub-score. The composite score is the weighted mean of the available sub-scores:
score = Σ (weight_i × subScore_i) / Σ weight_i (over indicators with a published value)
If an indicator has no published value, its weight is removed from the denominator rather than being filled with an assumption, and the country page shows the resulting data coverage. Bands are fixed:
- 0–20 Very Low
- 20–40 Low
- 40–60 Moderate
- 60–80 High
- 80–100 Very High
- 0–20 Very Low — bands are thresholds on the composite score only; they are not a rating, a credit opinion or a default probability.
- 20–40 Low — bands are thresholds on the composite score only; they are not a rating, a credit opinion or a default probability.
- 40–60 Moderate — bands are thresholds on the composite score only; they are not a rating, a credit opinion or a default probability.
- 60–80 High — bands are thresholds on the composite score only; they are not a rating, a credit opinion or a default probability.
- 80–100 Very High — bands are thresholds on the composite score only; they are not a rating, a credit opinion or a default probability.
3. The forecasting model
- 1. Take the 8 most recent published observations of the series (minimum 4 needed to forecast at all).
- 2. Fit an ordinary least-squares trend line over those points.
- 3. Blend the fitted slope with recent momentum (the average change over the last three points) at a weight of 0.45, so a change of direction is picked up faster than a plain trend would allow.
- 4. Damp the slope geometrically over the horizon (0.82h), because macro series mean-revert instead of extrapolating linearly.
- 5. Set the uncertainty band from the residual standard deviation of the fit, widened with the square root of the horizon and floored so that a flat series still publishes an honest range (≈80% interval, z = 1.28).
- 6. Publish 3 periods ahead at the series' own publication frequency — a quarterly indicator never gets invented monthly points.
The risk score is then recomputed on the forecast values to produce the forward risk score. GDP per capita is held flat over that horizon because it is an annual structural measure.
Accuracy is measured by walk-forward back-testing: for each evaluated period the model is re-fitted using only the observations available before it, then compared with the value later released. MAE and RMSE come from those comparisons — the same function that produces the published forecasts produces the error record, so the numbers cannot flatter the model.
4. Data sources
Indicator values are retrieved automatically from World Bank Open Data, FRED — Federal Reserve Bank of St. Louis, OECD SDMX (Key Economic Indicators). World Bank is the primary source; FRED and OECD supply short-term interest rates where a policy or money-market rate is published. Every series carries its own source, provider series identifier, frequency and retrieval time on the country page. Nothing is ever interpolated: an unpublished period is shown as unavailable. Last refresh 2026-08-22 14:25 UTC.
| Country | Data status | Primary sources |
|---|---|---|
| 🇺🇸 United States | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇨🇳 China | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇩🇪 Germany | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇯🇵 Japan | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇬🇧 United Kingdom | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇮🇳 India | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇫🇷 France | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇮🇹 Italy | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇷🇺 Russia | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇧🇷 Brazil | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇨🇦 Canada | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇦🇺 Australia | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇲🇽 Mexico | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇪🇸 Spain | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇰🇷 South Korea | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇹🇷 Turkey | 80% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; No source available |
| 🇮🇩 Indonesia | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇳🇱 Netherlands | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇸🇦 Saudi Arabia | 80% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; No source available |
| 🇨🇭 Switzerland | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇵🇱 Poland | 80% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; No source available |
| 🇮🇪 Ireland | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇧🇪 Belgium | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇸🇪 Sweden | 80% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; No source available |
| 🇮🇱 Israel | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇦🇷 Argentina | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇸🇬 Singapore | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇦🇹 Austria | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇦🇪 United Arab Emirates | 80% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; No source available |
| 🇳🇴 Norway | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇹🇭 Thailand | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇨🇴 Colombia | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇻🇳 Vietnam | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇲🇾 Malaysia | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇵🇭 Philippines | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇧🇩 Bangladesh | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇩🇰 Denmark | 80% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; No source available |
| 🇷🇴 Romania | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇭🇰 Hong Kong SAR | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇨🇿 Czechia | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇪🇬 Egypt | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇨🇱 Chile | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇵🇰 Pakistan | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇵🇪 Peru | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇵🇹 Portugal | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇳🇬 Nigeria | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇰🇿 Kazakhstan | 80% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; No source available |
| 🇫🇮 Finland | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇩🇿 Algeria | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇬🇷 Greece | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; FRED |
| 🇮🇷 Iran | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇳🇿 New Zealand | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇭🇺 Hungary | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇮🇶 Iraq | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇺🇦 Ukraine | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇶🇦 Qatar | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇨🇺 Cuba | 60% indicator coverage · retrieved 2026-08-22 14:19 UTC | No source available; World Bank |
| 🇲🇦 Morocco | 80% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank; No source available |
| 🇺🇿 Uzbekistan | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
| 🇰🇼 Kuwait | 100% indicator coverage · retrieved 2026-08-22 14:19 UTC | World Bank |
5. Limitations
- Five indicators cannot capture public debt, current-account balances, reserves, banking fragility, commodity dependence or political risk. A low score is not a clean bill of health.
- Headline unemployment understates informal employment and underemployment, which matters more in some tracked economies than others.
- Release calendars differ, so the latest value for two countries can refer to different months or quarters. Every value shows its own period.
- GDP per capita in current dollars is affected by exchange-rate moves, so a currency depreciation can lower it without any change in domestic output.
- The model is a statistical extrapolation with no knowledge of policy decisions or events. Turning points arrive late.
- Snapshot datasets are refreshed manually. Until a country is marked as a live feed, its values are only as current as the stated compilation date.