Seasonality¶
Seasonality is already handled in FoehnCast through cyclical time features derived from the forecast timestamp. The project does not split the model by season; it encodes repeating daily and yearly patterns directly in the feature table.
Why It Matters¶
Swiss kite spots do not behave the same way all year. Summer thermals, winter pressure systems, daylight, and temperature patterns all affect when a spot becomes rideable. If the model only sees raw weather values, it may miss some of that structure.
Current Implementation¶
The feature pipeline currently engineers four timestamp-derived fields:
hour_of_day_sinhour_of_day_cosday_of_year_sinday_of_year_cos
These features let the model learn that 14:00 is close to 15:00, and that late June is close to early July, without introducing a discontinuity at midnight or year-end.
Where It Fits In FTI¶
- The feature pipeline creates the cyclical time fields from each forecast timestamp.
- The training pipeline consumes those fields as part of the model feature vector.
- The inference pipeline builds the same fields from live forecast timestamps.
This keeps training and inference aligned around the same time encoding.
Why The Current Scope Stays Simple¶
The current implementation favors the smallest feature set that can still capture recurring patterns.
- No separate seasonal model families.
- No wide month-dummy design.
- No extra architecture dedicated only to seasonal logic.
That keeps the design simple while still giving the model useful time context.
How It Can Be Evaluated¶
Seasonality changes can be evaluated through the same training and MLflow workflow used for the rest of the model.
- compare training runs with and without additional seasonal features
- inspect error metrics and ranking quality across different parts of the year
- keep only changes that improve the model enough to justify the added complexity
Summary¶
FoehnCast already accounts for seasonality in a lightweight way. The current design is to keep cyclical time features in the shared feature layer and only add more seasonal complexity if model evidence makes that worthwhile.