Overview
At Greenbox I built and operated forecasting systems for the German energy market. The engineering challenge was less about squeezing out the last decimal of accuracy and more about prediction quality under operational constraints: limited reaction windows, demand patterns that shift with season and behavior, and the discipline of running versioned models in production.
Forecasting Targets
Three distinct prediction problems, each with its own failure modes:
- EV charging-station occupancy — highly behavioral and location-dependent; the value is in anticipating congestion early enough for operations to react.
- Imbalance pricing — the market's penalty signal for forecast errors; short horizons and volatile dynamics make this the least forgiving target.
- Solar production — weather-driven generation forecasting, where input quality dominates model choice.
ML Lifecycle in Production
The models only matter if the process around them holds up:
- MLflow experiment tracking for every training run — parameters, metrics, and artifacts recorded so results are comparable and reproducible.
- Versioned model promotion — a candidate model graduates to production deliberately, with its lineage traceable back to the exact run that produced it.
- Containerized deployment — models ship as Docker images, keeping the training-to-serving path repeatable.
Stack
TensorFlow and PyTorch for modeling, MLflow for the experiment and model lifecycle, Docker for packaging and deployment.