Skip to the content.

Models

All adapters implement the Forecaster interface in src/models/base.py and return a point forecast plus a (quantile, horizon) matrix.

Model label Family Panel training Quantile construction
seasonal_naive classical no empirical seasonal residuals
croston_* intermittent-demand classical no parametric bootstrap
patchtst compact supervised Transformer yes multi-quantile head
chronos_bolt pretrained foundation model no, zero-shot native model output

Seasonal-naive

Repeats the last seasonal cycle. Forecast quantiles are based on in-sample seasonal residuals. It is a baseline, not an uncertainty model calibrated for every demand process.

Croston family

The adapter includes classic Croston, SBA, and TSB-style point forecasts. Its quantiles use a bootstrap based on demand occurrence and non-zero sizes. They are an approximate distribution, not a claim of exact predictive calibration.

PatchTST-inspired model

src/models/patchtst.py is an independent, simplified model inspired by the patching idea in Nie et al., A Time Series is Worth 64 Words (ICLR 2023). It trains one network over windows from the selected panel, uses a Transformer encoder, and optimizes a multi-quantile pinball objective in transformed space.

The implementation is not the authors’ official PatchTST code, does not reproduce their full architecture or training protocol, and should not be cited as a paper reproduction. The artifact label remains patchtst for backward compatibility.

Chronos-Bolt

The wrapper loads the configured Amazon Chronos-Bolt checkpoint through chronos-forecasting and uses it without fine-tuning. This path requires the optional package and access to the model weights.

If loading fails, the wrapper uses seasonal-naive and changes its label to chronos_bolt[fallback=seasonal_naive]. That row is a software-continuity fallback, not a Chronos-Bolt evaluation. Preserve the label in any report.

Adding a model

  1. Implement Forecaster.predict() and, for global models, fit().
  2. Register it behind a config flag in src/models/registry.py.
  3. Add tests for dimensions, quantile ordering, non-negativity where appropriate, and failure behavior.
  4. Document external weights, licensing, training data assumptions, and fallback behavior.