AdaCast: Conditional Parameter Generation for Adaptive Time Series Forecasting
Organizations: Auburn University
Abstract
Time-series foundation models (TSFMs) have achieved strong forecasting performance across domains. However, most adaptation methods remain static. Existing all-in-one methods learn a single set of dataset-level parameter updates and apply the same adapted model to every input. As a result, they cannot adapt the model parameters to the temporal patterns, seasonality and dynamics of each input time series. This limits their ability to produce forecasts that are tailored to heterogeneous inputs. To address this limitation, we propose AdaCast, a conditional parameter generation framework for time-series forecasting. AdaCast uses a generator to produce input-specific low-rank parameter updates for a frozen pretrained TSFM. These updates adapt the model to each input during both training and inference. Across six public benchmarks, AdaCast consistently outperforms static adaptation baseline in in-domain forecasting and improves zero-shot generalization to held-out datasets across domains. These results demonstrate that conditional parameter generation provides an effective approach for adaptive forecasting.
Figures & tables
| AdaCast(Ours) | Chronos-Bolt B LoRA | Chronos-Bolt B | MOMENT | TTM B | Moirai B | TimesFM | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Dataset | MSE | MAE | MSE | MAE | MSE | MAE | MSE | MAE | MSE | MAE | MSE | MAE | MSE | MAE |
| ETTh1 | 0.3593 | 0.3635 | 0.3569 | 0.3633 | 0.3616 | 0.3650 | 0.3920 | 0.4110 | 0.3619 | 0.3710 | 0.3686 | 0.3835 | 0.4254 | 0.3825 |
| ETTh2 | 0.2450 | 0.2979 | 0.2491 | 0.2988 | 0.2517 | 0.2992 | 0.2742 | 0.3327 | 0.2531 | 0.3032 | 0.2547 | 0.3053 | 0.2894 | 0.3233 |
| ETTm1 | 0.3017 | 0.3143 | 0.3057 | 0.3169 | 0.3109 | 0.3185 | 0.3506 | 0.3824 | 0.3152 | 0.3248 | 0.5399 | 0.4322 | 0.3321 | 0.3326 |
| ETTm2 | 0.1485 | 0.2228 | 0.1493 | 0.2232 | 0.1487 | 0.2236 | 0.1703 | 0.2579 | 0.1511 | 0.2405 | 0.1958 | 0.2687 | 0.1703 | 0.2552 |
| Weather | 0.1491 | 0.1789 | 0.1515 | 0.1816 | 0.1525 | 0.1825 | 0.1801 | 0.2384 | 0.1543 | 0.1893 | 0.1711 | 0.1912 | — | — |
| Dataset | Frozen Backbone | Static LoRA | AdaCast |
|---|---|---|---|
| ETTh1 | 0.3616 / 0.3650 | 0.3505 / 0.3610 | 0.3431 / 0.3594 |
| ETTh2 | 0.2517 / 0.2992 | 0.2412 / 0.2997 | 0.2370 / 0.2919 |
| ETTm1 | 0.3109 / 0.3185 | 0.2840 / 0.3155 | 0.2603 / 0.3040 |
| ETTm2 | 0.1487 / 0.2236 | 0.1401 / 0.2171 | 0.1385 / 0.2160 |
| Zero-shot | In-domain | |||||
|---|---|---|---|---|---|---|
| Dataset | Matched | Shuffled | Matched | Shuffled | ||
| ETTh1 | 0.3582 | 0.3594 | 0.3431 | 0.3450 | ||
| ETTh2 | 0.2442 | 0.2478 | 0.2370 | 0.2449 | ||
| ETTm1 | 0.3008 | 0.3005 | 0.2603 | 0.2666 | ||
| ETTm2 | 0.1481 | 0.1494 | 0.1385 | 0.1401 | ||
| Weather | 0.1490 | 0.1491 | 0.1255 | 0.1295 | ||
| Segment Disabled | Full | |||
|---|---|---|---|---|
| Dataset | Seg 1 | Seg 2 | Seg 3 | AdaCast |
| ETTh1 | 0.3510 / 0.3617 | 0.3460 / 0.3596 | 0.3491 / 0.3603 | 0.3431 / 0.3594 |
| ETTh2 | 0.2432 / 0.2946 | 0.2416 / 0.2940 | 0.2377 / 0.2923 | 0.2370 / 0.2919 |
| ETTm1 | 0.2957 / 0.3132 | 0.2751 / 0.3056 | 0.2747 / 0.3064 | 0.2603 / 0.3040 |
| ETTm2 | 0.1447 / 0.2202 | 0.1400 / 0.2168 | 0.1403 / 0.2168 | 0.1385 / 0.2160 |
| AdaCast–TimesFM 2.5 | |||
|---|---|---|---|
| Dataset | Frozen TimesFM 2.5 | Zero-shot | In-domain |
| ETTh1 | 0.3734 / 0.3729 | 0.3628 / 0.3766 | 0.3475 / 0.3656 |
| ETTh2 | 0.2792 / 0.3151 | 0.2610 / 0.3132 | 0.2548 / 0.3069 |
| ETTm1 | 0.2988 / 0.3186 | 0.2874 / 0.3175 | 0.2764 / 0.3150 |
| ETTm2 | 0.1574 / 0.2295 | 0.1534 / 0.2301 | 0.1410 / 0.2228 |
| Weather | 0.1430 / 0.1686 | 0.1403 / 0.1689 | 0.1289 / 0.1694 |
Appendix figures & tables14 assets
Supplementary material from the paper’s appendix.
Appendix
| Dataset | |||
|---|---|---|---|
| ETTh1 | 7 | 17,420 | (8065, 2817, 2817) |
| ETTh2 | 7 | 17,420 | (8065, 2817, 2817) |
| ETTm1 | 7 | 69,680 | (33985, 11457, 11457) |
| ETTm2 | 7 | 69,680 | (33985, 11457, 11457) |
| Exchange Rate | 8 | 7,588 | (4736, 697, 1454) |
| Weather | 21 | 52,696 | (36312, 5207, 10476) |
| Static LoRA | AdaCast | |
| Frozen backbone params | 205,292,928 | 205,292,928 |
| Trainable params | 7,667,712 | 12,864,000 |
| Trainable fraction | 3.60% | 5.90% |
| Batch size | 32 | 32 |
| Time per univariate series (ms) | ||
| ETTh1 | 0.39 | 12.22 |
| Chronos-Bolt | Static LoRA | AdaCast | |
|---|---|---|---|
| Trainable params | 0 | 7,667,712 | 12,864,000 |
| Time per series (ms) | 0.21 | 0.23 | 2.60 |
| Throughput (series/s) | 4,680 | 4,396 | 384 |
| Peak memory (GB) | 1.49 | 1.52 | 21.6 |
| AdaCast (Zero-shot) | Chronos-Bolt B | |||
|---|---|---|---|---|
| Dataset | MSE | MAE | MSE | MAE |
| ETTh1 | 0.3616 | 0.3650 | ||
| ETTh2 | 0.2517 | 0.2992 | ||
| ETTm1 | 0.3109 | 0.3185 | ||
| ETTm2 | 0.1487 | 0.2236 | ||
| Weather | 0.1525 | 0.1825 | ||
| Dataset | ||||
|---|---|---|---|---|
| ETTh1 | 0.3602 / 0.3634 | 0.3601 / 0.3638 | 0.3593 / 0.3635 | 0.3598 / 0.3638 |
| ETTh2 | 0.2444 / 0.2972 | 0.2452 / 0.2981 | 0.2450 / 0.2979 | 0.2450 / 0.2977 |
| ETTm1 | 0.3021 / 0.3145 | 0.3025 / 0.3149 | 0.3017 / 0.3143 | 0.3024 / 0.3144 |
| ETTm2 | 0.1484 / 0.2239 | 0.1483 / 0.2244 | 0.1485 / 0.2228 | 0.1490 / 0.2247 |
| Weather | 0.1501 / 0.1891 | 0.1497 / 0.1824 | 0.1491 / 0.1789 | 0.1492 / 0.1785 |
| Exchange | 0.0654 / 0.1701 | 0.0644 / 0.1697 | 0.0594 / 0.1683 | 0.0591 / 0.1683 |
| Dataset | Chronos-Bolt LoRA | AdaCast |
|---|---|---|
| ETTh1 | 0.3505 / 0.3610 | 0.3431 / 0.3594 |
| ETTh2 | 0.2412 / 0.2997 | 0.2370 / 0.2919 |
| ETTm1 | 0.2840 / 0.3155 | 0.2603 / 0.3040 |
| ETTm2 | 0.1401 / 0.2171 | 0.1385 / 0.2160 |
| Weather | 0.1301 / 0.1592 | 0.1255 / 0.1544 |
| Exchange | 0.0591 / 0.1670 | 0.0571 / 0.1650 |
| Blk | Med. | Mean | Std. | Max. | Rec. | Adj. | ||
|---|---|---|---|---|---|---|---|---|
| ETTh1 | 9 | 0.84 | 1.02 | 1.87 | 2.28 | 12.0 | 1.36 | |
| 10 | 1.00 | 10.9 | 10.8 | 5.76 | 41.9 | 1.22 | 9.69 | |
| 11 | 1.00 | 25.8 | 29.5 | 16.2 | 98.9 | 3.82 | 21.9 | |
| ETTh2 | 9 | 0.88 | 1.18 | 1.51 | 2.38 | 18.1 | 1.26 | |
| 10 | 1.00 | 6.87 | 7.60 | 3.86 | 20.8 | 0.13 | 6.75 | |
| 11 | 1.00 | 20.8 | 41.3 | 140 | 1149 | 0.95 | 19.9 |
| Horizon | Methods | ETTh1 | ETTh2 | ETTm1 | ETTm2 | Weather | Exchange |
|---|---|---|---|---|---|---|---|
| 64 | Chronos Zeroshot | 0.3616 | 0.2517 | 0.3109 | 0.1487 | 0.1525 | 0.0673 |
| AdaCast (In-domain) | 0.3431 | 0.2370 | 0.2603 | 0.1385 | 0.1255 | 0.0571 | |
| AdaCast (Zero-shot) | 0.3593 | 0.2450 | 0.3017 | 0.1485 | 0.1491 | 0.0594 | |
| 96 | Chronos Zeroshot | 0.3859 | 0.2899 | 0.3323 | 0.1779 | 0.1777 | 0.0993 |
| AdaCast (In-domain) | 0.3691 | 0.2739 | 0.2891 | 0.1672 | 0.1459 | 0.0870 | |
| AdaCast (Zero-shot) | 0.3798 | 0.2789 | 0.3259 | 0.1781 | 0.1763 | 0.0918 |
| Setting | Value |
|---|---|
| Backbone | Chronos-Bolt Base |
| Decoder blocks | |
| Latent width | |
| TopK sparsity | |
| Auxiliary TopK width | |
| Optimizer | Adam, , |
| Dataset | Chronos-Bolt Zero-shot | Full AdaCast | Best restricted | Blocks 9–11 |
|---|---|---|---|---|
| ETTh1 | 0.3616/0.3650 | 0.3431/0.3594 | 0.3453/0.3584 [0–3] | 0.3506/0.3620 |
| ETTh2 | 0.2517/0.2992 | 0.2370/0.2919 | 0.2364/0.2919 [6–9] | 0.2394/0.2949 |
| ETTm1 | 0.3109/0.3185 | 0.2603/0.3040 | 0.2621/0.3043 [0–8] | 0.2798/0.3084 |
| ETTm2 | 0.1487/0.2236 | 0.1385/0.2160 | 0.1375/0.2156 [0–3] | 0.1409/0.2182 |