How accurate are we?
Our own scores, updated from our evaluation files each time this page loads. We show the weak results too.
Indicative only. Not for safety or operational decisions.
River rise outlook: plain-language scores
Our 7-day rise outlook says how likely the river is to rise by a set amount within 7 days. We tested it on past years it never saw during building (held-out years), and compared it with two simple guesses: the seasonal average for that time of year, and no change (assume today's trend continues).
In short
- At the gauges we show publicly, the outlook did better than both simple guesses on past years. It still misses some rises and gives false alarms.
- A 30% chance means rises happened about 3 times in 10 on similar past days, not that one will happen.
- Live scoring has started: 8 outlooks issued, 0 checked so far. Results will appear as each week ends.
Hit rate
False alarms
Gauge by gauge
| Gauge | Hit rate | False alarms | Skill vs seasonal average | Skill vs no change | Days tested |
|---|---|---|---|---|---|
| Chiang Saen | 60% | 52% | better (+0.10) | better (+0.16) | 2123 |
| Vientiane | 68% | 39% | better (+0.21) | better (+0.31) | 2123 |
| Khong Chiam | 83% | 36% | better (+0.30) | better (+0.43) | 2123 |
| Pakse | 79% | 40% | better (+0.25) | better (+0.39) | 2108 |
| Stung Treng | 77% | 38% | better (+0.27) | better (+0.39) | 2120 |
| Kratie | 84% | 29% | better (+0.33) | better (+0.44) | 2123 |
| Tan Chau (tidal) | 73% | 24% | better (+0.48) | better (+0.54) | 2062 |
| Chau Doc (Bassac) (tidal) | 65% | 28% | better (+0.42) | better (+0.47) | 2062 |
Skill is the Brier skill score: above 0 means better than that simple guess, 0 means no better. Hit rate and false alarms use a 50% cut-off.
Caveats
- Tidal gauges (Tan Chau, Chau Doc): we answer an easier question there, whether the 15-day average level rises, and 8 of those 15 days are already known when we forecast. Compare them only with the matching simple guess, not with other gauges.
- Older upstream dam signals were weak. Across our towns, 410 older signals were checked: a rise followed 163 times and did not 247 times (about 40%). That is close to a coin flip, so treat them as a prompt to look, not a forecast.
- Past performance on held-out years does not guarantee future performance. Dam operations and rainfall can change quickly.
- Gauges marked "not public" did not pass our pre-registered test, so their outlooks are not shown on town pages.
- This is not an official warning service. Follow your national agency and local authorities.
- We show summary scores only. Gauge data © Mekong River Commission; we do not republish it here.
Satellite and dam tools (technical)
1. Satellite area vs satellite height (SWOT)
Correlation (r) between our radar-measured reservoir area and independent NASA/CNES SWOT water heights, same months. 1 = perfect, 0 = no relation.
SWOT data from mid-2023 onward; latest data month 2026.
| Dam | r | Meaning |
|---|---|---|
| Xiaowan | 0.85 | good |
| Dachaoshan | 0.62 | fair |
| Nuozhadu | 0.34 | weak |
| Manwan | 0.29 | weak |
| Jinghong | 0.03 | no useful match |
| Aswan | 0.24 | weak |
| GERD | — | Not in the SWOT lake database yet, so no score. |
2. Rain-to-river backtest: 0 of 13 sites pass
Can upstream rainfall predict next month's reservoir change? Model trained 2017-2022 and tested once on 2023-2026, with a pass bar set before testing.
Pass bar: skill ≥ 0.2 and r ≥ 0.5 on ≥ 24 test months. Train 2017-01–2022-12, test 2023-01–2026-12. Built 2026-10-31. Skill = 1 − error of model ÷ error of "normal for this month".
| Site | Skill | r | Test months | Result |
|---|---|---|---|---|
| Xiaowan | 0.09 | 0.30 | 46 | ❌ fail |
| Manwan | 0.18 | 0.43 | 46 | ❌ fail |
| Dachaoshan | 0.07 | 0.50 | 46 | ❌ fail |
| Nuozhadu | 0.02 | 0.14 | 46 | ❌ fail |
| Jinghong | 0.05 | 0.37 | 46 | ❌ fail |
| Tonlé Sap (lake catchment) | -0.22 | -0.07 | 44 | ❌ fail |
| Nam Theun 2 | -0.10 | 0.09 | 46 | ❌ fail |
| Nam Ngum 1 | 0.01 | 0.12 | 46 | ❌ fail |
| Theun-Hinboun Expansion (Nam Gnouang) | -0.04 | 0.03 | 46 | ❌ fail |
| Chiang Saen (river width site) | -0.09 | 0.29 | 46 | ❌ fail |
| Pakse (river width site) | 0.01 | 0.10 | 46 | ❌ fail |
| Kratie (river width site) | 0.06 | 0.24 | 46 | ❌ fail |
| GERD | 0.04 | 0.22 | 46 | ❌ fail |
| Aswan (Lake Nasser) | — | — | 39 | not enough data |
Because no site passes, rain-based alerts stay off and rainfall views are labelled low confidence.
3. Experimental risk score backtest
Experimental drought score, tested out of sample from 2023-01: (a) does it agree with SWOT low water (Spearman), (b) does it predict next month better than 'same as this month' (lower error is better)?
Built 2026-10-31. Beats persistence at 2 of 5 dams; significant positive SWOT agreement at 1 of 5.
| Dam | Test months | SWOT agreement | Error (score) | Error (persistence) | Better? |
|---|---|---|---|---|---|
| Xiaowan | 46 | 0.22 (p 0.176, n 39) | 0.964 | 1.083 | yes |
| Nuozhadu | 46 | 0.42 (p 0.007, n 39) | 0.904 | 0.883 | no |
| Manwan | 46 | -0.32 (p 0.178, n 19) | 1.235 | 1.191 | no |
| Dachaoshan | 46 | -0.11 (p 0.576, n 27) | 1.171 | 1.200 | yes |
| Jinghong | 46 | 0.17 (p 0.332, n 33) | 1.350 | 1.261 | no |
The risk score stays an experimental, login-only beta.
Method
- Water area: Sentinel-1 radar (and Sentinel-2 optical when clear) each month, inside a fixed water mask.
- Normal range: the same calendar month in 2017–2022.
- Every test uses months the model never saw; pass bars are set before testing.
- Full details: Methods & limits · Evidence · How satellites measure dams
Caveats
- Small dams (Manwan, Dachaoshan, Jinghong) are low confidence: their area changes little when the level changes.
- SWOT heights read 2-4 m low at low reservoir levels at some dams; the cause is unknown.
- Downstream forecast skill is about zero versus the normal for the month.
- Few test months and few events: every score here is indicative, not proof.
- Not for safety or operational decisions.
Alert hit rates scored against a licensed third-party reference are kept for internal review only and are not published.
Generated 2026-11-07T11:19:27+00:00 (UTC). Data: /api/accuracy
Live record (since release) separate from the backtest
Live = predictions as issued, scored only after their window closed. Separate from the held-out backtest. Nothing back-filled. Updated nightly.
7-day rise outlook (public gauges)
0 outlooks scored yet (8 waiting for their 7-day window to close)
Too few cases yet (0 scored; we need at least 30 before these numbers mean much). Treat them as anecdotes, not a track record.
Rain + rise heads-up (beta)
0 heads-up checks scored yet.
Too few cases yet (0 scored; we need at least 30 before these numbers mean much). Treat them as anecdotes, not a track record.