← All work

MSc RESEARCH · TIME-SERIES FORECASTING

What beat the Transformer on OTTO?

For my MSc dissertation, I compared eight ways to forecast aggregate hourly cart and order counts from OTTO events. The weekly seasonal baseline had the lowest mean development WAPE.

672hourly observations
8approaches compared
96hseparate final holdout
OTTO / SELECTED CV RESULTS03
MEAN CV WAPE · LOWER IS BETTERWeekly seasonal13.93%Seasonal blend13.99%Extra Trees14.35%GRU15.42%Transformer17.67%0%10%20%
Selected on CV, before the final holdout
PROJECT CONTEXT

OTTO forecasting

I compared eight forecasting approaches on four weeks of hourly cart and order counts. Repeating last week’s pattern gave the lowest mean WAPE on the development folds.

  • Python
  • PyTorch
  • scikit-learn
  • Time-series CV
MSc research

A large log, a short series

After aggregating OTTO session events, I had 672 consecutive hourly observations: about four weeks. The task uses 168 hours of history to predict 24 hourly cart and order counts.

Product identifiers are deliberately excluded. This is aggregate hourly activity forecasting, rather than SKU-level demand prediction.

How I chose the model

I compared eight approaches across three chronological development folds. Neural models used five fixed seeds. Preprocessing was fitted on training data, and target windows respected split boundaries. The final 96 hours remained separate from model selection.

The selection criterion was mean CV WAPE across carts and orders. It selected the 168-hour seasonal baseline at 13.93%.

All eight approaches · mean development CV WAPE · lower is better
MethodWAPE
Seasonal naive 168h13.93%
Seasonal blend 24h+168h13.99%
Extra Trees14.35%
GRU15.42%
Ridge16.79%
Transformer17.67%
Seasonal naive 24h19.17%
Persistence70.27%

Results on the final 96 hours

The selected baseline reached 9.80% carts WAPE and 11.34% orders WAPE on the final holdout.

Final 96-hour holdout · lower is better
TargetWeekly seasonal WAPE
Carts9.80%
Orders11.34%

The baseline was not best on every target. Ridge had a lower carts WAPE of 8.90%, but a higher orders WAPE of 12.18%. I retained the winner selected by the predefined development rule instead of changing it after seeing the final test.

How the Transformer performed

The Transformer reached 17.67% mean CV WAPE. I kept the implementation, repeated-seed comparisons, and ablations in the repository so the result can be checked.

The ablation study uses a lighter evaluation protocol, so its results are interpreted within that study. The lesson is specific to this experiment; it does not show that seasonal rules always beat Transformers.

Limits of four weeks of data

Four weeks do not establish monthly, holiday or promotion behavior. The dataset also lacks price, inventory and marketing context. Prediction intervals are empirical uncertainty estimates, rather than guaranteed future coverage.

The repository records configuration, split boundaries and generated results. AI-assisted debugging, review and language editing are disclosed there.

Source & evidence

Code, experiment results, and implementation notes.

NEXT CASE STUDYREES46 V2