« A perfect family day on the Semois. The welcome at Kayak Belgique is warm, the equipment is spotless (the kayaks are modern and clean), and the free shuttle system is superbly organised. A must-visit in the Ardennes! »
How we calculate flow, comfort and difficulty
Behind every real-time gauge lie three calculations : the few-day flow forecast, thermal comfort (windchill, hypothermia risk) and the navigation difficulty score. Here, with no black box, is how they work : their data, their formulas, and above all their 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 three models that feed our river dashboards : the flow forecast, the Thermal Comfort Index and the Difficulty Score. These models do not replace judgement : they help anticipate a trend, never decide in your place.
Part 1 — The flow forecast
Let's start with the most structuring calculation : estimating how a river's flow will evolve over the coming days.
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 :
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 :
This modulator then adjusts the runoff coefficient K, specific to each river, which translates a depth of rainfall into a rise in flow. It starts from a reference value K_base multiplied by the wetness, then is itself clamped between a floor (dry basin) and a ceiling (saturated basin) :
Update of 26 August 2026 : we recalibrated K_base, K_dry and K_saturated river by river from our own history of measured flow (several months of readings every 15 minutes). The generic values used until then overestimated the rise in flow by a factor of 5 to 9 compared with what was actually observed after a comparable rain event : we divided them by roughly 7, and differentiated them by catchment size and the intrinsic responsiveness of each watercourse (the Amblève, more deeply incised, reacts faster than the Viroin, for instance). A daily rise cap was also added, calculated on the real 97th percentile of the variations observed on each river : even if a weather forecast announces exceptional rain, the model can no longer run away beyond what has already been seen in our data.
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 :
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 :
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) :
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 1.3 m³/s (late summer, low water), with a current flow of 1.3 m³/s (Semois K_base = 0.07). The wetness modulator is 1.3 / 1.3 = 1.0, giving a runoff coefficient K = 0.07 × 1.0 = 0.07. Tomorrow 16 mm of rain is forecast with a reliability of 75%, after 3.5 mm today.
The next day's calculation unfolds as follows : the decayed flow stays close to the baseline → 1.3 + (1.3 − 1.3) × 0.75 = 1.3 m³/s. The runoff adds (16 × 0.60 + 3.5 × 0.40) × 0.07 × 0.75 ≈ 0.64 m³/s. The next day's forecast is therefore about 1.9 m³/s (1.3 + 0.64) — a noticeable but realistic rise, compared with the old coefficients which, for this same scenario, would have announced more than 4 m³/s. Every number remains traceable : that is the whole point of a legible model.
The self-learning loop: measuring our own errors
A transparent model must also be verifiable over time. Every forecast we publish is archived (calculation date, target day, forecast rain, predicted flow) in our database. Every night, we compare the previous day's forecasts against the actually measured flow for that day, and record the gap. This memory of our own errors is what allowed us to identify, in mid-August 2026, the optimistic bias corrected above : without it, we would have had no objective way to know that the model was wrong, nor by how much. It is also what will let us keep refining each coefficient in the coming months as the history grows.
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.
Part 2 — Thermal comfort (windchill)
A favourable flow says nothing about the feel on the water. In a cool wind, the sensation of cold can be far more severe than the thermometer suggests : this is what's called windchill. We use the official wind chill formula adopted by weather services (the same one used by Environment Canada), which combines air temperature and wind speed :
else : felt = 13.12 + 0.6215×T − 11.37×V^0.16 + 0.3965×T×V^0.16
Below 4.8 km/h, the wind's effect on heat loss is considered negligible : the felt temperature simply equals the air temperature. Above that, the formula reflects a real physical phenomenon : the wind strips away the thin layer of air warmed by the body, speeding up heat loss. Example : at 12°C with 25 km/h of wind, the felt temperature drops to around 8.3°C — a gap of nearly 4 degrees that concretely changes the gear you need.
This felt temperature is only half the equation : we cross it with the actual water temperature, measured at the station, to determine a risk level and matching equipment advice :
- High hypothermia risk — felt temperature below 0°C or water below 8°C : full neoprene wetsuit mandatory, outing reserved for equipped experts.
- Cold water — felt temperature below 8°C or water below 12°C : life jacket mandatory, caution recommended.
- Storm reported : paddling not advised regardless of temperatures.
- Correct conditions — felt temperature below 15°C : standard gear, life jacket recommended.
- Ideal conditions — above that : light clothing, life jacket and water shoes are enough.
This is the engine that feeds the live felt-temperature figure shown on each river dashboard, alongside water and air temperature.
Part 3 — The Comfort Index and the Difficulty Score
Beyond flow and felt temperature taken in isolation, we compute two summary indicators to answer, at a glance, the question "should I go out today ?". They rest on different logics, and we say so honestly : they are not two ways of measuring the same thing.
The Comfort Index (out of 100) starts from a perfect score and subtracts penalties based on the day's measured conditions :
The result is capped at 0 if the river is closed to navigation — in that case comfort no longer makes sense, and the index shows it plainly. Example : open river, flow at 18 m³/s (within the ideal zone, no penalty), water at 10°C (−30), calm wind : the Comfort Index shows 70/100, with the "hypothermia risk" flag explaining the drop.
The Difficulty Score (also out of 100, but where a high score signals a more demanding outing) follows a separate multi-factor logic : a "flow" sub-score (low, ideal, fast, or dangerous in flood) weighted at 60 %, combined with a "weather" sub-score (strong wind, precipitation, cold temperature) weighted at 40 % :
With a safety override : in case of a forecast storm or flood-level flow, the score jumps straight to 100, without waiting for the weighted average. The final score sorts the outing into four levels : easy (≤25), moderate (≤50), difficult (≤75) or very difficult / dangerous (>75). For transparency : our open-data export (JSON-LD Dataset) uses, to keep the export simple, an approximation of the difficulty score equal to 100 minus the Comfort Index ; the detailed multi-factor calculation above is the one used by our real-time weather analysis tools. Both remain consistent in spirit — a less comfortable river is, almost always, also the more difficult one.
The limits, stated honestly
No model predicts a river's future for certain, and to claim otherwise would be dangerous. Here is what the flow forecast 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.
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.
Windchill, for its part, is a standard meteorological formula : it describes an average felt sensation, not your individual one (acclimatisation, physical effort or clothing all make it vary). The Comfort Index and the Difficulty Score are simple, deliberately legible rules : they replace neither a full weather bulletin, nor your own assessment of the terrain, nor a guide's experience. None of these three calculations knows your exact local conditions or your personal skill level.
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, the measured felt temperature and the official navigation status. And if conditions are not met, our cancellation policy protects you.
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 these three models, we let everyone — paddler, rescuer, journalist, fellow operator — understand, verify and challenge our work, including when we correct our own mistakes, as on 26 August 2026. This approach extends our commitment to open data around the official SPW thresholds, already published and exportable. See also our changelog for the full history of changes.
These models are improvable and keep evolving with the seasons and field observations. They are 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. Alongside it, the felt temperature (windchill), the Comfort Index and the Difficulty Score recalculate live at every weather data refresh.
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, this information — flow, felt temperature, comfort, difficulty — gives 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 and by a daily rise cap calibrated on our real history. 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, Viroin and Bocq, each with its own parameters (thresholds, history, runoff coefficients). The bounds are calibrated on the official SPW thresholds of each river.
How do you calculate thermal comfort (windchill)?
With the official wind chill formula (air temperature + wind speed), with no effect below 4.8 km/h of wind. Crossed with the actual water temperature, this felt sensation determines the displayed risk level (hypothermia, cold water, correct, ideal).
What's the difference between the Comfort Index and the Difficulty Score?
The Comfort Index starts at 100 and subtracts penalties (flow outside the ideal zone, cold water, heat, strong wind). The Difficulty Score weights 60/40 a flow sub-score and a weather sub-score, with an automatic jump to 100 in case of storm or flood. Both are recalculated in real time.
See the models at work
Measured flow, forecast trend, felt temperature, comfort and difficulty, in real time on our dashboards.
📊 Semois dashboard