Generated on 14 October 2026. Every number here comes from forecasts that were published before the night happened.
Where the forecasts come from. The daily routine commits the forecast in force, so the history of this repository is an archive of forecasts stamped with the day they were issued. Nothing is re-run: the model is judged on what it actually said, and only forecasts issued on the morning of the night or earlier count. Against it goes the density each city's nearest radar went on to measure, taken again from the public archive, which publishes each day with about two days of delay.
How to read it. The rank correlation asks whether the busier nights of a place were forecast as the busier ones: it needs no long radar record, so it is the number that holds everywhere. The alert figures only use the 596 cases where the radar has at least 100 nights in its own record, because without that there is nothing to call a busy night against; chance alone would land on one 34% of the time. The size is the honest weak point: the model orders nights better than it measures them.
| city | nearest_radar | nights | km to radar | rank correlation | forecast birds/km² | measured birds/km² | busiest night | level that night | record nights |
|---|---|---|---|---|---|---|---|---|---|
| Lisboa | ptlis | 39 | 74.9 | 0.47 | 3.49 | 32.61 | 09 Sep | very high | 326 |
| Faro | ptfar | 35 | 31.9 | 0.50 | 2.74 | 28.91 | 07 Oct | moderate | 517 |
| Porto | ptprt | 35 | 45.5 | 0.43 | 3.14 | 17.45 | 09 Sep | high | 446 |
| Marseille | frcol | 39 | 81.7 | 0.33 | 6.78 | 14.91 | 09 Oct | very high | 1143 |
| Madrid | estjv | 38 | 26.8 | -0.09 | 6.30 | 8.98 | 01 Oct | low | 34 |
| Montpellier | frnim | 39 | 54.8 | 0.31 | 5.23 | 8.65 | 11 Sep | high | 1165 |
| Zaragoza | espdg | 39 | 30.0 | 0.39 | 5.11 | 8.47 | 15 Sep | very high | 24 |
| Cáceres | essft | 39 | 9.1 | 0.32 | 3.38 | 8.20 | 16 Sep | very high | 37 |
| Barcelona | esgld | 39 | 23.8 | 0.11 | 6.02 | 7.73 | 05 Oct | low | 35 |
| Sevilla | esclg | 38 | 45.3 | 0.14 | 2.15 | 5.98 | 09 Sep | high | 25 |
| Almería | esnjr | 39 | 34.0 | 0.27 | 2.67 | 5.68 | 07 Oct | low | 26 |
| Toulouse | frtou | 39 | 6.4 | -0.28 | 1.28 | 0.84 | 06 Oct | low | 1163 |
| Bordeaux | frbor | 39 | 8.9 | -0.12 | 0.93 | 0.83 | 09 Oct | moderate | 1184 |
| Lyon | frniz | 37 | 45.3 | 0.07 | 3.23 | 0.52 | 09 Oct | high | 1177 |
The same check, one week at a time since the first published forecast, to see whether the model holds up as the season moves on. A busy night is one in the top quarter of its radar's own record; the alert columns only count radars with a long enough record, and «by chance» is how often an alert fired at random would have landed on one.
| week of | place-nights | median rank correlation | alerts | busy nights | alerts right | busy nights flagged | by chance | forecast birds/km² | measured birds/km² |
|---|---|---|---|---|---|---|---|---|---|
| 31 Aug | 56 | — | 10 | 12 | 20% | 17% | 38% | 3.87 | 9.67 |
| 07 Sep | 95 | 0.50 | 36 | 18 | 36% | 72% | 34% | 4.14 | 10.88 |
| 14 Sep | 95 | 0.29 | 26 | 18 | 54% | 78% | 34% | 4.73 | 9.93 |
| 21 Sep | 97 | 0.32 | 13 | 18 | 54% | 39% | 32% | 3.72 | 10.91 |
| 28 Sep | 97 | 0.39 | 7 | 15 | 57% | 27% | 27% | 2.70 | 8.73 |
| 05 Oct | 94 | 0.54 | 15 | 21 | 33% | 24% | 40% | 3.59 | 12.94 |
Every night behind these numbers, with the forecast and the measurement side by side: scorecard_nights.csv.
| days ahead | cases | places | median rank correlation |
|---|---|---|---|
| -1 | 548 | 14 | 0.293 |
| 0 | 534 | 14 | 0.301 |
| 1 | 520 | 14 | 0.234 |
| 2 | 506 | 14 | 0.211 |
| 3 | 492 | 14 | 0.209 |
| 4 | 478 | 14 | 0.171 |
| 5 | 464 | 14 | 0.150 |
| 6 | 451 | 14 | 0.079 |