I want to train a statistical model to predict financial asset returns.
I'm wondering whether it would be more effective to train a rolling forecast model rather than training a single model with a fixed training data set. In other words, train a model with a sliding window of say 2 years, predict over the next 7 days, shift 7 days, re-train the model, predict the next 7 days etc. Mathematically, for the design matrix $X$ and targets $y$, we have
iteration one $$X_{\text{train}}^{(1)} = \{x_{i - 503}, x_{i - 502}, ..., x_i\}, y_{\text{train}}^{(1)} = \{y_{i - 503}, y_{i - 502}, ..., y_i\}$$ $$X_{\text{test}}^{(1)} = \{x_{i + 1}, x_{i + 2}, ..., x_{i + 7}\}, y_{\text{test}}^{(1)} = \{y_{i + 1}, y_{i + 2}, ..., y_{i + 7}\}$$
iteration two $$X_{\text{train}}^{(2)} = \{x_{i - 496}, x_{i - 495}, ..., x_{i + 7}\}, y_{\text{train}}^{(2)} = \{y_{i - 496}, y_{i - 495}, ..., y_{i + 7}\}$$ $$X_{\text{test}}^{(2)} = \{x_{i + 8}, x_{i + 9}, ..., x_{i + 14}\}, y_{\text{test}}^{(2)} = \{y_{i + 8}, y_{i + 9}, ..., y_{i + 14}\}$$
etc. where $i$ is the time index.
My intuition / reasoning for this rolling set up is because as markets undergo regime changes (e.g periods of high volatility, or a new regime where volatility is consistently higher than the distant past), the rolling model approach should be more reactive, in theory, in capturing the recent and dominant market forces. Statistically speaking, the entire time series of returns for the asset is not (weakly) stationary, so perhaps training a local model on subseries will have higher performance than training one global model.
A few issues occur with the rolling approach:
- The model may have higher variance and is subject to overfitting due to the small number of samples.
- Estimating hyperparameters (say if we are using a random forest and want to estimate the optimal
max_depth
of each tree) becomes harder; cross-valdiation using a such a small sample size of 2 years is subject to more variance and will take much more computation time as we would need to apply cross validation to each new iteration shift.
I have a few questions:
- Is there any advantage / reason / scenario where we would want to train a rolling model with rolling forecasts rather than train a global model on a static training dataset?
- How can we mitigate overfitting when using a rolling approach?
- How can we compare the model accuracy of a rolling approach to the accuracy of one global model? Is taking an average of the rolling model accuracies appropriate?