Skip to content
Catch model · Time

Eel in the dark, pikeperch in the moonlight: teaching the forecast to tell time

We're extending the catch forecast with temporal features — hour, season, moon. Most are small on average, but one splits the night hunters: eel wants the dark, pikeperch the moonlight.

Underwater photo of a pikeperch in dark Dutch water, with the full moon and shafts of light shining down through the surface.
Pikeperch in the moonlight — an eye built to exploit exactly that last bit of light.

We're extending the catch forecast. Weather says a lot — water level, wind, temperature — but not everything. Fish also read the clock: the hour of the day, the season, the moon. Most of those temporal signals are small as long as you pool every species together. But split them per species and one thing stands out too cleanly to ignore: eel and pikeperch sit on opposite sides of the moon.

What 'when' adds

Weather tells you whether it's a good day; time tells you when within it. So we give the model three clocks: the hour (via the sun's elevation), the season (the month as a cycle) and the moon (phase and altitude). Averaged over all species, moon phase stays a rounding error — about 1%, visible in our forecast, which is exactly why we never time anything on it here. But that average hides structure.

The moon splits the night hunters

Across some 600 weather-days, the model watches what shifts from new to full moon. For most species: flat. For eel, not — the catch signal drops by more than a third, from a peak at the new moon to a trough at the full. Pikeperch moves the other way: low at the new moon, higher as the night brightens. Two night hunters, a clean mirror image. The eel signal is the strongest and sharpest; pikeperch's is subtler — the direction holds, the exact size we're still sharpening.

≈ 1%moon phase, generalall species pooled
−40%eelsignal, new → full moon
+8%pikeperchsignal, new → full moon

Why 'low light' was too blunt

At first we assumed the simple version: night hunters like low light, done. But then eel and pikeperch should point the same way — and they don't. The fix is that light is two knobs, not one.

  • The day axis — sun-aversion: does the species avoid bright daylight? Eel and pikeperch both: yes, they hunt at dusk, at night, or in turbid water.
  • The night axis — moon direction: how much light does it want within the night? Here they diverge: eel wants it as dark as possible, pikeperch actually wants a little moonlight.

Those two don't contradict each other. Pikeperch dodges the harsh midday sun (day axis) but exploits soft moonlight (night axis) — a hunter of the half-light, not the pitch dark; its eye is built to squeeze out exactly that last bit of light. Eel doesn't need that and just wants dark. The biology splits cleanly: visual low-light hunters favour the full moon, light-shy bottom feeders the new.

A temporal fingerprint per species

Line the knobs up and each species gets its own temporal profile — exactly what we let the model learn rather than impose.

SpeciesSun-aversion (day)NocturnalMoon direction
Eelhighhighdark (strong)
Catfishhighhighfull (mild)
Pikeperchhighmediummoonlight
Tenchmediummediumdark
Carplowmildnone
Breamlow-mediummildfull (weak)
Perchlow≈ 0none
Pikehigh in bright light≈ 0none
Roachlow≈ 0none
What the model picks up per species from the time features. Qualitative — the direction, not the exact numbers.

From phase to hour

Moon phase isn't really the signal in the end — moon altitude is. A full moon below the horizon gives no light. So the model carries it through to the moment itself: is the moon up, and how high? That turns a monthly signal into an hourly one. Pikeperch peaks when the moon is up on a bright night; eel in the darkest hours. The same night can be a pikeperch window and an eel dead zone — depending on the hour.

Why this belongs in the forecast

Folklore and signal look identical from a distance. 'Moon phase ~1%' isn't wrong — it's the average over forty species, and that average flattens a real effect in two night hunters down to noise. The gain isn't the moon alone, but making the model time-aware and species-specific: it then knows not just where and whether, but when, and for whom. That's what we're building into the forecast now; the first hourly forecast is already in the latest release.

Status: ongoing. We're rolling the time features into the forecast step by step; the exact hourly response per species is still being sharpened.

Back to the Lab