NeurIPS 2026

SteerCast: Retrieval-Based Latent Steering for Decoder-Only Time Series Forecasting

Van Dai Do, Huu Hiep Nguyen, Minh Hoang Nguyen, Hung Le

TL;DR

TL;DR. SteerCast makes an already fine-tuned decoder-only forecaster more accurate at inference time: it retrieves similar training windows, averages their latent steering vectors (ground-truth minus model-prediction representations), and adds the result to the hidden states at every generation step—no gradient updates and no extra input tokens.

SteerCast overview. Left: for each training window, the frozen forecaster is run on the history concatenated with its own prediction and with the ground truth; the difference of the per-layer last-token states is the steering vector. Middle: during autoregressive forecasting the aggregated steering vector is injected into the hidden states of every layer. Right: the top-k nearest training histories are retrieved and their steering vectors are averaged.
Figure 2. SteerCast overview. (Left) For each training example, the fine-tuned forecaster \(\mathcal{F}\) produces an initial prediction; representations of \([\mathbf{x}_{\text{train}};\mathbf{y}_{\text{pred}}]\) and \([\mathbf{x}_{\text{train}};\mathbf{y}_{\text{train}}]\) are computed and their difference is the steering vector. (Middle) During autoregressive forecasting, \(\boldsymbol{\Delta}\) is added to the hidden states at every generation step. (Right) The top-\(k\) training histories closest to the query are retrieved and their steering vectors averaged.

Abstract

Time series forecasting aims to predict future values from historical observations and auxiliary features. We propose SteerCast, a retrieval-based latent steering method that improves decoder-only forecaster at inference time, without updating its parameters. SteerCast constructs a database from the training set by storing a representation of each history window together with a steering vector computed in the forecaster’s latent space, defined as the difference between representations induced by the ground-truth continuation and by the model’s own prediction. At test time, SteerCast retrieves nearest neighbors for a query history, aggregates their steering vectors, and injects the resulting signal into the forecaster’s hidden states at every step of autoregressive generation, guiding predictions toward trajectories consistent with similar training cases. Experiments across diverse multivariate benchmarks and multiple horizons show that SteerCast consistently improves forecasting accuracy over the fine-tuned backbone and retrieval-based baselines, while requiring no additional training beyond the original fine-tuning and using only the training set as a retrieval corpus.

Method

Three ways to improve a decoder-based forecaster: (a) fine-tuning the model, (b) retrieval-based fine-tuning that concatenates retrieved series to the input, and (c) SteerCast, which keeps the model frozen and edits its latent space with a steering vector extracted from a SteerCast database.
Figure 1. Improving decoder-based forecasters by (a) model fine-tuning, (b) retrieval-based fine-tuning, and (c) SteerCast, which edits the latent space of the frozen fine-tuned model and needs no gradient updates.

Each channel of a multivariate series is forecast independently by a shared, already fine-tuned decoder-only backbone \(\mathcal{F}\) (Time-MoE, Timer-XL or TimesFM). SteerCast adds two components around it: a key–value memory \(\mathcal{M}\) built once from the training split, and a gated update applied to the hidden states during generation.

1. Database construction

Retrieval key. The final-layer hidden states \(\mathbf{Z}(\mathbf{x})\in\mathbb{R}^{N_P\times d}\) of the look-back window are averaged over time:

$$\mathbf{r}(\mathbf{x}) = \frac{1}{N_P}\sum_{t=1}^{N_P} \mathbf{Z}_t(\mathbf{x}) \in \mathbb{R}^{d}. \tag{1}$$

Steering vector. For every training pair, the same history is continued once with the model’s own forecast \(\mathbf{y}_{\text{pred}}=\mathcal{F}(\mathbf{x}_{\text{train}})\) and once with the ground truth. With \(\mathbf{h}\) the concatenation of the last-token residual-stream states of all \(L\) blocks, the stored value is

$$\boldsymbol{\Delta} = \mathbf{h}\big([\mathbf{x}_{\text{train}};\mathbf{y}_{\text{train}}]\big) - \mathbf{h}\big([\mathbf{x}_{\text{train}};\mathbf{y}_{\text{pred}}]\big) = \mathbf{h}_{\text{gt}} - \mathbf{h}_{\text{pred}}. \tag{2}$$

Because both continuations share the same history, \(\boldsymbol{\Delta}\) cancels history-only content and isolates the latent displacement from the model’s trajectory to the ground-truth trajectory.

2. Retrieval

