Appendices
Appendix E: Datasets, Benchmarks, and Evaluation Protocols

Datasets, Benchmarks, and Evaluation Protocols

A working catalog of public temporal datasets by task, the running datasets of this book and where to find public stand-ins, and the protocols that keep an evaluation honest.

"Give me a benchmark and a metric, and I will overfit them both by Thursday. Give me a leakage-free split, a proper scoring rule, and a held-out future I have never seen, and I might tell you something true."

A Forecaster Who Has Read the Leaderboard Too Many Times
Why This Appendix Exists

Every method in this book has to be measured against data it has never seen, and the integrity of that measurement decides whether a reported number means anything. This appendix gathers, in one place, the public datasets and benchmarks the temporal-AI community has standardized on, organized by the task they were built to test, with a real link for each so you can pull them today. It then maps the three running datasets of this book onto public stand-ins you can download freely, and it closes with the evaluation protocols that separate a result you can trust from a leaderboard artifact: time-aware splits, walk-forward backtesting, the correct metric for each task, the point-adjustment trap in anomaly scoring, multi-seed reinforcement-learning evaluation, and a reproducibility checklist. Read the catalog when you need data for an experiment; read the protocols before you report a single number from it.

The One Rule Behind Every Protocol Here

A temporal model is judged by its behavior on the future, so every split, every metric, and every reported number must respect the arrow of time. The moment any information from after the prediction point leaks into training, normalization, feature construction, or model selection, the evaluation stops measuring forecasting skill and starts measuring memorization. The datasets below are only as trustworthy as the protocol you wrap around them.

1. A Per-Task Catalog of Temporal Datasets and Benchmarks

Temporal AI spans many tasks, and each has accreted its own standard datasets over the years. The catalog below is organized by task so you can jump straight to the benchmark that matches your problem. For each entry the table gives the dataset, what it contains and roughly how large it is, the task it is built for, and a working link. Treat every leaderboard with the skepticism the evaluation section recommends: a dataset is a fixed sample of the world, not the world.

1.1 Forecasting

Forecasting benchmarks split into two cultures. The competition lineage (M4, M5) tests breadth across thousands of heterogeneous business series with held-out futures and economic loss functions, while the deep-learning long-horizon lineage (ETT, Electricity, Traffic, Weather) tests a handful of long, high-frequency multivariate series at horizons of hundreds of steps. The Monash archive and the GluonTS and Nixtla dataset loaders unify access to most of them. These series thread through the deep forecasting architectures of Chapter 14 and the foundation models of Chapter 15.

BenchmarkContents and scaleBuilt forLink
Monash Time Series Forecasting Archive 30+ datasets, tens of thousands of series, many frequencies, with fixed train/test splits and baseline results Broad univariate and multivariate forecasting comparison forecastingdata.org
M4 Competition 100,000 series across yearly, quarterly, monthly, weekly, daily, hourly frequencies Point and interval forecasting across heterogeneous business series github.com/Mcompetitions/M4-methods
M5 Competition 42,840 hierarchical Walmart retail sales series, daily, with prices and calendar covariates Hierarchical and probabilistic retail demand forecasting kaggle.com/competitions/m5-forecasting-accuracy
ETT (Electricity Transformer Temperature) ETTh1, ETTh2 (hourly) and ETTm1, ETTm2 (15-minute), 2 years, 7 variables Long-horizon multivariate forecasting github.com/zhouhaoyi/ETDataset
Electricity (ECL / UCI) Hourly electricity consumption of 321 (or 370) clients over several years Long-horizon multivariate forecasting archive.ics.uci.edu (dataset 321)
Traffic (PeMS) Hourly road-occupancy rates from 862 sensors on San Francisco freeways Long-horizon high-dimensional forecasting pems.dot.ca.gov
Weather 10-minute meteorological readings, 21 variables, one year at a German station Long-horizon multivariate forecasting bgc-jena.mpg.de/wetter
GluonTS dataset repository Loader for many of the above plus synthetic generators, one uniform API Reproducible forecasting experiments ts.gluon.ai

The four long-horizon sets (ETT, Electricity, Traffic, Weather) became the de facto Transformer-forecasting suite and appear together in nearly every long-sequence paper, so reusing their standard input and prediction lengths lets your numbers sit next to published ones. The code below pulls a Monash dataset through the GluonTS loader in a few lines.

from gluonts.dataset.repository import get_dataset, dataset_names

