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

Chiang SaenOur outlook 60%60%Seasonal guess 68%68%VientianeOur outlook 68%68%Seasonal guess 72%72%Khong ChiamOur outlook 83%83%Seasonal guess 78%78%PakseOur outlook 79%79%Seasonal guess 79%79%Stung TrengOur outlook 77%77%Seasonal guess 78%78%KratieOur outlook 84%84%Seasonal guess 81%81%Tan ChauOur outlook 73%73%Seasonal guess 48%48%Chau Doc (Bassac)Our outlook 65%65%Seasonal guess 51%51%
Hit rate: share of real rises we flagged (higher is better)

False alarms

Chiang SaenOur outlook 52%52%Seasonal guess 62%62%VientianeOur outlook 39%39%Seasonal guess 53%53%Khong ChiamOur outlook 36%36%Seasonal guess 53%53%PakseOur outlook 40%40%Seasonal guess 56%56%Stung TrengOur outlook 38%38%Seasonal guess 57%57%KratieOur outlook 29%29%Seasonal guess 46%46%Tan ChauOur outlook 24%24%Seasonal guess 60%60%Chau Doc (Bassac)Our outlook 28%28%Seasonal guess 75%75%
False alarms: share of our flags with no rise (lower is better)

Gauge by gauge

GaugeHit rateFalse alarmsSkill vs seasonal averageSkill vs no changeDays tested
Chiang Saen60%52%better (+0.10)better (+0.16)2123
Vientiane68%39%better (+0.21)better (+0.31)2123
Khong Chiam83%36%better (+0.30)better (+0.43)2123
Pakse79%40%better (+0.25)better (+0.39)2108
Stung Treng77%38%better (+0.27)better (+0.39)2120
Kratie84%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.

DamrMeaning
Xiaowan0.85good
Dachaoshan0.62fair
Nuozhadu0.34weak
Manwan0.29weak
Jinghong0.03no useful match
Aswan0.24weak
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".

SiteSkillrTest monthsResult
Xiaowan0.090.3046❌ fail
Manwan0.180.4346❌ fail
Dachaoshan0.070.5046❌ fail
Nuozhadu0.020.1446❌ fail
Jinghong0.050.3746❌ fail
Tonlé Sap (lake catchment)-0.22-0.0744❌ fail
Nam Theun 2-0.100.0946❌ fail
Nam Ngum 10.010.1246❌ fail
Theun-Hinboun Expansion (Nam Gnouang)-0.040.0346❌ fail
Chiang Saen (river width site)-0.090.2946❌ fail
Pakse (river width site)0.010.1046❌ fail
Kratie (river width site)0.060.2446❌ fail
GERD0.040.2246❌ fail
Aswan (Lake Nasser)——39not 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.

DamTest monthsSWOT agreementError (score)Error (persistence)Better?
Xiaowan460.22 (p 0.176, n 39)0.9641.083yes
Nuozhadu460.42 (p 0.007, n 39)0.9040.883no
Manwan46-0.32 (p 0.178, n 19)1.2351.191no
Dachaoshan46-0.11 (p 0.576, n 27)1.1711.200yes
Jinghong460.17 (p 0.332, n 33)1.3501.261no

The risk score stays an experimental, login-only beta.

Method

Caveats

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.