Transparency · Open data

How we forecast the flow of the Semois

Behind every real-time gauge and every few-day forecast lies a transparent hydrological model. Here, with no black box, is how it works : its data, its formula, and above all its limits.

Most kayak websites simply display a flow figure, without saying where it comes from or how a forecast is obtained. We do the opposite : out of a concern for transparency, and because information on which you stake your safety must be verifiable, we document here, step by step, the model that feeds our river dashboards. This model does not replace judgement : it helps anticipate a trend, never to decide in your place.

The input data: nothing invented

Our model creates no data : it combines existing measurements. Two sources feed it :

  • The flow measured at a station, published by the Public Service of Wallonia (SPW) through its hydrometric network. It is the reference, official figure, which we archive day after day in our database.
  • The precipitation forecast over the catchment, with a reliability index specific to each forecast day.

From these two ingredients, the model estimates how the flow will evolve over the coming days. The physical principle is simple : without rain, a river slowly returns towards its seasonal average ; with rain, it rises all the more strongly when its basin is already wet. The whole job consists of quantifying these two movements honestly.

Step 1 — The historical baseline

First we compute the « normal » flow of the moment, from the measured history. We take the average of the last 60 days (M₆₀) and the average of the last 7 days (M₇), then combine them by weighting the recent trend heavily :

baseline = (M₆₀ + 2 × M₇) / 3

Why this double weight on the last 7 days ? Because a mid-mountain river changes regime as the seasons pass. By weighting towards the recent, the baseline stays responsive to transitions (snowmelt, a drought settling in, the return of the rains) without over-reacting to an isolated spike, which the long average smooths out. Only plausible values (flow between 0.5 and 200 m³/s) enter the calculation, to exclude sensor artefacts.

Step 2 — Basin wetness

The same rainfall does not produce the same effect depending on whether the soil is dry or saturated. On a dry basin, the water infiltrates and the flow barely moves ; on an already soaked basin, it runs off and the flow climbs quickly. We estimate this state with a wetness modulator, computed as the ratio between the current flow and the baseline, clamped between 0.5 and 1.5 :

wetness (w) = clamp( current_flow / baseline , 0.5 , 1.5 )

This modulator then adjusts the runoff coefficient K, which translates a depth of rainfall into a rise in flow. It starts from a reference value (0.5) multiplied by the wetness, then is itself clamped between a floor (0.2, dry basin) and a ceiling (0.9, saturated basin) :

K = clamp( 0.5 × w , 0.2 , 0.9 )

Step 3 — Runoff from the forecast rainfall

Rain does not turn into flow instantly : there is a basin response time. We model it with a simple lag : the flow on a given day responds 60% to that day's rain and 40% to the previous day's. The whole is weighted by K (the wetness coefficient) and by the reliability of that day's weather forecast :

runoff = ( rain_day × 0.60 + rain_prev × 0.40 ) × K × reliability

In practice : the stronger and more reliable the rain forecast, and the wetter the basin, the larger the expected rise in flow. And if the weather forecast is uncertain, its influence is automatically reduced : we do not make a piece of data say more than it is worth.

Step 4 — The return to the average

In the absence of rain, a river does not stay frozen : it gradually drops back towards its average. We model this decay with a factor of 0.75 applied each day to the gap between the previous day's flow and the baseline :

decayed_flow = baseline + ( flow_prev − baseline ) × 0.75

In other words, each day without rain, the flow closes roughly a quarter of the gap separating it from its normal value. A flood thus subsides over a few days, a low-water level rises gently : this is the behaviour actually observed on the Semois.

Step 5 — The final forecast, clamped by reality

The forecast for a day is the sum of the decayed flow (return to the average) and the runoff (rainfall input). But we do not let it diverge : it is clamped by physical limits calibrated on the official navigability thresholds of each river — a floor (half the minimum threshold) and a ceiling (double the maximum threshold) :

forecast_flow = clamp( decayed_flow + runoff , floor , ceiling )

An essential detail : the value for the current day itself is never a forecast. It is always the latest actual measurement from the SPW station. The model applies only to the following days. On our dashboards you can therefore always distinguish what is measured from what is estimated.

A concrete example

Take a Semois whose baseline at the moment is 8 m³/s, with a current flow of 10 m³/s (the river is slightly above its average, a sign of a fairly wet basin). The wetness modulator is 10 / 8 = 1.25, which raises the runoff coefficient to K = 0.5 × 1.25 = 0.63. Tomorrow 15 mm of rain is forecast with a reliability of 80%, after 5 mm today.

The next day's calculation unfolds as follows : the decayed flow brings the 10 m³/s back towards the baseline → 8 + (10 − 8) × 0.75 = 9.5 m³/s. The runoff adds (15 × 0.60 + 5 × 0.40) × 0.63 × 0.80 ≈ 5.5 m³/s. The next day's forecast is therefore about 15 m³/s (9.5 + 5.5), well within the navigability bounds. The day after, if the rain stops, decay takes over again and the flow drops gently back towards 8. Every number is traceable : that is the whole point of a legible model.