At test time the query key \(\mathbf{r}_q=\mathbf{r}(\mathbf{x})\) is compared with every stored key by Euclidean distance, and the steering vectors of the \(k\) nearest entries are mean-pooled:

$$\boldsymbol{\Delta}(\mathbf{x}) = \frac{1}{k}\sum_{j=1}^{k} \boldsymbol{\Delta}^{j}. \tag{3}$$

3. Gated injection

For the \(f\)-th forecast token and block \(l\), a non-negative cosine gate decides when to steer, weakening the update once the hidden state already points along the steering direction:

$$\alpha_{f,l} = b + \mathrm{ReLU}\Big(-\cos\big(\mathbf{h}_{f,l},\, \boldsymbol{\Delta}^{(l)}(\mathbf{x})\big) + m\Big)^{p}, \tag{4}$$

and each layer segment is \(\ell_2\)-normalised so that a single global strength \(\lambda\) controls how much to steer:

$$\tilde{\mathbf{h}}_{f,l} = \mathbf{h}_{f,l} + \lambda\, \alpha_{f,l}\, \frac{\boldsymbol{\Delta}^{(l)}(\mathbf{x})}{\lVert \boldsymbol{\Delta}^{(l)}(\mathbf{x}) \rVert_2 + \epsilon}. \tag{5}$$

The per-step, per-layer perturbation is therefore bounded by \(\lambda\,(b + (1+m)^p)\) regardless of the data or backbone. All main experiments use \((b, m, p) = (0.1, 0.1, 1.25)\).

Four panels: (a) a query series and the retrieved training queries that overlap with it; (b) hidden states of the input, the base prediction and the ground truth projected on two principal components, with the steering vector pointing from the base distribution to the ground-truth distribution; (c) the steering vector added to every layer of the frozen model; (d) the SteerCast prediction following the ground truth more closely than the base prediction.
SteerCast at a glance: (a) retrieve training histories similar to the query; (b) the steering vector points from the base-prediction representations towards the ground-truth representations; (c) it is injected into every layer of the frozen forecaster; (d) the steered forecast tracks the ground truth more closely than the base prediction.

Results

Ten benchmarks (ETTh1/h2/m1/m2, Exchange, Weather, Illness, and the Monash series US Births, SaugeenDay and Sunspots), three decoder-only backbones, horizons {96, 192, 336, 720} ({24, 36, 48, 60} for Illness). The retrieval database is built from the chronological training split only, hyperparameters such as \(k\) are selected on the validation split, and MSE is reported on the held-out test split.

25/30

dataset–backbone entries with the lowest or tied-lowest MSE (various look-back, Table 1)

24/30

entries with the lowest or tied-lowest MSE when one 512→96 database serves all horizons (Table 2)

1.12×

inference time of the fine-tuned model, vs. 1.18× for RAF and 1.60× for RAFT (Time-MoE, Table 6)

0

gradient updates and extra input tokens: the backbone stays frozen after its original fine-tuning

Table 1. MSE of SteerCast, fine-tuning (FT), RAF and RAFT across 10 datasets, averaged over all prediction lengths, with a look-back window that grows with the horizon (512/1024/2048/3072 for horizons 96/192/336/720). Promotion: % MSE reduction of SteerCast over RAFT. Bold: lowest MSE per backbone and dataset.

BackboneMethodETTh1ETTh2ETTm1ETTm2Exch.Wthr.Ill.BirthsSaug.Suns.
Time-MoEFT0.3890.3660.3500.3670.4280.2413.3920.8550.9990.429
RAF0.3980.3560.3580.3730.4400.2493.3220.9230.9960.438
RAFT0.3890.3590.3490.3490.4490.2423.2790.7240.9660.422
SteerCast (ours)0.3800.3510.3450.3390.4180.2423.2320.6390.9830.420
Promotion2.3%2.2%1.1%2.8%6.9%0.0%1.4%11.7%−1.8%0.5%
Timer-XLFT0.6810.3770.3840.2790.5460.2522.8940.7481.0820.399
RAF0.6970.4240.3910.2890.5610.2622.9410.6741.1180.395
RAFT0.7090.4140.4030.3040.5300.2662.8930.6231.0330.391
SteerCast (ours)0.6810.3720.3810.2800.5180.2552.8890.6251.0290.391
Promotion3.9%10.1%5.5%7.9%2.3%4.1%0.1%−0.3%0.4%0.0%
TimesFMFT0.4680.4210.4440.3100.5030.2703.2130.6671.0030.181
RAF0.4620.4240.4370.3250.4990.2683.1560.6871.0370.371
RAFT0.4520.4240.4400.3070.4980.2643.1670.6480.9850.173
SteerCast (ours)0.4520.4090.4340.3020.4850.2553.0830.5380.9560.171
Promotion0.0%3.6%1.5%1.4%2.6%3.4%2.7%16.9%2.9%1.2%