print(dataset_names[:5])                    # discover available datasets
ds = get_dataset("electricity")             # downloads and caches on first call
train, test = ds.train, ds.test             # iterables of dict entries with a target field
freq, horizon = ds.metadata.freq, ds.metadata.prediction_length
print(freq, horizon)                        # the dataset-defined frequency and forecast horizon
Loading a standard forecasting dataset through the GluonTS repository, which fixes the frequency and the evaluation horizon so your results align with published baselines.

1.2 Classification

Time series classification is dominated by two sibling archives maintained at the University of East Anglia. The UCR archive holds univariate series and the UEA archive holds multivariate series, both with fixed train and test splits, a published accuracy table for dozens of classifiers, and a single download portal. They are the standard proving ground for the representation-learning methods of Chapter 16.

ArchiveContents and scaleBuilt forLink
UCR Time Series Archive 128 univariate datasets, fixed train/test splits, sizes from dozens to tens of thousands of series Univariate time series classification timeseriesclassification.com
UEA Multivariate Archive 30 multivariate datasets covering motion, audio, EEG, and sensor domains Multivariate time series classification timeseriesclassification.com

Both archives ship through the aeon and sktime loaders, so you rarely parse the raw files yourself. Because the splits are fixed, the honest comparison is against the published per-dataset accuracy table rather than a split you choose; tuning the split is itself a form of leakage.

1.3 Anomaly and Change-Point Detection

Anomaly detection has the most contested benchmark landscape in temporal AI, and this catalog flags that openly. The classic datasets below are widely used, but a pointed critique argues several are too easy or mislabeled, and that the point-adjustment scoring protocol inflates results dramatically. These benchmarks underpin the detection methods of Chapter 8, where the point-adjustment pitfall is dissected in full.

BenchmarkContents and scaleBuilt forLink
NAB (Numenta Anomaly Benchmark) 58 labeled real and artificial streaming series, with a windowed scoring application Streaming anomaly detection with early-detection reward github.com/numenta/NAB
SMD (Server Machine Dataset) 28 multivariate server-telemetry series, 38 dimensions each, 5 weeks Multivariate anomaly detection in IT operations github.com/NetManAIOps/OmniAnomaly
SMAP and MSL (NASA) Spacecraft telemetry from the Soil Moisture Active Passive and Mars Science Laboratory craft, labeled anomalies Multivariate spacecraft anomaly detection github.com/khundman/telemanom
Wu and Keogh benchmark critique An analysis, not a dataset, plus the UCR Anomaly Archive of cleaner single-anomaly series Diagnosing flaws in the benchmarks above arXiv:2009.13807

Read the Wu and Keogh paper before you trust any anomaly leaderboard. Its core findings, that triviality, mislabeling, and run-to-failure bias plague these datasets and that point adjustment can make a random scorer look near perfect, are the reason Chapter 8 insists on event-aware metrics and the cleaner UCR Anomaly Archive.

1.4 Reinforcement Learning

Sequential decision making (Part VI, Chapters 22 through 29) evaluates on interactive environments rather than fixed files, plus offline datasets of logged trajectories for the batch setting. Gymnasium is the standard environment API, and D4RL is the standard offline-RL dataset suite. The deep and offline methods of Chapter 25 and the sequence-as-decision view of Chapter 28 both report on these.

ResourceContents and scaleBuilt forLink
Gymnasium The maintained successor to OpenAI Gym: classic control, Box2D, MuJoCo, Atari environment APIs Online reinforcement-learning environments gymnasium.farama.org
D4RL Offline datasets of logged trajectories: locomotion, AntMaze, Adroit, kitchen, with quality tiers Offline (batch) reinforcement learning github.com/Farama-Foundation/D4RL

The D4RL quality tiers (random, medium, medium-replay, expert) matter because offline-RL skill is largely about handling distribution shift between the logged behavior policy and the learned policy, and the tier fixes how far that shift goes.

1.5 Event Sequences and Temporal Point Processes

When events arrive at irregular, continuous timestamps rather than on a fixed grid, the temporal point process is the right model, and its benchmarks are logs of timestamped, marked events. These datasets drive the event and point-process modeling of Chapter 18.

DatasetContents and scaleBuilt forLink
Retweet Sequences of retweet events with user-influence marks, hundreds of thousands of sequences Marked temporal point process modeling github.com/HMEIatJHU/neurawkes
StackOverflow Sequences of user badge-award events over two years, with badge-type marks Marked event-sequence and inter-arrival modeling github.com/HMEIatJHU/neurawkes
MIMIC event logs Timestamped clinical events (diagnoses, procedures) derived from the MIMIC critical-care database Clinical event-sequence and time-to-event modeling physionet.org/content/mimiciii