Why a simple model rather than an « AI »?

It would be tempting to stack an opaque neural network on top of this data. We made the opposite choice, and it is deliberate. A physical and interpretable model has three decisive advantages in a safety context : it is explainable (each output is justified by a formula), it fails predictably (we know why it is wrong — usually a bad rain forecast), and it stays robust even with a limited history, where a learned model would require years of data and could hallucinate aberrant values.

Each coefficient — the 1/3-2/3 weighting of the baseline, the 0.75 decay factor, the 60/40 split of the runoff — has a physical meaning and can be discussed, adjusted, audited. In our eyes, that is the condition for information on which one accepts to stake the safety of paddlers. Sophistication is not an end in itself : verifiable reliability is.

Archiving: the memory of the river

The whole model rests on one condition : having a clean history of the flow. At each refresh, we record the SPW measurement in our tables (etat_navigation_semois, and the equivalent for each river), keeping only physically plausible values. This memory, built day after day, is what allows us to compute a representative baseline and to adapt the model to the particularities of each watercourse. Without it, no serious forecast would be possible : a river can only be understood over time.

These archived data also feed our threshold tables and our open exports. The loop is virtuous : the richer the history, the more accurate the baseline, and the more the forecast matches the actual behaviour observed in the field.

The limits, stated honestly

No model predicts a river's future for certain, and to claim otherwise would be dangerous. Here is what ours does not do : it does not capture the very localised storms that can swell a tributary within hours ; it depends entirely on the quality of the weather forecast, whose uncertainty grows with the horizon ; it ignores structure operations (dams, sluices) and certain snowmelt phenomena. That is why its reliability is excellent at 24 h and degrades beyond that.

Our golden rule, which we repeat everywhere : you book on a trend, you paddle on a measurement. The forecast serves to plan an outing and to avoid a pointless trip ; the final decision to put in is always taken on the actual flow of the day and the official navigation status. And if conditions are not met, our cancellation policy protects you.

We also resist the temptation to over-promise precision. A forecast expressed to the nearest tenth of a cubic metre per second can give a false sense of certainty ; in reality the meaningful information is the direction and magnitude of the change — is the river rising sharply, drifting back to normal, or holding steady? That is why our dashboards favour a readable trend over a spurious decimal, and why we always pair the number with a plain-language navigation status. Honesty about uncertainty is, in our view, part of the safety message itself : a paddler who understands that a three-day forecast is indicative, not guaranteed, makes better decisions than one lulled by a falsely precise figure.

Why publish this method?

Because trust is built on transparency. When it comes to safety, an opaque figure is worth nothing : you must be able to know where it comes from and what it is worth. By documenting our model, we let everyone — paddler, rescuer, journalist, fellow operator — understand, verify and challenge our work. This approach extends our commitment to open data around the official SPW thresholds, already published and exportable.

This model is improvable and keeps evolving with the seasons and field observations. It is the fruit of years of paddling on the Semois and of a daily monitoring of the region's hydrological data — know-how that we put freely at the service of your safety.

How to read the forecast on our dashboards

On each river dashboard, the forecast can be read in seconds. The value for the day, highlighted, is the latest SPW measurement : it is the one that counts. The following days show the estimate produced by the model : there you see the trend — flow rising after forecast rain, stabilising, or dropping back towards the average. A forecast that crosses a navigability threshold is flagged, to warn you that a window is opening or closing.

The right reflex : use the forecast to choose the best day of the week and avoid a trip when the trend is clearly unfavourable, then confirm on the morning itself against the actual flow. Always cross-check this reading with the water temperature and the weather of the day : together, these three pieces of information — flow, temperature, sky — give you a complete and honest picture of the coming conditions, without ever replacing your own caution.

Frequently asked questions

How is the flow forecast calculated?

We combine a historical average of the flow (60 days, weighted towards the last 7) with the estimated runoff from forecast rainfall, modulated by basin wetness, then clamped by the physical thresholds. The value for the day stays the actual measurement.

What data is it based on?

On the flow measured at a station by the SPW (archived) and on precipitation forecasts, weighted by their reliability. No invented data.

Is it 100% reliable?

No. It is an estimate, excellent at 24 h, that degrades beyond and ignores very localised storms and structure operations. You book on a trend, you paddle on a measurement.

Does it work for the other rivers?

Yes: Semois, Lesse, Ourthe, Amblève, with their own parameters (thresholds, history). The bounds are calibrated on the official SPW thresholds of each river.

See the model at work

Measured flow, forecast trend and navigation status, in real time on our dashboards.

📊 Semois dashboard

★★★★★ 🏆 KSA 🏆

Noté 4.6/5 sur 1282 avis

Google Reviews

Recommended Business
4.6
Based on 1,282 reviews