Table 2. Same comparison with the look-back window fixed to 512 for every horizon; a single database built at 512→96 is reused for all horizons. Promotion: % MSE reduction of SteerCast over RAFT. Bold: lowest MSE per backbone and dataset.

BackboneMethodETTh1ETTh2ETTm1ETTm2Exch.Wthr.Ill.BirthsSaug.Suns.
Time-MoEFT0.4070.5370.4010.5090.4250.2373.8381.0121.1500.566
RAF0.4000.5130.3940.5180.4310.2423.8480.9531.1390.541
RAFT0.4020.5180.3910.5190.4350.2363.8680.8511.1060.500
SteerCast (ours)0.3940.4880.3870.5130.4200.2383.8170.8321.1240.483
Promotion2.0%5.8%1.0%1.2%3.4%−0.8%1.3%2.2%−1.6%3.4%
Timer-XLFT0.6410.3940.4200.2940.5370.2482.5240.7041.2020.426
RAF0.6530.4000.4250.3050.4570.2652.6060.6291.1120.410
RAFT0.6610.4050.4220.3090.4610.2712.5840.6081.0950.413
SteerCast (ours)0.6240.3860.4180.2920.4360.2462.5280.6201.1020.402
Promotion5.6%4.7%0.9%5.5%5.4%9.2%2.2%−2.0%−0.6%2.7%
TimesFMFT0.5020.3990.4180.3030.4280.2233.3000.2681.0150.338
RAF0.5210.3830.4160.2960.4200.2213.2000.5501.0400.323
RAFT0.5080.3840.4120.2990.4220.2193.2500.2560.9840.325
SteerCast (ours)0.4760.3810.3940.2910.4080.2133.1630.2490.9520.319
Promotion6.3%0.9%4.4%2.7%3.3%2.6%2.7%2.8%3.3%1.8%

Datasets: Exch. = Exchange, Wthr. = Weather, Ill. = Illness, Births = US Births, Saug. = SaugeenDay, Suns. = Sunspots. Full per-horizon MSE/MAE results are in the paper’s appendix.

Analysis

Steer every layer

Injecting \(\boldsymbol{\Delta}\) into all blocks gives 0.394 average MSE on ETTh1; steering only the first, middle or last block raises it by 2.0–3.0% (Table 4a).

The gate matters at long horizons

Replacing the cosine gate by a constant \(\alpha_{f,l}\equiv b\) degrades accuracy as the horizon grows; on ETTh2 at horizon 720 the MSE rises from 0.745 to 0.920 (Table 4b, Appendix A.6).

Steer gently

On all four ETT datasets a small strength \(\lambda=0.01\) is best; \(\lambda=0.05\) and \(0.1\) over-correct the backbone dynamics, increasingly so at longer horizons (Figure 4, left).

A larger memory helps

Growing the database from 10% to 100% of the training set lowers SteerCast’s average MSE on ETTh2 from 0.524 to 0.488; it outperforms fine-tuning at every size, with the largest gains at 75–100% (Figure 3, right).

Latent correction, not copied futures

Averaging the fine-tuned forecast with the retrieved future windows in output space is worse on all nine datasets tested: 0.613 vs. 0.542 average MSE for SteerCast (−11.6%, Table 11).

Left: average MSE over nine datasets versus prediction length for a single reused database and for per-horizon databases; the per-horizon database is increasingly better at longer horizons. Right: on ETTh2, SteerCast MSE decreases from about 0.524 to 0.488 as the database grows from 10% to 100% of the training set, staying below the fine-tune line at every size.
Figure 3. Database design (Time-MoE). (Left) A single reused database vs. per-horizon databases. (Right) ETTh2: MSE vs. retrieval database size, with Fine-tune and RAFT as horizontal baselines.
Left: average MSE across horizons on ETTh1, ETTh2, ETTm1 and ETTm2 for steering strengths 0.01, 0.05 and 0.1; error grows with the strength. Right: ETTh1 MSE versus prediction length when the retrieval key is taken from the first, middle or last layer; the last layer is lowest.
Figure 4. (Left) Sensitivity to the steering strength \(\lambda\). (Right) ETTh1 retrieval-key layer ablation: first, middle, or last layer.