## 3 Materials and Methods
### Model Fitting  
Based on the three introduced scenarios, each model type is trained in a time-based k-fold cross-validation fashion over multiple hyperparameter configurations. For that, a sliding window approach is chosen as illustrated in Figure 4 below. It keeps the size of the training set constant while rolling the first point of the set forward. This approach is reasonable as it ensures a meaningful time series-specific validation and speeds the training process compared to an expanding window splitter. However, the expanding window splitter approach is computationally more expensive as it accumulates newly available data after each split. Another helpful feature is defining specific 'cut-off' points (training set endpoints). This option allows the definition of the training windows following the scenarios. The final cross-validation setup encompasses three different splits moving over time using the sliding window splitter, where each of the splits contains a training set (cut-off date minus defined training set length of 8760 h in the past) and a validation set (cut-off date plus a defined forecasting horizon of 168 h into the future). In each iteration, a newly created model with identical initialization is trained.  
All experiments are conducted by executing a pipeline built using the Python package _sktime_[70]. Data processing, such as scaling, transforming the original non-stationary data into static data, or reducing dimensionality, can be added as individual steps in the pipeline. This way, an identical setup can be ensured regardless of the training model. A fixed random seed is set to ensure that any of the observed differences between different experiments happen because of the model.  
Hyperparameter tuning is implemented to determine a combination of parameters for each model in a grid search manner. This approach uses all combinations in a previously defined discrete search space. The researcher has to propose a list of values for each hyperparameter. As the number of hyperparameters differs among the model types, the total number of trained models may also differ. Furthermore, the deep learning models neither have default hyperparameters nor a default architecture. Instead, they must be built manually according to the researcher's ideas. Moreover, the default hyperparameters of the non-deep learning models may skyrocket the computational effort as they are not adapted to the prediction task. Based on the performance of the validation set within each split (k = 3), the results of each combination are compared and ranked.  
The entire routine, from data preprocessing to model evaluation, was performed on a single compute instance, ensuring reproducible results. This machine has a built-in Intel i9-11950H CPU, 32 GB RAM, an NVIDIA RTX A300 GPU, and Microsoft Windows version 10.0.19045.2364 installed on a Micron MTFDKBA1T0 TFH NVME drive. No other applications ran in the background during training as they would slow down model fitting.  
Figure 4: Sliding Window with dedicated cutoff points [69].  
The deep learning models are created with Keras version 2.10.0, as calculations can be performed on GPU to speed things up. The remaining models are created with either Scikit-Learn version 1.1.2 or SKTime version 0.13.4 running on the CPU. Besides that, the following software is installed: Python 3.9.12, CUDA 11.7, NVIDIA Driver 517.66, Pandas 1.5.0, and Numpy 1.22.4. The computational effort does not require a high-performance compute instance, and the experiment can be conducted within a few days. It is worth mentioning that not all models fully utilize the CPU, and hence, some cores are idle. Therefore, the model trainings can be run in parallel by starting another python instance.