The Retweet and StackOverflow logs are the standard pair in neural point-process papers, and the curated splits shipped with the Neural Hawkes Process code are what most later work reuses, so starting from that repository keeps you comparable.

1.6 Spatio-Temporal

Spatio-temporal forecasting (the traffic and sensor-network problems of Chapter 32) needs data with both a graph of sensor locations and a time series at each node. Two road-traffic datasets are the field standard.

DatasetContents and scaleBuilt forLink
METR-LA 5-minute speed readings from 207 loop detectors on Los Angeles highways, 4 months, with a road graph Spatio-temporal (graph) traffic forecasting github.com/liyaguang/DCRNN
PEMS-BAY 5-minute speed readings from 325 sensors in the San Francisco Bay Area, 6 months, with a road graph Spatio-temporal (graph) traffic forecasting github.com/liyaguang/DCRNN

Both ship with the adjacency matrix that defines sensor proximity, which is what makes them graph problems rather than plain multivariate ones; the DCRNN repository provides the canonical preprocessing.

1.7 Clinical

Clinical time series are irregularly sampled, multivariate, and rich with missingness, the realistic stress test for the filtering of Chapter 7 and the continuous-time models of Chapter 13. The MIMIC databases are the field standard and require a credentialed PhysioNet account plus a short training course, which is itself a lesson in responsible data use.

DatasetContents and scaleBuilt forLink
MIMIC-III De-identified records for 40,000+ critical-care patients: vitals, labs, notes, irregular sampling Clinical forecasting, mortality and time-to-event prediction physionet.org/content/mimiciii
MIMIC-IV The modular successor, 60,000+ ICU stays, updated schema, linkable to waveform and note modules Clinical multivariate temporal modeling at scale physionet.org/content/mimiciv

Access is gated for good reason: these are real patient records, and the credentialing step is the responsible-data practice that Chapter 33 treats as a first-class engineering concern, not a formality.

1.8 Human Activity Recognition

Wearable and smartphone sensor streams labeled with the activity being performed are the standard benchmark for sensor classification, the sensor-domain thread that runs from Chapter 8 through deployment in Chapter 34.

DatasetContents and scaleBuilt forLink
UCI-HAR Smartphone accelerometer and gyroscope from 30 subjects performing 6 activities, windowed Human-activity classification from inertial sensors archive.ics.uci.edu (dataset 240)
PAMAP2 9 subjects, 18 activities, 3 inertial units plus a heart-rate monitor, 100 Hz Multi-sensor human-activity recognition archive.ics.uci.edu (dataset 231)

A subtle leakage trap haunts both: if windows from the same subject and session land in both train and test, accuracy is inflated, so the honest protocol is leave-one-subject-out, a point the evaluation section returns to.

2. The Three Running Datasets of This Book and Their Public Analogs

The book rotates three running domains so that the same data reappears as the methods deepen, as laid out in the front matter and used from Chapter 2 onward. Each running dataset is small and self-contained enough to ship with the exercises, but each has a public, full-scale analog you can graduate to. The table maps the book's domain to the public dataset that lets you reproduce and extend every worked example at realistic scale.

Book running datasetRole in the bookPublic analog to downloadLink
Finance (returns and volatility) ARIMA and GARCH in Chapters 5 and 6, deep forecasting in Chapter 14, probabilistic forecasting in Chapter 19 Daily equity-index or FX series; M4 financial subset; any public OHLC feed M4 financial series
Healthcare (irregular vitals) Irregular data in Chapter 2, filtering in Chapter 7, Neural CDE in Chapter 13, time-to-event in Chapter 18 MIMIC-III / MIMIC-IV irregularly sampled ICU vitals physionet.org (MIMIC)
Sensor / IoT (industrial telemetry) Anomaly and change-point in Chapter 8, drift in Chapter 20, spatio-temporal in Chapter 32, deployment in Chapter 34 SMD server telemetry, NASA SMAP/MSL, or UCI-HAR for the wearable variant SMD telemetry
From the Book's Toy Series to a Real One

