Climate indicators
- Base data: daily series from the Open-Meteo historical archive, based on the ERA5 reanalysis (maximum and mean temperature, precipitation, FAO-56 reference evapotranspiration), since 1991.
- Temperature anomaly: difference between the monthly mean and the 1991–2020 monthly normal. Very hot days: days when maximum temperature exceeds the 90th percentile for the same month.
- SPEI: water balance (precipitation minus evapotranspiration) accumulated over 1, 3, 6 and 12 months, fitted with a three-parameter log-logistic distribution for each month (Vicente-Serrano et al., 2010). For very dry months where this distribution does not fit, a normal distribution is used and flagged in the data.
- Limitations: regional values are computed at each region's representative point (regional capital); the national value is an unweighted mean of these points.
Climate risk and financial stress indices
Both indices use a weighted principal component analysis: variables are oriented so that higher values mean more risk, robustly scaled (median and interquartile range), the first two components are weighted by their variance shares (the second in absolute value), then normalised to [0, 100]. The financial stress index uses eight variables (bank solvency, non-performing loans, public debt, reserves, budget balance, current account, MASI growth, market capitalisation); the climate risk index uses three (temperature, precipitation, carbon intensity of GDP).
Parameters are estimated over 1998–2025 and then frozen: new years use the same parameters and the published history does not change. A year is computed only when all its components are available. The displayed level ("normal", "high"…) uses the 70th, 85th and 95th percentiles of the reference distribution; it is not an official alert threshold.
Note: Germanwatch publishes a different international index also called Climate Risk Index; it differs from this one in method and data.
Forecasts and scenarios
Forecasts: five models (naive, linear, SVR, random forest, gradient boosting) evaluated out of sample with an expanding window; each is compared with the naive model using the Diebold-Mariano test with the Harvey, Leybourne and Newbold correction. Scenarios: quantile regression and VAR(1) coefficients estimated over 1999–2025, shown as they are without re-estimation.
A good forecast does not measure the causal effect of one variable on another.
Advanced analytics
- FSI reading: random forest (500 trees, depth 3, hyperparameters fixed in advance) and exact Shapley values over all variable coalitions. Contributions describe how the model works, not a causal effect, and remain fragile with about thirty years.
- Atypical months: Isolation Forest (300 trees) on four seasonally adjusted variables (temperature anomaly, SPEI-1, SPEI-3, very hot days). A month is flagged if it is among the 3% most atypical in the region's history.
- News classification: semantic comparison using multilingual sentence embeddings (paraphrase-multilingual-MiniLM-L12-v2, run locally) against a short description of each theme, with no labelled examples. Summaries are extracted from the original text; no text is generated.
Extreme rainfall
For each region: series of seasonal (September to August) rainfall maxima over 1, 2, 3, 5, 10 and 30 days (and 1 to 24 hours from hourly data); Gumbel, GEV, log-normal and log-Pearson III distributions fitted by maximum likelihood and compared with AIC and BIC; depths for 2- to 100-year return periods with resampling confidence intervals; IDF curves from the Gumbel distribution. Atypical values are flagged with the box-plot rule and kept. ERA5 smooths intense rainfall: results are for comparison and risk monitoring, not for designing structures.
Projections and global context
- Projections 1991–2050: three CMIP6 HighResMIP models (EC_Earth3P_HR, MPI_ESM1_2_XR, MRI_AGCM3_2_S) via the Open-Meteo Climate API, with a single scenario close to RCP8.5 (high emissions) and linear bias correction towards ERA5-Land. No lower-emission scenario is available from this source.
- Morocco and the world: daily global mean air temperature (ERA5, Copernicus Climate Pulse) and the mean of 12 Mediterranean cities; anomalies relative to 1991–2020.
Economic data and update rules
- Annual indicators from the World Bank's World Development Indicators.
- Interest rates (including the Bank Al-Maghrib policy rate, IMF discount-rate series), share index, quarterly GDP, headline and food inflation: IMF SDMX API, daily. Climate-driven INFORM risk indicator, same source.
- Inflation in the 18 cities: the city table of the HCP monthly notes (PDF), read automatically. Year-on-year inflation = 12-month change in the index.
- City climate: same method as the regions (Open-Meteo archive, ERA5 reanalysis). Twelve cities are regional capitals and share their data; the other six have their own point.
- Morocco reports: HCP feed, AMMC and ACAPS pages, CESE feed and World Bank Documents & Reports API, daily. The Bank Al-Maghrib and Casablanca Stock Exchange websites refuse automated reading.
- Electricity: generation by source and demand (Ember, monthly since 2016). Degree-days per the Eurostat definition, weighted by regional population (2024 census). Demand sensitivity: regression with trend, month fixed effects and Newey-West errors. Bills: domestic low-voltage tariff; simulation with stated, editable assumptions.
- Bank credit and climate hazard: distribution of branches, deposits and credit by locality published by Bank Al-Maghrib, each locality being matched to its region using the 2024 census. This distribution is compared with a relative climate hazard index built from the site's indicators (heat, drought, extreme rainfall). A descriptive exposure measure that estimates neither losses nor causal effects.
- Climate daily, economy weekly. If a source fails, the site keeps the last valid value and logs the failure. No missing value is imputed.
Agreement and source status
Agreement between automatic sources and reference series
| Variable | Automatic source | n | Correlation | Mean absolute difference |
|---|---|---|---|---|
| BANK_SOLV | Saisie annuelle (Bank Al-Maghrib) | 0 | — | — |
| NPL | Saisie annuelle (Bank Al-Maghrib) | 0 | — | — |
| DEBT_GDP | Banque mondiale GC.DOD.TOTL.GD.ZS | 10 | 0.853 | 3.743 |
| RES_GDP | Banque mondiale FI.RES.TOTL.CD / NY.GDP.MKTP.CD | 28 | 0.678 | 2.087 |
| BUDGET_BAL | Banque mondiale GC.NLD.TOTL.GD.ZS | 25 | 0.507 | 1.499 |
| CURR_ACC | Banque mondiale BN.CAB.XOKA.GD.ZS | 28 | 0.986 | 0.127 |
| MASI_GROWTH | Saisie annuelle (Bourse de Casablanca) | 0 | — | — |
| MARKET_CAP | Banque mondiale CM.MKT.LCAP.GD.ZS | 16 | 0.988 | 0.425 |
| TEMP | Open-Meteo (ERA5), 28,5°N 10°O | 28 | 0.992 | 0.326 |
| P | Open-Meteo (ERA5), 28,5°N 10°O | 28 | 0.802 | 9.05 |
| CO2 | Banque mondiale EN.GHG.CO2.RT.GDP.PP.KD (t-1) | 28 | 0.995 | 0.044 |
Source status
| Source | Status | Last success | Detail |
|---|---|---|---|
| openmeteo | OK | 2026-11-06T15:03:29Z | |
| worldbank | OK | 2026-11-06T15:06:54Z | |
| components | OK | 2026-11-06T15:07:40Z | |
| barrages | OK | 2026-11-06T15:03:29Z | |
| news | Partial failure | 2026-10-30T10:55:11Z | bis_press: flux sans article lisible |
| air | OK | 2026-11-06T15:03:29Z | |
| sst | OK | 2026-11-06T15:03:30Z | |
| seasonal | OK | 2026-11-06T15:03:30Z | |
| heat_forecast | OK | 2026-11-06T15:03:28Z | |
| snow | OK | 2026-11-06T15:03:30Z | |
| projections | OK | 2026-11-06T15:06:50Z | 36/36 tranches |
| context | OK | 2026-11-06T15:03:32Z | |
| hourly_rain | OK | 2026-11-06T15:03:32Z | 35/35 saisons |
| basins | OK | 2026-11-06T15:03:32Z | |
| flood_rain | OK | 2026-11-06T15:06:49Z | |
| flood_river | OK | 2026-11-06T15:06:50Z | |
| cities | OK | 2026-11-06T15:03:33Z | |
| reports_ma | OK | 2026-11-06T15:03:37Z | |
| imf | OK | 2026-11-06T15:03:33Z | |
| hcp_ipc | Partial failure | 2026-10-25T23:31:35Z | 23 note(s) lue(s) ; 2022-11: tableau des villes incomplet (0 valeurs); 2022-06: note (PDF ou docx) introuvable; 2022-05: note (PDF ou docx) introuvable; 2022-04: note (PDF ou docx) introuvable; 2022-01: tableau des villes incomplet (0 valeurs); 2021-02: note (PDF ou docx) introuvable; 2021-01: note |
| ember | Partial failure | 2026-11-02T12:47:41Z | yearly: aucune ligne pour le Maroc |
| bam_localites | OK | 2026-11-06T15:10:11Z | |
| heatstress | OK | 2026-11-06T15:03:34Z | |
| era5_migration | OK | 2026-11-06T15:06:50Z | openmeteo fait, cities fait, heatstress fait, basins fait, hourly fait, snow fait, context fait |
| comtrade | OK | 2026-11-06T15:07:18Z | |
| era5_cities | OK | 2026-11-01T11:39:20Z | |
| era5_heatstress | OK | 2026-11-01T12:28:10Z | |
| era5_basins | OK | 2026-11-01T12:41:53Z | |
| barrages_bassins | OK | 2026-11-06T15:03:29Z | |
| hcp_ipc_national | OK | 2026-11-06T15:03:58Z | |
| era5 | OK | 2026-11-06T15:08:00Z | |
| era5_provinces | OK | 2026-11-06T15:08:44Z |