Óscar Romero Quincoces

Projects / Master's coursework

S&P 500 forecasting

256 trainings, none beat a linear model

2026MIAX master's, Instituto BME
Best test error for each input and output window: identical rows, so the input window doesn't matter
Figure 1. Best test error for each input and output window: identical rows, so the input window doesn't matter

Summary

Sixteen architectures, dense, recurrent, convolutional and hybrid, predicting the returns of 23 S&P 500 stocks: 256 trainings in all. None beat a linear regression, and the write-up explains why: the returns are close to noise, so every network ends up predicting the mean. Team of 3.

The task

Predict the average future log return of 23 S&P 500 stocks from their past returns, over 16 combinations of input and output windows from 1 to 90 days, scored by MAE. We trained sixteen architectures, dense, recurrent, convolutional and hybrid: 256 trainings in all.

Results

None beat a linear regression. Every network converged to the same error in every window, because returns are close to white noise and the best answer is the mean. The only real gain came from fractional differentiation, which cut the one-day error by 8.9%.

Figures

Sweep of the fractional differencing order: the lowest test error is at d = 0.2
Figure 2. Sweep of the fractional differencing order: the lowest test error is at d = 0.2
2025 cumulative return: the network's portfolio against equal-weight buy and hold
Figure 3. 2025 cumulative return: the network's portfolio against equal-weight buy and hold

Built with

PythonKeras 3 + TensorFlowyfinancescikit-learnpandas