The exercises use compact stand-ins so they run in seconds on a laptop, but the methods are identical at scale. A reader who builds the GARCH volatility model of Chapter 6 on the book's finance series can rerun it unchanged on a multi-year equity-index download, and a reader who runs the anomaly detector of Chapter 8 on the sensor toy series can point it at the 38-dimensional SMD telemetry and watch the same innovation-based alarm logic scale up. The public analog is where the toy example becomes a portfolio project.

3. Evaluation Protocols Done Right

A dataset is necessary but not sufficient. The protocol wrapped around it decides whether a reported number reflects skill or leakage. This section covers the four pillars: time-aware splitting and backtesting, the right metric per task, the anomaly-scoring pitfall, and reinforcement-learning evaluation across seeds, and it ends with a reproducibility checklist.

3.1 Time-Aware Splits and Walk-Forward Backtesting

The first rule, established in Chapter 2.6, is that you never shuffle a temporal split. Random k-fold cross-validation lets the model train on points from after the test point, which is leakage in its purest form: in deployment the future is not available, so an evaluation that grants it overstates skill, sometimes wildly. The correct procedure is a chronological split (train on the past, test on a strictly later block) and, for a robust estimate, walk-forward backtesting that slides the train and test windows forward through time and averages the error over many origins. Two windowing schemes are common: an expanding window that grows the training set at each step, and a rolling window that keeps it fixed; the rolling window better matches a model retrained on recent data, the expanding window better matches one that keeps all history.

import numpy as np

def walk_forward_splits(n, initial_train, horizon, step, expanding=True):
    """Yield (train_idx, test_idx) tuples that never let the future leak backward."""
    start = initial_train
    while start + horizon <= n:
        train_start = 0 if expanding else max(0, start - initial_train)  # expanding vs rolling
        train_idx = np.arange(train_start, start)                        # strictly past
        test_idx = np.arange(start, start + horizon)                     # strictly future
        yield train_idx, test_idx
        start += step                                                    # slide the origin forward
A leakage-free walk-forward splitter: the test indices always begin where the train indices end, so no model ever sees a point from after its forecast origin.
Right Tool: Backtest Splitters Built In

You rarely write the splitter by hand in production. Scikit-learn's TimeSeriesSplit gives expanding-window chronological folds in one line, sktime's ExpandingWindowSplitter and SlidingWindowSplitter add rolling windows and horizon control, and GluonTS and the Nixtla stack expose a backtest evaluator that runs walk-forward over many origins and returns per-origin metrics. Each replaces roughly the dozen lines above and, more importantly, encodes the no-leakage contract so you cannot accidentally shuffle.

Normalize Inside the Fold, Never Across It

The most common silent leak is not the split itself but the preprocessing around it. If you compute a mean, standard deviation, minimum, maximum, or any imputation statistic over the whole series before splitting, test-set information bleeds into the training scale. Fit every transform on the training window alone and apply it to the test window, inside each backtest fold. The same applies to feature selection, hyperparameter search, and early-stopping decisions: all of them are model choices and all must see only past data.

3.2 Forecasting Metrics

The right forecasting metric depends on whether you predict a point or a distribution, and on whether your series are comparable in scale. The four below, developed in Chapter 19, cover the cases you will meet. MASE and sMAPE judge point forecasts; CRPS and the pinball (quantile) loss judge probabilistic ones.

MetricWhat it measuresWhen to use itWatch out for
MASE (Mean Absolute Scaled Error) Absolute error scaled by the in-sample naive forecast's error Comparing across series of different scales; the safe default for point forecasts Undefined if the naive error is zero (a flat series)
sMAPE (symmetric Mean Absolute Percentage Error) Percentage error symmetrized over actual and predicted Scale-free reporting, competition comparability Unstable and asymmetric near zero values; still penalizes over and under differently
CRPS (Continuous Ranked Probability Score) Distance between the forecast CDF and the observed value; a proper scoring rule Evaluating a full predictive distribution Needs samples or a closed-form CDF; reduces to MAE for a point forecast
Pinball / quantile loss Asymmetric absolute error at a target quantile Evaluating specific predictive quantiles or prediction intervals Average several quantiles for a full picture; one quantile is a thin view

The deepest pitfall is using a plain MAPE or RMSE to rank methods across series of wildly different magnitudes: a single large-scale series then dominates the average and the ranking measures scale, not skill. MASE exists precisely to fix this by dividing out the naive forecast error per series. For probabilistic forecasts, prefer a proper scoring rule (CRPS or averaged pinball) because, unlike interval coverage alone, it cannot be gamed by a forecaster who reports dishonest uncertainty.

import numpy as np

def mase(y_true, y_pred, y_train, m=1):
    naive = np.mean(np.abs(y_train[m:] - y_train[:-m]))   # in-sample seasonal-naive error
    return np.mean(np.abs(y_true - y_pred)) / naive       # scaled, comparable across series

def pinball_loss(y_true, q_pred, q):
    diff = y_true - q_pred
    return np.mean(np.maximum(q * diff, (q - 1) * diff))  # asymmetric quantile penalty
MASE scales each series by its own naive-forecast error so cross-series averages are meaningful; the pinball loss scores a single predictive quantile and averages over quantiles for a full distributional view.

3.3 Classification and Anomaly Metrics, and the Point-Adjustment Pitfall

For balanced classification, accuracy on the fixed UCR/UEA test split is the comparable number. For imbalanced detection, accuracy is meaningless (a detector that never fires scores high when anomalies are rare), so precision, recall, the F1 score, and the area under the precision-recall curve are the honest summaries. The trap unique to temporal anomaly detection, examined at length in Chapter 8, is point adjustment: a scoring convention that, if any single point inside a true anomalous segment is flagged, marks the entire segment as correctly detected. This convention is so generous that a random scorer or a trivial threshold can post a near-perfect adjusted F1, which is exactly the inflation the Wu and Keogh critique (arXiv:2009.13807) documents.

How Point Adjustment Manufactures a 0.96 F1 From Noise

Take a series with a few long anomalous segments and a detector that fires at random with modest probability. Without adjustment its F1 is near chance. Apply point adjustment and the picture inverts: because the long segments give many chances for at least one random hit, almost every segment ends up "detected", and the adjusted F1 climbs toward 0.9 or higher. The number is real arithmetic and entirely misleading. The fix is to report event-aware or range-based metrics (such as the range-based precision and recall, or the NAB windowed score that rewards early detection without crediting a whole segment for one lucky point), and to always state whether point adjustment was applied. A leaderboard that hides this choice cannot be compared.

3.4 Reinforcement-Learning Evaluation Across Seeds

Reinforcement-learning results are notoriously high-variance: the same algorithm with the same hyperparameters can win or lose depending on the random seed, because exploration, environment stochasticity, and network initialization all compound. A single training run is therefore not evidence, a point made forcefully in Chapter 25.5. The honest protocol runs each method over many seeds (commonly five to ten, more for noisy environments), reports the distribution rather than the best run, and uses summary statistics that are robust to the long tails RL returns exhibit. The interquartile mean with stratified bootstrap confidence intervals, popularized by the rliable methodology, has become the community standard because the plain mean is dominated by a few lucky or unlucky seeds and the median throws away too much information.

Report the Spread, Not the Hero Run

Three failure modes recur in RL evaluation: reporting only the best seed (cherry-picking), reporting the mean of too few seeds (high variance masquerading as a result), and tuning hyperparameters on the same seeds used for the final number (selection leakage). The remedy is fixed: pre-register the seed count, separate tuning seeds from evaluation seeds, and report an interval, not a point. A method that wins only on its best seed has not been shown to win.

3.5 A Checklist for Leakage-Free, Reproducible Evaluation

The protocols above reduce to a checklist you can run before reporting any temporal result. It folds in the reproducibility discipline detailed in Appendix F.

Where Benchmarking Is Heading (2024 to 2026)

The benchmark landscape is being rebuilt around foundation models. GIFT-Eval and the Chronos and Moirai evaluation suites assemble dozens of datasets to test zero-shot and few-shot forecasting, where a single pretrained model is scored on series it never trained on, which makes train-test contamination across the pretraining corpus a new and subtle leakage concern. In anomaly detection, the TSB-UAD and TSB-AD benchmarks were assembled as a direct response to the Wu and Keogh critique, curating cleaner labels and discouraging point adjustment. In offline RL, the D4RL successor Minari (under the Farama Foundation) standardizes trajectory datasets with versioning. The throughline is that the community is converging on harder, cleaner, leakage-audited benchmarks, exactly because the easy ones were shown to mislead.

The Leaderboard Is Not the Territory

Every benchmark in this appendix is a frozen photograph of a moving world. A model that tops the chart has proven it fits that photograph; whether it forecasts tomorrow is a separate, harder claim that only a leakage-free protocol and a genuinely unseen future can support. Use the catalog to compare fairly, and use the protocols to keep yourself honest when the leaderboard tempts you to celebrate early.