Paper deep dive
TinyCast: Probabilistic Zero-Shot Forecasting with Computed Periodicity
Armin Steinhauser
Intelligence
Status: succeeded | Model: Gemma-4-26B-A4B | Prompt: intel-v1 | Confidence: 94%
Last extracted: 8/22/2026, 2:57:39 AM
Summary
The paper introduces TinyCast, a zero-shot time series forecasting model with 146,505 parameters that computes periodicity via a zero-parameter spectral detector rather than learning it. It uses a dilated convolutional encoder and a block-autoregressive quantile decoder to emit predictive distributions. TinyCast is designed for embedded hardware, supporting static INT8 quantization and end-to-end forecasting without per-signal fitting, outperforming larger models on benchmarks like GIFT-Eval, Chronos-ZS, and fev-bench.
Entities (10)
Relation Signals (8)
Armin Steinhauser → affiliatedwith → RAWS Labs
confidence 95% · Affiliation: RAWS Labs
TinyCast → evaluatedon → Gift-Eval
confidence 95% · It is smaller than every zero-shot entry on the GIFT-Eval board
TinyCast → hascomponent → Spectral Detector
confidence 95% · A zero-parameter spectral detector supplies the dominant periods
TinyCast → hascomponent → Dilated Convolutional Encoder
confidence 95% · a dilated convolutional encoder and a block-autoregressive quantile decoder model the rest.
TinyCast → hascomponent → Block-Autoregressive Quantile Decoder
confidence 95% · a dilated convolutional encoder and a block-autoregressive quantile decoder model the rest.
TinyCast → evaluatedon → Chronos-ZS
confidence 90% · On Chronos-ZS and fev-bench every neural model ahead of it carries at least 28 times its parameters.
TinyCast → evaluatedon → fev-bench
confidence 90% · On Chronos-ZS and fev-bench every neural model ahead of it carries at least 28 times its parameters.
TinyCast → supportsquantization → INT8
confidence 90% · it exports to static INT8 and forecasts end to end on an embedded device
Cypher Suggestions (0)
No Cypher suggestions yet.
Abstract
Abstract:We introduce TinyCast, an attention-free zero-shot forecaster that emits a predictive distribution from 146,505 parameters, on the premise that at this size the periodic structure of a context is worth computing rather than learning. A zero-parameter spectral detector supplies the dominant periods, the context is folded on their phase, and a dilated convolutional encoder and a block-autoregressive quantile decoder model the rest. It is smaller than every zero-shot entry on the GIFT-Eval board whose parameter count can be established. On probabilistic accuracy it defines the size-accuracy frontier. Among zero-shot entries declaring no test-data leakage it is the only one below 1.4M parameters that emits a predictive distribution, and every entry scoring better carries at least that budget. On Chronos-ZS and fev-bench every neural model ahead of it carries at least 28 times its parameters. Because the mixing path is convolutions and matrix multiplications only, it exports to static INT8 and forecasts end to end on an embedded device without per-signal fitting.
Tags
Links
- Source: https://arxiv.org/abs/2608.15767v1
- Canonical: https://arxiv.org/abs/2608.15767v1
Trouble viewing inline? Open PDF directly →
Full Text
148,030 characters extracted from source content.
Expand or collapse full text
TinyCast: Probabilistic Zero-Shot Forecasting with Computed Periodicity Armin Steinhauser armin.steinhauser@raws.at Affiliation: RAWS Labs Abstract We introduce TinyCast, an attention-free zero-shot forecaster that emits a predictive distribution from 146,505146,505 parameters, on the premise that at this size the periodic structure of a context is worth computing rather than learning. A zero-parameter spectral detector supplies the dominant periods, the context is folded on their phase, and a dilated convolutional encoder and a block-autoregressive quantile decoder model the rest. It is smaller than every zero-shot entry on the GIFT-Eval board whose parameter count can be established. On probabilistic accuracy it defines the size-accuracy frontier. Among zero-shot entries declaring no test-data leakage it is the only one below 1.4 M parameters that emits a predictive distribution, and every entry scoring better carries at least that budget. On Chronos-ZS and fev-bench every neural model ahead of it carries at least 2828 times its parameters. Because the mixing path is convolutions and matrix multiplications only, it exports to static INT8 and forecasts end to end on an embedded device without per-signal fitting. 1 Introduction Time series forecasting underlies decision-making in energy, industrial monitoring, logistics and environmental sensing. For most of its history the field has operated in a one-model-per-dataset regime: a model is trained on the target series and used to predict its continuation. Time series foundation models depart from it by pretraining a single model on a large and diverse corpus and forecasting unseen series zero-shot, without parameter updates (Ansari et al. 2024; Das et al. 2024; Woo et al. 2024). Whether such a model is usable where the data is produced turns on two properties. One is size: since a single device design is deployed across varying sites, machines and signal types, the forecaster must fit whatever compute the unit already has. The other is what a forecast carries, since a point estimate does not tell a consumer how far to trust it, and control loops and alarm thresholds act on the uncertainty around a forecast (Gneiting & Raftery 2007). The two have not descended together. Below a megabyte of parameters, the models that declare no test-data leakage and publish per-configuration results emit one value per step. The binding cost of the per-dataset regime is human, and it does not fall as compute becomes cheaper. A history must be collected and a model fitted, validated and maintained for every signal at every site, and a fleet of per-signal specialists multiplies acceptance testing and firmware updates. A per-dataset model can be built with fewer than a thousand parameters (Lin et al. 2024b). What is missing, however, is generality at that size. The only alternative that needs no per-signal setup is classical statistics, which fits each series at inference. Our question is therefore not how accurate a large forecaster can become, but how small a probabilistic one can be. We present TinyCast, a time series foundation model built for that budget. Since at this size any capacity spent rediscovering seasonality is capacity taken from the structure no fixed computation delivers, TinyCast computes periodicity explicitly, at no parameter cost, and spends what it learns on the rest. The model is attention-free: a dilated convolutional encoder, a zero-parameter periodicity detector computed from a single Fourier transform, and a decoder that emits nine nominal quantile estimates at any future position, evaluated here to 720720 steps. As every learned operation is a convolution, a matrix multiplication, a normalization or an elementwise gate, the model stores its weights in INT8 and needs no operator an embedded runtime does not already ship. It runs in fixed-window working memory. Trained once, zero-shot, on GIFT-Eval-Pretrain together with synthetic data, it has 146,505146,505 parameters. In this work, we make the following contributions: • An architecture that computes periodicity rather than learning it. The context is folded on the phase of the detected periods. • Smaller than every zero-shot GIFT-Eval board entry whose parameter count can be established, and, among zero-shot entries declaring no test-data leakage, the only one below 1.4 M parameters that emits a predictive distribution. Every model in Table 1 with a better probabilistic score carries at least 1.4 M parameters. On Chronos-ZS and fev-bench every neural model ahead of it carries at least 2828 times ours. Appendix B.2 states which models the comparison admits and why. • Controlled experiments that locate the result, and the interventions that failed. Retraining the shipped budget without the detector costs 0.00710.0071 in aggregate point accuracy, about eight times the spread across three seeds. Phase binning is the largest single contributor within its family, and the rejected interventions are reported with their measurements (Appendix C.5). • A general zero-shot forecaster running on embedded hardware. The INT8 core forecasts end to end on the device from one firmware image, with no host, no network and no per-signal fitting. Section 4.3 gives what the integer path costs. 2 Related work TinyCast sits where three lines of work meet: pretrained zero-shot forecasting, attention-free sequence mixing, and forecasting on constrained hardware. We consider forecasting only, so models built for classification or representation learning are outside the comparison. Time series foundation models Pretrained zero-shot forecasters, from decoder-only and encoder transformers to state-space encoders and tabular and PFN-based predictors, have closed much of the gap to per-dataset supervised models without parameter updates (Ansari et al. 2024; Ansari et al. 2025; Das et al. 2024; Woo et al. 2024; Liu et al. 2025; Rasul et al. 2023; Graf et al. 2026; Hoo et al. 2026; Moroshan et al. 2025). We train on Chronos’s KernelSynth corpus and evaluate against its zero-shot task selection (Ansari et al. 2024). Comparison rests on benchmarks that publish per-task results for every entrant. GIFT-Eval (Aksu et al. 2024) spans 97 configurations over seven domains and three forecast terms, and scores point and probabilistic accuracy separately. Chronos-ZS covers a different 27-dataset selection, and fev-bench adds covariate-informed and multivariate tasks a univariate model must take one series at a time. Most entrants are large and mix sequences by attention or FFT, both hostile to constrained hardware, with TiRex-2, Chronos-2 and TimesFM-2.5 leading the single-model board entries at the commit we pin (Podest et al. 2026; Ansari et al. 2025; Google Research 2025). Although linear baselines argue that accuracy need not require large attention models, DLinear’s own GIFT-Eval point accuracy is worse than seasonal naive, at 1.0611.061, so we take the argument and not the result (Zeng et al. 2023; Aksu et al. 2024). A smaller line of work asks how far the parameter count can fall. TTM (Ekambaram et al. 2024) is a compact mixer for zero- and few-shot transfer, reserving cross-channel and exogenous modeling for fine-tuning. Reverso (Fu et al. 2026), our closest comparator, interleaves long convolutions with DeltaNet linear-recurrence layers and trains three sizes from 200 K to 2.6 M, of which the 550 K checkpoint is released. It matches or beats models one to three orders of magnitude larger, and defines the small end of the frontier we extend. Below 10 M the field is thin and reaches that scale by making the learned computation more efficient: dynamic patching in Kairos (Feng et al. 2025), interleaved block attention in Xihe-tiny (Sun et al. 2025), which publishes no per-configuration result and so is not among our comparators, a cross-variate module in CITRAS-FM (Yamaguchi et al. 2026), and FlowState (Graf et al. 2026) and Toto-2.0-4m (Khwaja et al. 2026) in the same band. TinyCast instead takes work out of the learned computation. Where these models reach periodic structure through attention or patching, we measure it from the context at no parameter cost. FlowState (Graf et al. 2026) is the closest precedent, scaling its state-space encoder by a period it reads from dataset metadata. We detect the period from the series instead, which is what makes the model usable on a signal it has no metadata for. Attention-free mixing and explicit periodicity Our encoder is a dilated causal convolution stack, the WaveNet primitive (van den Oord et al. 2016) in the residual form of the temporal convolutional network (Bai et al. 2018), which reaches a long receptive field through local kernels alone. State-space models (Gu et al. 2020; Gu et al. 2022; Gu & Dao 2024) and the recurrent xLSTM backbone behind TiRex (Auer et al. 2025) also stream in constant memory. Only the dilated stack, however, is built entirely from the kernels an integer runtime ships (Section 3.3). Measuring seasonality rather than learning it is equally long established: classical decomposition estimates a seasonal component directly (Cleveland et al. 1990), the spectral test we use predates deep forecasting (Fisher 1929) and its behavior away from white noise is still being characterized (Quinn 2021), TimesNet folds a series on periods read from its spectrum (Wu et al. 2023), and Autoformer replaces attention with autocorrelation over lag offsets (Wu et al. 2021). The closest work is at our scale: SparseTSF downsamples on a known period below a thousand parameters (Lin et al. 2024b), CycleNet learns an explicit recurrent cycle and predicts the residual (Lin et al. 2024a), and FITS interpolates in the complex frequency domain at around ten thousand parameters with edge deployment as its motivation (Xu et al. 2024). LightGTS (Wang et al. 2025b) carries the same lever into a pretrained general forecaster, tokenizing on an extracted period. All four show that phase-indexed structure is worth its cost at small budgets. They differ from our setting the same two ways: the periodic hyperparameter, a cycle length for SparseTSF and CycleNet and a harmonic cutoff for FITS, is supplied per dataset, and the model is trained on the series it will forecast. On-device forecasting TinyML supplies the substrate: efficient kernels (Lai et al. 2018; David et al. 2021), tiny-model design and search (Lin et al. 2020; Saha et al. 2024), whose objective presumes a fixed task and so does not transfer when the target signal is unknown at design time, and on-device time series systems (Zainab et al. 2026). The forecasters among these are bespoke models trained for one signal, presupposing that signal known at programming time and a labeled history to train on. Pretrained models of other modalities have reached this device class, including FEMBA (Tegon et al. 2026), a bidirectional-Mamba electroencephalography model at two-bit weights, and a small language model generating on an embedded system (Scherer et al. 2024). We are aware of no report, at the time of writing, of a general zero-shot probabilistic time series forecaster running on a single-core Cortex-M-class part with no neural accelerator and no off-chip memory. We place the forecasting core of such a model on that class of device: one firmware image that forecasts whatever signal the unit is later pointed at, without per-signal data collection or retraining, and that can serve as an initialization where a labeled history appears, though we do not test fine-tuning. 3 Methodology A budget of 146,505146,505 parameters sets the design: whatever the context already exposes to a fixed computation is computed rather than learned, and the learned parameters are spent on the rest. Four components follow: a zero-parameter periodicity detector estimates the dominant seasonalities, a positional encoding turns them into per-position features, a dilated-convolution encoder mixes the context together with those features, and a decoder queries the encoded context at every future position (Figure 1). Specific to TinyCast are the parameterization of the positional encoding by the detected periods, which aligns its phase channels with the series’ own seasonality, and a learned convolutional correction over the horizon axis in the decoder. TinyCast is attention-free and forecasts in blocks. Let y=(y0,…,yL−1)∈ℝLy=(y_0,…,y_L-1) ^L denote a univariate context, H the requested horizon and p=48p=48 the fixed block length. One pass maps a context to nine nominal quantile estimates for one block, at the deciles τ∈0.1,0.2,…,0.9τ∈\0.1,0.2,…,0.9\, and arbitrary horizons compose this map block-autoregressively: Q(b)=fθ(z(b))∈ℝ9×p,y^=[Q(0);…;Q(⌈H/p⌉−1)]:, 0:H−1,Q^(b)=f_θ(z^(b)) ^9× p, y= [\,Q^(0);…;Q^( H/p -1)\, ]_:,\,0:H-1, (1) where fθf_θ is the learned block predictor with parameters θ, b≥0b≥ 0 indexes blocks, Q(b)0.5,:Q^(b)_0.5,: is the median row, and z(0)=yz^(0)=y. The next context z(b+1)z^(b+1) consists of the last L values of [z(b);Q0.5,:(b)][\,z^(b);Q^(b)_0.5,:]. The median of each completed block becomes context for the next. The assembled forecast is truncated to the first H steps. The horizon thus enters only through the number of blocks, and the future offsets h below run over 0,…,p−1\0,…,p-1\, position L+hL+h being the (h+1)(h+1)-th forecast step. Figure 1: TinyCast architecture. (a) A single encoder block. (b) The pipeline for one 48-step block: the normalized context and the period-conditioned positional encoding pass through the encoder and decoder to nine quantiles at all block positions in parallel; the dashed arrow is the median feedback that chains blocks. (c) The decoder, whose three readouts compose the per-horizon query qhq_h. 3.1 Architecture The four components appear below in the order a context meets them, after the normalization that precedes them all. Normalization Since series reach the model on arbitrary and unrelated scales, each context is min-max normalized by its own minimum and maximum. The statistics are detached from the gradient and their inverse is applied to the output, following Reverso’s convention (Fu et al. 2026), a per-window instance of reversible normalization (Kim et al. 2022). Non-constant contexts map to [0,1][0,1], a bounded range that also suits INT8 quantization (Appendix A). Periodicity detection Because the premise requires the seasonality of an unseen series to be known before a single parameter is spent on it, the estimate has to come from the context itself. On the DC-removed context we form the normalized periodogram from one real-valued fast Fourier transform. We keep the local maxima that pass Fisher’s significance test for harmonic analysis (Fisher 1929) at α=0.05α=0.05, Bonferroni-corrected across bins, and turn the retained bins into integer periods p1,…,pKp_1,…,p_K by rounding. Slots whose peak fails the test are set to zero, which zeroes their phase channels and collapses their fold to the whole-context average. Four slots (K=4K=4) let a series hold co-existing cycles, a daily and a weekly period, for example. Section 4.2 tests detection against the metadata-declared period, and Appendix C.4 tests the cap of four. This is the model’s only spectral operation: one O(LlogL)O(L L) transform per forward pass, carrying no parameters. It can be re-estimated on every call or cached for slowly varying series dynamics. Positional encoding Because the detected periods are of no use unless the network can read them at every position, future positions included, they parameterize an encoding evaluated at any t∈[0,L+H]t∈[0,L+H] instead of an embedding table. Each period slot contributes a phase pair (sin(2πt/pk),cos(2πt/pk)) ( (2π t/p_k),\ (2π t/p_k) ), zero for a slot that failed the significance test. Five recency channels carry the signed normalized distance Δ(t) (t) from the last observed position: the distance itself, its signed logarithm, which compresses distance symmetrically, and three exponential decays whose rates form a geometric ladder, the same multi-scale principle as the encoder’s dilation schedule. Like the sinusoidal encoding of the Transformer (Vaswani et al. 2017) all channels are deterministic, bounded and free of parameters. Unlike it, the phase frequencies are set per series by the detected periods, which is what aligns the encoding with the series in front of it. Encoder The encoder has to reach across the whole context without a global mixing operator, for the reason Section 3.3 explains: the operators that mix globally are the ones the deployment target cannot execute. Dilated causal convolution buys the same reach from local kernels alone (van den Oord et al. 2016). The value channel, concatenated with the positional encoding evaluated at the context positions, is projected to width D=64D=64 and passed through N=10N=10 blocks. Block i∈1,…,Ni∈\1,…,N\ mixes over time with a depthwise-separable convolution (Howard et al. 2017) of kernel size Kc=3K_c=3 and dilation di=2i−1d_i=2^\,i-1, so the dilations run from 11 to 512512 and the receptive field grows to 1+(Kc−1)∑i=1Ndi=20471+(K_c-1) _i=1^Nd_i=2047, one sample short of the full context, with no downsampling. The context length L=2048L=2048 follows from what has to be resolvable: a window of that size spans several cycles of even low-frequency seasonality, the weekly and longer periods in the benchmark’s hourly and daily series. Each block pairs its convolution with a SwiGLU feed-forward (Shazeer 2020), both residual-added and RMS-normalized (Zhang & Sennrich 2019), and the last encoder block’s output is the encoder representation h∈ℝL×Dh ^L× D that the decoder reads. As the padding is causal, every output depends only on past samples, which is what lets the deployed runtime advance the encoder one position at a time, and Section 4.2 finds it free within resolution. Two choices hold the stack inside the budget. The time mixing is depthwise-separable, and a single SwiGLU is ALBERT-tied (Lan et al. 2020) across all ten blocks, so ten blocks pay for their convolutions and normalizations but for one feed-forward. Together they remove 191,680191,680 parameters: the same architecture without them is at 338,185338,185 more than twice the deployed size. Decoder Since a longer horizon must not cost another encoder pass per step, the decoder reads one encoding and assembles a query for each future position from three readouts: a pooled summary, phase binning, and a future-conv correction that convolves across the future positions. The pooled summary c=[h¯∥hL−1]∈ℝ2Dc=[ h\,\|\,h_L-1] ^2D, concatenating the mean encoder state and the last one, is static across the horizon and carries the context-level information. Phase binning is where the computed periodicity is spent, and the ablations of Section 4.2 identify it as the largest single contributor within the architecture family. It restores seasonal structure by folding the context on its own phase, averaging encoder states that occupy the same position within a cycle. Every position, future ones included, receives a phase by the same rule, one of nb=16n_b=16 bins of the period in slot k. Averaging the encoder states that share a bin folds the context into a cycle template of nbn_b entries per slot. A future position reads each template at its own phase, the K per-slot readouts being mixed by a learned Wphase∈ℝD×KDW_phase ^D× KD into sh∈ℝDs_h ^D. The architecture family’s best arm pairs phase binning with a recency gate, a second readout that bins positions by recency rather than phase and gates its contribution with a learned sigmoid. The shipped model drops it: removing the gate is part of a reduction that halves the parameter count without measurable cost (Section 4.2). Summary and phase binning are both horizon-agnostic: each hands every future position the same view of the context, differing only in which phase that position reads. Neither says anything about how the series moves near the position being predicted, which is what the third readout adds. It begins with a draft in value space rather than in encoder space. For each future position the draft is the average of the past normalized values sharing its phase of the dominant period, a seasonal continuation that costs no parameters. Each draft is paired with its position’s encoding and projected to width D. The p resulting vectors are appended to the last 128128 encoder states, a six-block causal depthwise-separable network runs over the joined sequence, and its last p outputs form the correction u0:p−1∈ℝp×Du_0:p-1 ^p× D. The draft is an input to that network, not a forecast it emits. Of the three readouts this one costs the most parameters (Appendix A). The positional encoding and the three readouts compose the per-horizon query, from which a residual SwiGLU with RMSNorm and a linear head emit the nine quantiles, de-normalized by the stored context statistics. Appendix A gives the query and the readouts formally. 3.2 Training Training rolls out four blocks autoregressively under scheduled sampling (Bengio et al. 2015), so the median feedback the deployed model runs on is seen during training. The base objective is the nine-quantile pinball loss (Koenker & Bassett 1978) plus one term of our own. This gated committing term of weight λ=0.3λ=0.3 is active only where repeating the last cycle at the sample’s metadata-derived lag would have beaten the median on the window. It is hinged so that it stops as soon as the median reaches the copy. Training is zero-shot with respect to GIFT-Eval: we pretrain on GIFT-Eval-Pretrain (Aksu et al. 2024)11 1 Weights, the code that trains and runs the model, and the evaluation artifacts are at https://github.com/raws-labs/tinycast and https://huggingface.co/raws-labs/tinycast. The corpus is GIFT-Eval-Pretrain and Chronos KernelSynth from their publishers plus four synthetic shards the released recipe regenerates; seed and configuration are in the checkpoint. after removing every dataset that overlaps the GIFT-Eval and Chronos-ZS test sets and three gridded-weather corpora. To that we add Chronos KernelSynth series (Ansari et al. 2024) and four synthetic shards, whose contribution Section 4.2 measures. Windows are drawn with sampling balanced across the benchmark’s frequency bands under a per-series cap and augmented with temporal flips, sign flips, downsampling and mixup (Zhang et al. 2018). The sign flip is what the inference-time symmetrization relies on. The deployed 14-channel encoder receives one value and 13 positional channels with no mask input. The released weights are the average of the last eight checkpoints. Appendix A gives the objective, the corpus and the full configuration. 3.3 Inference Since inference mirrors the training rollout, the decoder forecasts in blocks of 4848 steps, producing all positions of a block in parallel, then appends the block’s median to the context, re-encodes, and decodes the next block. One such pass is a core call, the unit of inference work we report throughout. Blocks are the unit because within a block nothing is fed back, so all 4848 positions are produced in one pass, while between blocks the context is updated rather than extrapolated. As the only time mixing inside the encoder is a causal dilated convolution, a forecast runs in fixed-window O(L)O(L) working memory. Only the last encoder block’s output is retained for the decoder’s pooled summary and phase fold, so the encoder is evaluated position by position against a bounded per-layer working set instead of materializing the full-window intermediate activations. While this set does not grow as the device runs, a forecast still needs to encode its full context window, a constraint we return to in Section 5. Every operation on the mixing path is a local convolution or a matrix multiplication, and that locality makes the learned mixing weights structurally amenable to per-output-channel INT8. The non-affine operations (RMSNorm, the SiLU gate and input normalization) remain FP32 islands. That locality also separates the dilated stack from the other attention-free primitives. A softmax attention matrix grows quadratically and softmax is non-affine. An FFT mixer needs the whole window at once and maps poorly to integer kernels. A state-space scan, though memory-bounded, needs a scan kernel an integer runtime does not ship, with outlier activation channels that complicate post-training quantization (Pierro & Abreu 2024). The dilated stack is the only one of the four that is bounded in memory and built entirely from kernels an integer runtime ships, and Section 4 measures accuracy under static W8A8. Two inference-time strategies apply off the device. To enforce the sign equivariance the training augmentation already rewards, the forecast is averaged with the forecast of the sign-negated input, at the cost of doubling the core calls (Das et al. 2024). Where the dominant spectral period of a configuration’s own test contexts is a clean integer multiple k of the canonical samples-per-day cycle for its frequency while the canonical cycle itself is absent from the spectrum, the context is decimated by k before encoding. The coarse forecast is then interpolated back to the native horizon, in the spirit of FlowState’s seasonality-derived temporal scaling (Graf et al. 2026). 4 Experiments The experiments have to settle four things: whether a forecaster at this parameter budget is competitive against the released field, which of the components of Section 3 carry the result, what that costs under the integer path the deployment target runs, and whether the integer-friendly mixing path buys execution on constrained hardware. Setup We evaluate zero-shot on GIFT-Eval (Aksu et al. 2024), a benchmark of 97 configurations, each one dataset at one sampling frequency and one of three forecast terms, spanning seven domains and ten frequencies. Every score is relative to seasonal naive, the baseline that repeats the value one season earlier. Three metrics measure different things: the mean absolute scaled error (MASE) for point accuracy, itself the mean absolute error divided by that of an in-sample one-season-back forecast; the weighted quantile loss (WQL) over the model’s nine quantile levels for probabilistic accuracy; and the mean scaled interval score (MSIS) for interval quality, which Table 1 reports and Appendix D analyzes. All three are normalized identically: a configuration’s value is divided by seasonal naive’s on that configuration, and the 9797 ratios are combined by geometric mean. We write these nGMASEnGMASE, nWQLnWQL and nMSISnMSIS, where 1.01.0 is parity with seasonal naive (Appendix B.1). GIFT-Eval carries the comparison: its published per-configuration results let every comparator aggregate be recomputed on identical footing. Chronos-ZS (Ansari et al. 2024) and fev-bench (Shchur et al. 2025) are scored over their own dataset selections, and neither informed any design decision. Profiles Three configurations of the same checkpoint recur below. The host profile is unquantized and applies both inference-time strategies of Section 3.3; it is what Table 1 reports. The quantized host profile applies the same strategies over static W8A8. The firmware profile is static W8A8 with neither, the configuration the board of Section 4.3 computes. All three are scored on the host, and Appendix B.1 gives all eight scored configurations. Baselines The census is every zero-shot model up to 10 M parameters with a public per-configuration result and no declared test-data leakage (Table 1), taken from a sweep of the full leaderboard. Appendix B.2 gives the criteria, the entries they admitted and excluded, and the source of each parameter count. Four training-free baselines are scored alongside the census: AutoARIMA, AutoTheta and AutoETS, and FLAIR, which fits a few dozen coefficients per series at inference. They carry no pretrained parameters, so Table 1 places them and the parameter axis of Figure 2 does not. Table 1: Zero-shot GIFT-Eval; lower is better, best per column in bold among the learned models. All three metrics are ratios to seasonal naive, which scores 1.0001.000 on each. Parenthesized values are point errors for models not emitting predictive distributions. Model Params ↓ nGMASE↓nGMASE nWQL↓nWQL nMSIS↓nMSIS TinyCast (ours) 146 K 0.774 0.545 0.554 Reverso-Nano (Fu et al. 2026) 200 K 0.760 (0.661) (2.035) Reverso-Small (Fu et al. 2026) 550 K 0.726 (0.626) (1.945) TTM-R3 (Ekambaram et al. 2024) 1.4 M 0.724 0.520 0.501 Reverso (Fu et al. 2026) 2.6 M 0.711 (0.610) (1.905) Toto-2.0-4m (Khwaja et al. 2026) 4.1 M 0.757 0.524 0.455 YingLong-6m (Wang et al. 2025a) 7.3 M 0.880 0.609 0.534 FlowState-9.1M (Graf et al. 2026) 9.1 M 0.726 0.502 0.563 Kairos-10m (Feng et al. 2025) 9.9 M 0.753 0.554 0.776 AutoARIMA (Hyndman & Khandakar 2008) 0 1.074 0.912 0.948 AutoTheta (Assimakopoulos & Nikolopoulos 2000) 0 1.090 1.244 1.199 AutoETS (Hyndman et al. 2002) 0 1.212 7.489 8.635 FLAIR (Honda 2026) 0 0.838 0.587 0.538 4.1 Benchmark results Table 1 places TinyCast against the census and Figure 2 plots nGMASEnGMASE and nWQLnWQL against parameter count. Figure 2: GIFT-Eval point accuracy (left) and nWQLnWQL (right) versus parameter count; lower is better. TinyCast∗ is the same checkpoint at the firmware profile (Section 4.3). Dashed staircase: the Pareto frontier over the census at the host profile, which the static-W8A8 point does not enter. Point accuracy At 146,505146,505 parameters TinyCast is the smallest entrant in the census of Table 1 and reaches 0.7740.774 nGMASEnGMASE, extending the size-accuracy Pareto frontier (Figure 2) to a smaller parameter budget than any model with published per-configuration results. The next-smallest entrant, Reverso-Nano at 200 K, scores 0.7600.760. Size alone does not order the field: Reverso sets the census best of 0.7110.711 at 2.6 M, while YingLong-6m scores 0.8800.880 at 7.3 M. Beyond the census, 3333 entries score lower. Twenty-six of them were verified above the 1010 M cut and the board does not size the other seven; the smallest count recorded among them is TabPFN-TS at 11.111.1 M (Hoo et al. 2026), roughly 75×75× ours. The statistical baselines sit above parity with seasonal naive, except FLAIR at 0.8380.838. Probabilistic accuracy TinyCast reaches nWQL=0.545nWQL=0.545, and every model in Table 1 that scores lower carries at least 1.4 M parameters. TTM-R3 spends 1.4 M to reach 0.5200.520 and FlowState-9.1M spends 9.1 M to reach 0.5020.502, roughly 10×10× and 62×62× our budget for 0.0260.026 and 0.0430.043 of nWQLnWQL. Beyond the census the floor is the same. Of the 3131 entries that score lower, 2525 were verified above the cut and six are unsized, and the smallest recorded count is again 11.111.1 M. Six of the 3333 differences in Table 1 do not exclude zero once base datasets are resampled (Appendix B.3). The interval score is 0.5540.554 (Table 1). Appendix D gives its coverage. FLAIR (Honda 2026), the only training-free baseline that beats seasonal naive, reaches 0.5870.587 against our 0.5450.545, and 0.5380.538 on the interval score against our 0.5540.554. Appendix D.6 shows the host-profile forecasts task by task on ten GIFT-Eval tasks. Chronos-ZS On the 27-task Chronos zero-shot benchmark, scored against the published seasonal-naive reference, TinyCast reaches relative MASE 0.8800.880 and relative WQL 0.7220.722. The predictive distribution is again the stronger result and leads every method that needs no training data. On point accuracy, however, AutoARIMA and AutoTheta are ahead by one to two percent, the only place across the three benchmarks where a statistical method leads us on point or probabilistic accuracy. Its aggregates are not comparable with the GIFT-Eval figures (Appendix D). fev-bench Over all 100 tasks (Shchur et al. 2025), TinyCast reaches relative MASE 0.8190.819 and relative WQL 0.6580.658, ahead of every statistical baseline on both. Every released model that scores better carries tens of times our parameters, from 28×28× to 62×62×. On the benchmark’s own primary metric, a scaled quantile loss, the skill score is 0.3040.304 [0.247,0.364][0.247,0.364]. Disjointness is not established here: twelve of its tasks name corpus subsets we train on (Appendix D). TinyCast is univariate and uses neither the covariates that 4646 of the 100100 tasks supply nor the cross-series structure of the 3535 multivariate ones. 4.2 Ablations The design was arrived at through three families of controlled runs, each answering a different question: which architectural component carries the accuracy, which recipe and inference choices are worth their cost, and whether the optimization settings sit at their optimum. As each family has its own control and its own training line, deltas are meaningful within a family while absolute scores are not comparable across families. Every arm is scored on all 97 GIFT-Eval configurations. No family runs the deployed configuration: the arms carry between roughly 340 K and 445 K parameters against the deployed 146,505146,505 (Table 7). Seven further settings were varied one at a time on an earlier control and are reported in Appendix C.4. What computing the period buys Since supplying the period costs no parameters, the design trades structure the model is handed against capacity it would otherwise spend learning that structure itself. Retrained at 146,505146,505 parameters over the full 36,62136,621 steps with the detector disabled and its readout inert, the model reaches 0.78140.7814 nGMASEnGMASE and 0.54830.5483 nWQLnWQL against 0.77430.7743 and 0.54410.5441 for the mean of three independently seeded runs of the shipped recipe. The detector is thus worth 0.00710.0071 nGMASEnGMASE and 0.00420.0042 nWQLnWQL. Every arm here is scored as the eight-checkpoint average the deployed model is reported at. Averaging removes most run-to-run jitter, and the three seeds span 0.00090.0009 nGMASEnGMASE, so on point accuracy the effect is about eight times the training noise. On nWQLnWQL the seeded spread is 0.00220.0022, against which the same arm is worth about twice the noise. Over configurations the contrast does not separate from zero on either metric (Appendix C.3). Suppressing the detector’s output on the trained model costs an order of magnitude more, which measures how far a model has come to rely on a signal rather than what supplying it is worth. The retrained arm keeps its phase readout on a degenerate input instead of reallocating the 16,44816,448 weights it holds. The contrast therefore measures the detector inside a fixed architecture, and bounds from above what computing the period buys against a model free to spend those parameters elsewhere. What the detector supplies in aggregate is one question; whether its choice of period matters, or only the shape of its output, is another. To separate the two, three inference-time interventions on the deployed checkpoint each replace the detected periods and change nothing else: a fixed data-blind set, the detector’s own pooled output applied to the wrong series, and suppression of the output entirely as the matched control. Against that control neither substitute recovers what suppression costs, and the fixed set is worse than supplying nothing at all. A well-occupied period the series does not have is an active harm, where an empty slot set falls back cleanly. What the detector contributes is the correspondence between a period and the series it was measured from, not the supply of occupied scales. Within the architecture family phase binning is the largest single contributor, moving nGMASEnGMASE by −0.098-0.098 over the dilated-convolution base, with its benefit tracking how much periodic structure a configuration carries. Although it carries 2121 K parameters more than its control, capacity does not account for an effect of this size: Appendix C.4 bounds it two ways. Adding the recency gate on top gives the family’s best result at −0.113-0.113. However, the gate is cut on the reduction to the deployed size, in a step that removes three further settings with it and halves the parameter count at no measurable cost in point or probabilistic accuracy. What the deployed model takes from this family is phase binning and causal padding. Causal padding, which the streaming mode requires, is free within resolution, with and without phase binning. Component family In the component family, whose control is the architecture family’s best arm rebuilt with a nine-quantile head, the horizon-evolving future-conv correction is the largest single gain at −0.015-0.015, and combining it with the synthetic-family blend reaches −0.026-0.026, the best arm tested. The two are close to additive. A selection rule with access to metadata does not improve on the raw Fisher pick. Choosing among the detected periods and the declared canonical and weekly ones by in-context backtest error moves both aggregates the wrong way, by less than the paired bootstrap can resolve. Doubling the training rollout from four chunks to eight, the gated committing loss and a MASE-weighted loss all move the aggregates by less than the paired bootstrap can resolve. The committing loss ships because it is free and its interval is centered on a gain. Inference strategies Since the two inference-time strategies of Section 3.3 cost compute at every forecast, each has to earn it. Sign symmetrization is worth 0.00790.0079 nGMASEnGMASE and 0.00610.0061 nWQLnWQL. Canonical-period alignment is worth 0.01200.0120 and 0.01120.0112, but it is narrowly targeted: only two of the 97 configurations change at all and the remaining 9595 are bit-identical. Both belong to one base dataset, so resampling base datasets cannot separate the gain from zero (Appendix C.2). The host profile of Table 1 applies both. The device runs neither: symmetrization doubles the core calls, and alignment carries a decimation path for a transform that fires on one base dataset. Optimization The learning-rate and budget sweep is flat near its optimum: the chosen peak beats both neighbors. Raising the sample budget from 50 M to the chosen 100 M buys 0.0370.037, while the further step to 150 M, which the deployed recipe runs, is within resolution of zero. Appendix C.2 gives every arm, its intervals under both resampling schemes, and the multiplicity correction. 4.3 Deployment Section 3.3 argued deployability from the architecture; the measurements below follow the integer path from the benchmark to the board. Quantized accuracy The first requirement is that the model survive INT8 weights and activations with frozen scales, checked over the whole benchmark rather than a single input. On all 97 configurations the frozen static-W8A8 path obtains 0.7900.790 nGMASEnGMASE and 0.5530.553 nWQLnWQL against 0.7740.774 and 0.5460.546 for its matched unquantized reference, degradations of 2.14%2.14\% and 1.26%1.26\%, paired per configuration in Appendix D, which also gives the spread. Firmware configuration Although the two host-side strategies and the quantizer are usually reported separately, a device runs all three at once and they interact. Scored directly over all 97 configurations, with exact static W8A8 and neither symmetrization nor period alignment, the firmware profile reaches 0.8330.833 nGMASEnGMASE and 0.5810.581 nWQLnWQL. Composing the three penalties additively predicts 0.8100.810 and 0.5700.570. The shortfall is interaction attributable to no single effect, 0.0230.023 [0.015,0.030][0.015,0.030] on point accuracy and 0.0110.011 [0.005,0.018][0.005,0.018] on the probabilistic metric under cluster resampling, about two fifths and a third of the deployment cost. The interval score degrades about twice as fast as either metric (Appendix D). At the firmware profile the model beats seasonal naive on 7272 of 9797 configurations. On the board We deployed the causal TinyCast checkpoint on an STM32H753 (Arm Cortex-M7) development board as a static-W8A8 graph whose quantization scales are calibrated once and frozen. Board and host make the same structural decisions. Period detection agrees on every context, and three independent INT8 backends produce identical outputs on the device (Appendix E). The core call runs from flash within a fixed working set, stable across inputs, so an embedded scheduler can reserve a slot for it. Nothing else is required, no host, no network and no per-signal fitting. The alternative a unit would otherwise run is a seasonal-naive ring buffer, which costs no weights and returns 1.01.0 on both metrics with no distribution. For 138.1 KiB138.1\,KiB of INT8 weights TinyCast returns 0.8330.833 nGMASEnGMASE, 0.5810.581 nWQLnWQL and nine quantiles. Appendix E gives the latency and memory record. 5 Discussion TinyCast was built on the premise that at a small enough budget, capacity spent rediscovering seasonality is capacity unavailable for everything else. The ablations support it. Folding the context on the phase of a measured period is the largest single contributor within its family, and retraining the shipped budget without the detector is worse than keeping it, for parameters the detector never spends. Within that family the benefit tracks how much periodic structure a configuration carries, as the premise predicts. Between models, however, it does not: against Reverso-Nano, the nearest comparator in size, we win a larger share of the configurations the benchmark declares aseasonal than of the seasonal ones. The premise is about capacity rather than about seasonality, and a returned parameter budget is spent on whatever the series in front of the model contains. Two claims follow, and they are not equally strong. Point accuracy at this scale is extended by scaling down. Probabilistic accuracy is extended by scaling down and still scoring, which is the harder of the two. Since a point estimate does not tell a control loop or an alarm threshold how far to trust it, the probabilistic result is also the one that decides whether a forecaster this small is usable at all. TinyCast defines that frontier, and every model that scores better on it carries parameters by the million. The deployment follows from the same budget rather than from a separate engineering effort. Since a global mixing operator was out of reach at this parameter count, the encoder reaches across its context with dilated convolutions alone, and every learned operation is a convolution, a matrix multiplication, a normalization or an elementwise gate. That restriction is also what an integer runtime can execute. The architecture the parameter budget forced and the architecture that runs on constrained hardware are thus the same one, which is why the device needed no redesign, no distillation and no operator an embedded runtime does not already ship. Limitations A forecast encodes its full context window, so the deployed model repeats that work on every call. A per-step streaming variant is possible, using causal normalization and a positional encoding invariant to the window advancing, although in a reduced-budget ablation it cost accuracy against the windowed model, concentrated in short-context configurations. Further limits belong to the method. The model is univariate and reads neither covariates nor cross-series structure, so a task that supplies either is forecast without it. The model emits no signal when its input leaves the regime its pretraining covers, so degradation there is silent. Two properties of the fixed computations bound it further: the period is a rounded transform bin, so its resolution falls with the ratio of window to period, and the per-window min-max normalization is sensitive to a single extreme value. Two limits belong to the evidence rather than the model. The ablation families run at their own budgets rather than the deployed one, so their deltas bound what a component buys at the shipped configuration rather than measuring it. And since GIFT-Eval probes informed our architecture, objective and inference choices, Chronos-ZS is the untouched test of the process that produced this model. 6 Conclusion TinyCast is a probabilistic zero-shot forecaster of 146,505146,505 parameters. It measures the dominant periods of a context spectrally, at no parameter cost, and folds the context on their phase, so the learned parameters are left for the structure no fixed computation supplies. It is smaller than every zero-shot entry on the GIFT-Eval board whose parameter count can be established, and among zero-shot entries declaring no test-data leakage it is the only one below 1.4 M parameters that emits a predictive distribution. What the detector contributes is the correspondence between a period and the series it was measured from: substituting those periods degrades the model, and supplying well-spread ones degrades it further. Because the budget admitted no global mixing operator, every learned operation is a convolution, a matrix multiplication, a normalization or an elementwise gate, and that same restriction is what lets the model run as a static integer graph on an embedded device. Until now, the models at this size that declare no test-data leakage and publish per-configuration results have emitted one value per step. A forecaster that also reports how far to trust each step changes what can be asked of hardware a deployment already has, since a control loop or an alarm threshold acts on an interval rather than on a single number. The mechanism that makes it fit is not specific to periodicity. Any structure a fixed computation can supply is capacity returned to the learned parameters, and the smaller the budget, the more that return is worth. Seasonality is the case where the computation is cheapest and its payoff clearest, and we expect the same trade wherever a signal’s structure can be measured rather than learned. References Aksu et al. (2024) Taha Aksu, Gerald Woo, Juncheng Liu, Xu Liu, Chenghao Liu, Silvio Savarese, Caiming Xiong, and Doyen Sahoo. GIFT-eval: A benchmark for general time series forecasting model evaluation, 2024. URL https://arxiv.org/abs/2410.10393. Ansari et al. (2024) Abdul Fatir Ansari, Lorenzo Stella, Caner Turkmen, Xiyuan Zhang, Pedro Mercado, Huibin Shen, Oleksandr Shchur, Syama Sundar Rangapuram, Sebastian Pineda Arango, Shubham Kapoor, Jasper Zschiegner, Danielle C. Maddix, Hao Wang, Michael W. Mahoney, Kari Torkkola, Andrew Gordon Wilson, Michael Bohlke-Schneider, and Yuyang Wang. Chronos: Learning the language of time series. Transactions on Machine Learning Research, 2024. ISSN 2835-8856. Ansari et al. (2025) Abdul Fatir Ansari, Oleksandr Shchur, Jaris Küken, Andreas Auer, Boran Han, Pedro Mercado, Syama Sundar Rangapuram, Huibin Shen, Lorenzo Stella, Xiyuan Zhang, Mononito Goswami, Shubham Kapoor, Danielle C. Maddix, Pablo Guerron, Tony Hu, Junming Yin, Nick Erickson, Prateek Mutalik Desai, Hao Wang, Huzefa Rangwala, George Karypis, Yuyang Wang, and Michael Bohlke-Schneider. Chronos-2: From univariate to universal forecasting, 2025. URL https://arxiv.org/abs/2510.15821. Assimakopoulos & Nikolopoulos (2000) V. Assimakopoulos and K. Nikolopoulos. The theta model: a decomposition approach to forecasting. International Journal of Forecasting, 16(4):521–530, 2000. doi: 10.1016/S0169-2070(00)00066-2. Auer et al. (2025) Andreas Auer, Patrick Podest, Daniel Klotz, Sebastian Böck, Günter Klambauer, and Sepp Hochreiter. Tirex: Zero-shot forecasting across long and short horizons with enhanced in-context learning. In Advances in Neural Information Processing Systems 38 (NeurIPS), 2025. Bai et al. (2018) Shaojie Bai, J. Zico Kolter, and Vladlen Koltun. An empirical evaluation of generic convolutional and recurrent networks for sequence modeling, 2018. URL https://arxiv.org/abs/1803.01271. Bengio et al. (2015) Samy Bengio, Oriol Vinyals, Navdeep Jaitly, and Noam Shazeer. Scheduled sampling for sequence prediction with recurrent neural networks. In Advances in Neural Information Processing Systems 28 (NeurIPS), 2015. Benjamini & Hochberg (1995) Yoav Benjamini and Yosef Hochberg. Controlling the false discovery rate: A practical and powerful approach to multiple testing. Journal of the Royal Statistical Society: Series B (Methodological), 57(1):289–300, 1995. doi: 10.1111/j.2517-6161.1995.tb02031.x. Chernozhukov et al. (2010) Victor Chernozhukov, Iván Fernández-Val, and Alfred Galichon. Quantile and probability curves without crossing. Econometrica, 78(3):1093–1125, 2010. doi: 10.3982/ECTA7880. Cleveland et al. (1990) Robert B. Cleveland, William S. Cleveland, Jean E. McRae, and Irma Terpenning. STL: A seasonal-trend decomposition procedure based on loess. Journal of Official Statistics, 6(1):3–73, 1990. Das et al. (2024) Abhimanyu Das, Weihao Kong, Rajat Sen, and Yichen Zhou. A decoder-only foundation model for time-series forecasting. In Proceedings of the 41st International Conference on Machine Learning (ICML), volume 235 of PMLR, p. 10148–10167, 2024. David et al. (2021) Robert David, Jared Duke, Advait Jain, Vijay Janapa Reddi, Nat Jeffries, Jian Li, Nick Kreeger, Ian Nappier, Meghna Natraj, Shlomi Regev, Rocky Rhodes, Tiezhen Wang, and Pete Warden. TensorFlow Lite Micro: Embedded machine learning on TinyML systems. In Proceedings of Machine Learning and Systems (MLSys), volume 3, p. 800–811, 2021. Ekambaram et al. (2024) Vijay Ekambaram, Arindam Jati, Pankaj Dayama, Sumanta Mukherjee, Nam H. Nguyen, Wesley M. Gifford, Chandra Reddy, and Jayant Kalagnanam. Tiny time mixers (TTMs): Fast pre-trained models for enhanced zero/few-shot forecasting of multivariate time series. In Advances in Neural Information Processing Systems 37 (NeurIPS), 2024. Feng et al. (2025) Kun Feng, Shaocheng Lan, Yuchen Fang, Wenchao He, Sihan Lu, Shuqi Gu, Lintao Ma, Xingyu Lu, and Kan Ren. Kairos: Toward adaptive and parameter-efficient time series foundation models, 2025. URL https://arxiv.org/abs/2509.25826. Fisher (1929) Ronald Aylmer Fisher. Tests of significance in harmonic analysis. Proceedings of the Royal Society of London. Series A, 125(796):54–59, 1929. doi: 10.1098/rspa.1929.0151. Fu et al. (2026) Xinghong Fu, Yanhong Li, Georgios Papaioannou, and Yoon Kim. Reverso: Efficient time series foundation models for zero-shot forecasting, 2026. URL https://arxiv.org/abs/2602.17634. Version 2, 27 July 2026; the quantile-head appendix we cite is absent from v1. Garza et al. (2022) Azul Garza, Max Mergenthaler Canseco, Cristian Challú, and Kin G. Olivares. StatsForecast: Lightning fast forecasting with statistical and econometric models. PyCon Salt Lake City, Utah, US, 2022. URL https://github.com/Nixtla/statsforecast. Gneiting & Raftery (2007) Tilmann Gneiting and Adrian E. Raftery. Strictly proper scoring rules, prediction, and estimation. Journal of the American Statistical Association, 102(477):359–378, 2007. doi: 10.1198/016214506000001437. Google Research (2025) Google Research. google/timesfm-2.5-200m-pytorch. Hugging Face model repository, 2025. URL https://huggingface.co/google/timesfm-2.5-200m-pytorch. No version-specific publication; released 2025-09-15 per the google-research/timesfm changelog. Graf et al. (2026) Lars Graf, Thomas Ortner, Stanisław Woźniak, and Angeliki Pantazi. FlowState: Sampling-rate-equivariant time-series forecasting. In Proceedings of the 43rd International Conference on Machine Learning (ICML), volume 306 of PMLR, 2026. Gu & Dao (2024) Albert Gu and Tri Dao. Mamba: Linear-time sequence modeling with selective state spaces. In Conference on Language Modeling (COLM), 2024. Gu et al. (2020) Albert Gu, Tri Dao, Stefano Ermon, Atri Rudra, and Christopher Ré. HiPPO: Recurrent memory with optimal polynomial projections. In Advances in Neural Information Processing Systems (NeurIPS), volume 33, 2020. Gu et al. (2022) Albert Gu, Karan Goel, and Christopher Ré. Efficiently modeling long sequences with structured state spaces. In International Conference on Learning Representations (ICLR), 2022. Honda (2026) Takato Honda. Don’t learn the shape: Forecasting periodic time series by rank-1 decomposition, 2026. URL https://arxiv.org/abs/2605.07222. Hoo et al. (2026) Shi Bin Hoo, Samuel Müller, David Salinas, and Frank Hutter. From tables to time: Extending TabPFN-v2 to time series forecasting. Transactions on Machine Learning Research, 2026. ISSN 2835-8856. Howard et al. (2017) Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, and Hartwig Adam. MobileNets: Efficient convolutional neural networks for mobile vision applications, 2017. URL https://arxiv.org/abs/1704.04861. Hyndman & Khandakar (2008) Rob J. Hyndman and Yeasmin Khandakar. Automatic time series forecasting: The forecast package for R. Journal of Statistical Software, 27(3):1–22, 2008. doi: 10.18637/jss.v027.i03. Hyndman et al. (2002) Rob J. Hyndman, Anne B. Koehler, Ralph D. Snyder, and Simone Grose. A state space framework for automatic forecasting using exponential smoothing methods. International Journal of Forecasting, 18(3):439–454, 2002. doi: 10.1016/S0169-2070(01)00110-8. Khwaja et al. (2026) Emaad Khwaja, Chris Lettieri, Gerald Woo, Eden Belouadah, Marc Cenac, Guillaume Jarry, Enguerrand Paquin, Xunyi Zhao, Viktoriya Zhukov, Othmane Abou-Amal, Chenghao Liu, Ameet Talwalkar, and David Asker. Toto 2.0: Time series forecasting enters the scaling era, 2026. URL https://arxiv.org/abs/2605.20119. Kim et al. (2022) Taesung Kim, Jinhee Kim, Yunwon Tae, Cheonbok Park, Jang-Ho Choi, and Jaegul Choo. Reversible instance normalization for accurate time-series forecasting against distribution shift. In International Conference on Learning Representations (ICLR), 2022. Koenker & Bassett (1978) Roger Koenker and Gilbert Bassett. Regression quantiles. Econometrica, 46(1):33–50, 1978. doi: 10.2307/1913643. Lai et al. (2018) Liangzhen Lai, Naveen Suda, and Vikas Chandra. CMSIS-N: Efficient neural network kernels for Arm Cortex-M CPUs, 2018. URL https://arxiv.org/abs/1801.06601. Lan et al. (2020) Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, and Radu Soricut. ALBERT: A lite BERT for self-supervised learning of language representations. In International Conference on Learning Representations (ICLR), 2020. Lin et al. (2020) Ji Lin, Wei-Ming Chen, Yujun Lin, John Cohn, Chuang Gan, and Song Han. MCUNet: Tiny deep learning on IoT devices. In Advances in Neural Information Processing Systems 33 (NeurIPS), 2020. Lin et al. (2024a) Shengsheng Lin, Weiwei Lin, Xinyi Hu, Wentai Wu, Ruichao Mo, and Haocheng Zhong. CycleNet: Enhancing time series forecasting through modeling periodic patterns. In Advances in Neural Information Processing Systems (NeurIPS), 2024a. Lin et al. (2024b) Shengsheng Lin, Weiwei Lin, Wentai Wu, Haojun Chen, and Junjie Yang. SparseTSF: Modeling long-term time series forecasting with 1k parameters. In Proceedings of the 41st International Conference on Machine Learning (ICML), volume 235 of PMLR, p. 30211–30226, 2024b. Liu et al. (2025) Xu Liu, Juncheng Liu, Gerald Woo, Taha Aksu, Yuxuan Liang, Roger Zimmermann, Chenghao Liu, Junnan Li, Silvio Savarese, Caiming Xiong, and Doyen Sahoo. Moirai-MoE: Empowering time series foundation models with sparse mixture of experts. In Proceedings of the 42nd International Conference on Machine Learning (ICML), volume 267 of PMLR, p. 38940–38962, 2025. Loshchilov & Hutter (2019) Ilya Loshchilov and Frank Hutter. Decoupled weight decay regularization. In International Conference on Learning Representations (ICLR), 2019. Moroshan et al. (2025) Vladyslav Moroshan, Julien Siems, Arber Zela, Timur Carstensen, and Frank Hutter. TempoPFN: Synthetic pre-training of linear RNNs for zero-shot time series forecasting, 2025. URL https://arxiv.org/abs/2510.25502. EurIPS 2025 AI for Tabular Data Workshop. Pierro & Abreu (2024) Alessandro Pierro and Steven Abreu. Mamba-PTQ: Outlier channels in recurrent large language models. In ICML Workshop on Efficient Systems for Foundation Models, 2024. Podest et al. (2026) Patrick Podest, Marco Pichler, Elias Bürger, Levente Zólyomi, Bernhard Voggenberger, Wilhelm Berghammer, Daniel Klotz, Sebastian Böck, Günter Klambauer, and Sepp Hochreiter. Tirex-2: Generalizing tirex to multivariate data and streaming, 2026. URL https://arxiv.org/abs/2607.01204. Quinn (2021) Barry G. Quinn. Fisher’s g revisited. International Statistical Review, 89(2):402–419, 2021. doi: 10.1111/insr.12437. Rasul et al. (2023) Kashif Rasul, Arjun Ashok, Andrew Robert Williams, Hena Ghonia, Rishika Bhagwatkar, Arian Khorasani, Mohammad Javad Darvishi Bayazi, George Adamopoulos, Roland Riachi, Nadhir Hassen, Marin Biloš, Sahil Garg, Anderson Schneider, Nicolas Chapados, Alexandre Drouin, Valentina Zantedeschi, Yuriy Nevmyvaka, and Irina Rish. Lag-llama: Towards foundation models for probabilistic time series forecasting, 2023. URL https://arxiv.org/abs/2310.08278. Rockafellar & Uryasev (2000) R. Tyrrell Rockafellar and Stanislav Uryasev. Optimization of conditional value-at-risk. The Journal of Risk, 2(3):21–41, 2000. doi: 10.21314/JOR.2000.038. Saha et al. (2024) Swapnil Sayan Saha, Sandeep Singh Sandha, Mohit Aggarwal, Brian Wang, Liying Han, Julian de Gortari Briseno, and Mani Srivastava. TinyNS: Platform-aware neurosymbolic auto tiny machine learning. ACM Transactions on Embedded Computing Systems, 23(3), 2024. doi: 10.1145/3603171. Scherer et al. (2024) Moritz Scherer, Luka Macan, Victor J. B. Jung, Philip Wiese, Luca Bompani, Alessio Burrello, Francesco Conti, and Luca Benini. Deeploy: Enabling energy-efficient deployment of small language models on heterogeneous microcontrollers. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 43(11):4009–4020, 2024. doi: 10.1109/TCAD.2024.3443718. Shazeer (2020) Noam Shazeer. GLU variants improve transformer, 2020. URL https://arxiv.org/abs/2002.05202. Shchur et al. (2025) Oleksandr Shchur, Abdul Fatir Ansari, Caner Turkmen, Lorenzo Stella, Nick Erickson, Pablo Guerron, Michael Bohlke-Schneider, and Yuyang Wang. fev-bench: A realistic benchmark for time series forecasting, 2025. URL https://arxiv.org/abs/2509.26468. STMicroelectronics (2026) STMicroelectronics. STM32H753xI datasheet – 32-bit Arm Cortex-M7 480 MHz MCUs, 2 MB flash, 1 MB RAM, 2026. DS12117 Rev. 10; run-mode supply currents from Tables 118 and 119, revision-V silicon. Sun et al. (2025) Yinbo Sun, Yuchen Fang, Zhibo Zhu, Jia Li, Yu Liu, Qiwen Deng, Jun Zhou, Hang Yu, Xingyu Lu, and Lintao Ma. Xihe: Scalable zero-shot time series learner via hierarchical interleaved block attention, 2025. URL https://arxiv.org/abs/2510.21795. Tegon et al. (2026) Anna Tegon, Nicholas Lehmann, Yawei Li, Andrea Cossettini, Luca Benini, and Thorir Mar Ingolfsson. FEMBA on the edge: Physiologically-aware pre-training, quantization, and deployment of a bidirectional Mamba EEG foundation model on an ultra-low power microcontroller, 2026. URL https://arxiv.org/abs/2603.26716. van den Oord et al. (2016) Aäron van den Oord, Sander Dieleman, Heiga Zen, Karen Simonyan, Oriol Vinyals, Alex Graves, Nal Kalchbrenner, Andrew Senior, and Koray Kavukcuoglu. WaveNet: A generative model for raw audio, 2016. URL https://arxiv.org/abs/1609.03499. Vaswani et al. (2017) Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, and Illia Polosukhin. Attention is all you need. In Advances in Neural Information Processing Systems 30 (NeurIPS), 2017. Wang et al. (2025a) Xue Wang, Tian Zhou, Jinyang Gao, Bolin Ding, and Jingren Zhou. Output scaling: Yinglong-delayed chain of thought in a large pretrained time series forecasting model, 2025a. URL https://arxiv.org/abs/2506.11029. Wang et al. (2025b) Yihang Wang, Yuying Qiu, Peng Chen, Yang Shu, Zhongwen Rao, Lujia Pan, Bin Yang, and Chenjuan Guo. LightGTS: A lightweight general time series forecasting model. In Proceedings of the 42nd International Conference on Machine Learning (ICML), volume 267 of PMLR, p. 64109–64126, 2025b. Woo et al. (2024) Gerald Woo, Chenghao Liu, Akshat Kumar, Caiming Xiong, Silvio Savarese, and Doyen Sahoo. Unified training of universal time series forecasting transformers. In Proceedings of the 41st International Conference on Machine Learning (ICML), volume 235 of PMLR, p. 53140–53164, 2024. Wu et al. (2021) Haixu Wu, Jiehui Xu, Jianmin Wang, and Mingsheng Long. Autoformer: Decomposition transformers with auto-correlation for long-term series forecasting. In Advances in Neural Information Processing Systems (NeurIPS), 2021. Wu et al. (2023) Haixu Wu, Tengge Hu, Yong Liu, Hang Zhou, Jianmin Wang, and Mingsheng Long. TimesNet: Temporal 2d-variation modeling for general time series analysis. In International Conference on Learning Representations (ICLR), 2023. Xu et al. (2024) Zhijian Xu, Ailing Zeng, and Qiang Xu. FITS: Modeling time series with 10k10k parameters. In International Conference on Learning Representations (ICLR), 2024. Yamaguchi et al. (2026) Yosuke Yamaguchi, Issei Suemitsu, Yuki Kajihara, and Wenpeng Wei. Citras-fm: Tiny time series foundation model for covariate-informed zero-shot forecasting, 2026. URL https://arxiv.org/abs/2606.10798. Accepted to EUSIPCO 2026. Zainab et al. (2026) Tayyaba Zainab, Patrick Rathje, Laura Harms, Lukas Schattenhofer, Jens Karstens, and Olaf Landsiedel. From raw waveforms to on-device earthquake detection: Real-time seismic data analysis for MCUs. ACM Transactions on Internet of Things, 7(3), 2026. doi: 10.1145/3799716. Zeng et al. (2023) Ailing Zeng, Muxi Chen, Lei Zhang, and Qiang Xu. Are transformers effective for time series forecasting? In Proceedings of the AAAI Conference on Artificial Intelligence, volume 37, p. 11121–11128, 2023. Zhang & Sennrich (2019) Biao Zhang and Rico Sennrich. Root mean square layer normalization. In Advances in Neural Information Processing Systems 32 (NeurIPS), 2019. Zhang et al. (2018) Hongyi Zhang, Moustapha Cissé, Yann N. Dauphin, and David Lopez-Paz. mixup: Beyond empirical risk minimization. In International Conference on Learning Representations (ICLR), 2018. Appendix A Architecture, training and inference details This appendix gives the formal definitions behind Section 3. While the body states each choice and the reason for it, the following section provides the mathematical details. A.1 Architecture Table 2 gives the budget component by component. Normalization, the Fisher detector and the positional encoding carry no parameters at all, so they have no rows. Roughly 40%40\% of the total sits in the encoder, 30%30\% in the future-conv correction and the remainder in the decoder readouts. Figure 3: Phase binning of the context with a dominant detected period of p1=24p_1=24. (a) Context values against position relative to the forecast start, t−Lt-L; the stripe below assigns every position to one of nb=16n_b=16 phase bins. (b) Cycle template: the mean of the context values sharing a bin. The arrow indicates the phase template selection for the marked future offset h∗h^*. Table 2: TinyCast parameter budget: D=64D=64, 1010 encoder blocks, FFN expansion 1.01.0, K=4K=4 periods, nb=16n_b=16 phase bins, nine quantile levels. Stage Module (shape) Params input LinearinLinear_in (14→6414→64) 960 encoder depthwise conv (10×(64,1,3)+bias10×(64,1,3)+bias) 2,5602,560 pointwise 1×11×1 (10×(64,64,1)+bias10×(64,64,1)+bias) 41,60041,600 shared SwiGLU (up 64→12864→128, down 64→6464→64) 12,48012,480 RMSNorms (20×(64)20×(64)) 1,2801,280 encoder subtotal 57,920 phase WphaseW_phase (256→64256→64) 16,448 query WqW_q (205→64205→64) 13,184 decoder SwiGLU ++ RMSNorm 12,544 future-conv Wfc-inW_fc-in (14→6414→64) 960960 depthwise conv (6×(64,1,3)+bias6×(64,1,3)+bias) 1,5361,536 pointwise 1×11×1 (6×(64,64,1)+bias6×(64,64,1)+bias) 24,96024,960 shared SwiGLU 12,48012,480 RMSNorms (12×(64)12×(64)) 768768 Wfc-outW_fc-out (64→6464→64, zero-init) 4,1604,160 future-conv subtotal 44,864 output WoutW_out (64→964→9) 585 Total 146,505 Normalization Non-finite inputs are resolved first. In the evaluation path interior gaps are linearly interpolated, leading and trailing gaps are filled with the nearest observed value, any residue is set to zero, and a context shorter than L is left-padded with its first observed value; the firmware follows the same rule. The 14-channel encoder carries no observed-mask input in either path. Each context is then min-max normalized, x^t=yt−yminmaxymax−ymin,ε, x_t= y_t-y_ \\,y_ -y_ ,\ \,\, (2) with yminy_ and ymaxy_ the context minimum and maximum and range clamp ε=10−5 =10^-5. A constant context maps to zero and remains finite; during training, windows whose range is at most 10−410^-4 are excluded from the loss. Periodicity detector On the DC-removed context y~ y, zero-padded to a power-of-two transform length, we form the normalized periodogram via a real-valued fast Fourier transform (rFFT), threshold it at the large-N Bonferroni approximation to Fisher’s level for harmonic analysis (Fisher 1929), and read off integer periods: I[k] I[k] =|X[k]|2∑k′≥1|X[k′]|2,X=rFFT(y~), = |X[k]|^2 _k ≥ 1|X[k ]|^2, X=rFFT( y), (3) tα t_α =ln(Nbins/α)Nbins, = (N_bins/α)N_bins, (4) pk p_k =⌊nfft/kpeak(k)⌉,k=1,…,K. = n_fft/k^(k)_peak , k=1,…,K. (5) The K=4K=4 largest local maxima of I that exceed tαt_α with a significance level of α=0.05α=0.05 yield the periods pkp_k, while slots that fail the test are set to zero. NbinsN_bins is the number of positive-frequency bins, nfftn_fft the padded transform length, kpeakk_peak the frequency-bin index of a retained maximum, and ⌊⋅⌉ · rounds to the nearest integer. What the test screens out is white noise, not aperiodicity. Against its i.i.d. null it is calibrated: white-noise surrogates make it declare a period on 4.7%4.7\% of contexts against a nominal 5%5\%. Autocorrelation alone defeats it. AR(1) surrogates carry no cycle either, yet it declares one on 98.9%98.9\% of those with autoregressive coefficient 0.50.5 and on essentially all at 0.90.9 and above, so a slot can be filled from a series that has no periodicity. Positional encoding The detected periods parameterize an encoding evaluated at any position t∈[0,L+H]t∈[0,L+H], with two kinds of channels: PE(t) (t) =[ψ1(t)‖…‖ψK(t)⏟phase channels∥ρ(Δ(t))⏟recency channels], = [\, _1(t)\,\|\,…\,\|\, _K(t)_phase channels\,\|\, ρ ( (t) )_recency channels\, ], (6) ψk(t) _k(t) =(sin(2πt/pk),cos(2πt/pk))pk>0,(0, 0)pk=0, = cases ( (2π t/p_k),\ (2π t/p_k) )&p_k>0,\\ (0,\,0)&p_k=0, cases (7) ρ(Δ) ρ( ) =(Δ,sign(Δ)log2(1+|Δ|),e−|Δ|/2,e−2|Δ|,e−8|Δ|), = (\, ,\ ( ) _2\! (1+| | ),\ e^-| |/2,\ e^-2| |,\ e^-8| |\, ), (8) where Δ(t)=(t−(L−1))/L (t)=(t-(L-1))/L is the signed normalized distance from the last observed position. Encoder Each block pairs its dilated separable convolution with a SwiGLU feed-forward (Shazeer 2020), both residual-added and RMS-normalized (Zhang & Sennrich 2019): x′ x =Conv1dsep,di(x(i−1)), =Conv1d_sep,\,d_i(x^(i-1)), (9) x~ x =RMSNorm(x(i−1)+x′), =RMSNorm(x^(i-1)+x ), (10) x(i) x^(i) =RMSNorm(x~+SwiGLU(x~)), =RMSNorm ( x+SwiGLU( x) ), (11) with causal padding, so length is preserved and each output depends only on past samples; x(0)x^(0) is the projected input, and the last encoder block’s output is the encoder representation h=x(N)∈ℝL×Dh=x^(N) ^L× D that the decoder reads. Decoder Of the three readouts the pooled summary needs no more than its definition. The other two rest on a phase fold. For period slot k, position t falls into one of nb=16n_b=16 bins, ϕk(t)=⌊nbtmodpk+pk+⌋, _k(t)= \,n_b\, t p_k^+p_k^+\, , (12) with pk+=max(pk,1)p_k^+= (p_k,1) guarding the undetected-period slot. That guard sends every position to bin 00, so an undetected slot contributes its whole-context average through WphaseW_phase rather than nothing. The slot is not masked out. Instead, the network learns what a collapsed slot means from the positional encoding, whose two phase channels for that slot are zero. Because the phase depends only on the position, future positions receive their bins by the same rule. Averaging the encoder states that share a bin folds the context into a cycle template, P(k)(t)=meanhτ:τ<L,ϕk(τ)=ϕk(t),P^(k)(t)= *mean \\,h_τ:τ<L,\ _k(τ)= _k(t)\, \, (13) so P(k)∈ℝnb×DP^(k) ^n_b× D. A period shorter than nbn_b occupies only pkp_k of those rows, and the rest take the whole-context mean. Figure 3 draws the assignment and the template on the fixed test input, a synthetic window of two sinusoids at periods 2424 and 168168 over a small trend and noise. The phase readout mixes the per-slot templates, sh=Wphase[P(1)(L+h)‖…‖P(K)(L+h)]∈ℝD,s_h=W_phase\, [\,P^(1)(L+h)\,\|\,…\,\|\,P^(K)(L+h)\, ] ^D, (14) and the future-conv draft is the phase average of the normalized values at the dominant slot, dh=meanx^τ:τ<L,ϕ1(τ)=ϕ1(L+h).d_h= *mean \\, x_τ:τ<L,\ _1(τ)= _1(L+h)\, \. (15) For each future offset h∈0,…,p−1h∈\0,…,p-1\ the learned projection Wfc-inW_fc-in maps [dh∥PE(L+h)][d_h\,\|\,PE(L+h)] to width D; these p vectors are appended to the last 128 encoder states, and the six-block causal depthwise-separable network ℱF runs over the joined sequence, u~=ℱ([hL−128:L−1;Wfc-in[d0:p−1∥PEfuture]]), u=F\! ([\,h_L-128:L-1;\,W_fc-in[d_0:p-1\,\|\,PE_future]\,] ), (16) whose last p positions form the correction u0:p−1∈ℝp×Du_0:p-1 ^p× D. Causal padding prevents future-label leakage, and the draft dhd_h is an input to ℱF rather than a forecast. The positional encoding and the three readouts compose the per-horizon query, qh=Wq[PE(L+h)‖c‖sh]+Wfc-outuh∈ℝD,q_h=W_q\,[\,PE(L+h)\,\|\,c\,\|\,s_h\,]+W_fc-out\,u_h ^D, (17) with WqW_q and Wfc-outW_fc-out learned projections; a residual SwiGLU with RMSNorm and a linear head then emit the nine quantiles, de-normalized by the stored context statistics. Remaining specification details The nine nominal levels are the deciles τ∈0.1,0.2,…,0.9τ∈\0.1,0.2,…,0.9\ with the median as the fifth. The detector searches only periods in [2,L/2][2,\,L/2], that is [2,1024][2,1024] at L=2048L=2048, and only bins that are strict local maxima of I compete, so two adjacent bins can never both be retained. A phase bin that no context position falls into takes the whole-context mean, in the encoder-state fold and in the value fold of the future-conv draft alike. The future-conv network ℱF is six causal depthwise-separable blocks of kernel 33 with dilations 1,2,4,8,16,321,2,4,8,16,32, giving it a receptive field of 127127 over the joined sequence, and one SwiGLU ALBERT-tied across the six, in the same pattern as the encoder. In the block rollout the value fed into the next context is the raw q0.5q_0.5 row of the head, taken before any sorting; the nine quantiles are sorted once, on the assembled forecast, in both the benchmark predictor and the firmware. The normalized head output is clamped to [−5,5][-5,5] before de-normalization, matching the clamp the training loss applies, so an un-penalized overshoot cannot compound through the rollout. Sign symmetrization averages the forecast with the quantile-reversed forecast of the negated input, since the τ-quantile of −y-y is minus the (1−τ)(1-τ)-quantile of y; on the median the reversal is a no-op. Finally, the decoder is parameterized by future position rather than by a fixed block of output slots, so the released implementation can also emit an arbitrary horizon in a single pass. Every score we report comes from the block rollout, and the deployed predictor never takes that single-pass path. A.2 Training Training performs a four-block autoregressive rollout. After each 48-step block, its median is fed into the next context with a probability ramped from zero to 0.50.5; otherwise the target block is used. All positions within a block are predicted in parallel. The future-conv projection Wfc-outW_fc-out is initialized to zero, so the correction starts at zero and the decoder map reduces to the uncorrected one at initialization. Table 3 lists the full training configuration. Table 3: Training configuration of the deployed TinyCast. Optimization Optimizer AdamW (Loshchilov & Hutter 2019) Weight decay 0.01 Gradient clipping 1.0 Precision bf16-mixed Random seed 42 Total samples 150 M Effective batch size 4096 Accelerators eight RTX 3090, DDP Wall clock 7.8 h7.8\,h, about 6262 accelerator-hours Final weights average of the last eight checkpoints Learning-rate schedule Shape warmup-stable-decay Peak learning rate 3×10−33× 10^-3 Minimum learning rate 1×10−51× 10^-5 Warmup fraction 5% (linear to peak) Stable fraction 60% (held at peak) Decay fraction 35% (to the minimum) Sequence layout Context length L 2048 Horizon unit p 48 Objective and data Loss nine-quantile pinball ++ gated committing term (weight 0.30.3) Scheduled sampling four blocks; feedback probability ramps to 0.50.5 Corpus GIFT-Eval-Pretrain ++ Chronos KernelSynth ++ four synthetic shards, band-balanced Augmentations temporal flip, sign flip, downsample, mixup; each p=0.5p=0.5 Gated committing term The base objective is the nine-quantile pinball loss. The seasonal copy aha_h repeats the last cycle at the training sample’s metadata-derived lag: the rounded seasonality ⌊24/s⌉ 24/s , clipped to [2,L/2][2,\,L/2], where s is the sample’s frequency scale factor. For the observed target-position set O, define g g =∑h∈|ah−yh|<∑h∈|y^h,0.5−yh|, =1\! \ _h |a_h-y_h|< _h | y_h,0.5-y_h| \, (18) ℒcommit _commit =g||∑h∈[|y^h,0.5−yh|−|ah−yh|]+, = g|O| _h [| y_h,0.5-y_h|-|a_h-y_h| ]_+, (19) where [a]+=max(a,0)[a]_+= (a,0) and the indicator gate g activates only when the copy beats the median over the window, so that wherever the median is already the better predictor the term is silent and it stops as soon as the median reaches the copy. The term is weighted by λ=0.3λ=0.3 and evaluated only at the median, while the base loss supervises all nine quantiles. Corpus The loader reads six caches: GIFT-Eval-Pretrain, Chronos KernelSynth, and four synthetic shards of 40964096-step series. GIFT-Eval-Pretrain is the only one of the six caches that carries real series. Before caching it is filtered on two lists, both released with the paper and both matched on the corpus’s top-level directory name: a 2020-name benchmark-overlap list, and 6666 gridded-weather names (3333 CMIP6 slices, 3030 ERA5 years, 33 WeatherBench splits). Since it is already disjoint from GIFT-Eval, the first list is there for the secondary benchmark. Of the release’s 7171 top-level directories the lists remove two, and the cache keeps 6969. The run log records 5959 dataset keys across the six caches. Band balancing reweights each real dataset to the benchmark’s own share of configurations per frequency band, 3131 hourly, 3030 sub-hourly, 1515 daily, 88 weekly, 77 monthly-and-coarser and 66 second of the 9797. Synthetic sources are exempt, and no arm varies the weights. Per epoch a dataset contributes at most 5,000,0005,000,000 windows and at most 4848 times its series count. Each window is augmented independently, with probability 0.50.5 each, by a temporal flip, a sign flip, downsampling by an integer stride drawn uniformly from 2,3,4\2,3,4\, and same-bucket mixup whose coefficient is drawn from Beta(0.2,0.2)Beta(0.2,0.2). The scheduled-sampling feedback probability ramps linearly from 00 to 0.50.5 over the first half of the schedule and holds at 0.50.5 thereafter. Checkpoints are written every 1,0001,000 steps, and the deployed weights are the uniform average of the eight written at steps 29,00029,000 through 36,00036,000. Synthetic shards A note written before the shards were generated, together with the released generator, records what they were built to hold. Three families follow Reverso (Fu et al. 2026): a Gaussian process over a 3838-kernel bank, trapezoid pulse trains and a trend-seasonal-impulse process, mixed 70/15/1570/15/15 at length 4,0964,096, with 62,50062,500 series per shard. On the reduced-budget line that used the same four shards, the synthetic dose was roughly 7%7\% of the mix. The released recipe regenerates the shards on the pinned stack, so this composition is checkable and the realized dose of the deployed run is recomputable from the recorded seed and configuration. Environment The deployed run trained on eight RTX 3090 GPUs under distributed data parallelism for 7.8 h7.8\,h, about 6262 accelerator-hours, in bf16 mixed precision, with the model compiled by torch.compile in max-autotune mode. The versions used were PyTorch 2.10.02.10.0, CUDA 12.812.8 and Python 3.123.12, with PyTorch Lightning as the trainer. Evaluations run through GluonTS 0.15.10.15.1 on Python 3.123.12. The code and weights are released under Apache-2.0, which also covers the two components they build on: GIFT-Eval’s dataset properties and seasonal-naive reference, and the GluonTS evaluation API. The rollout predictor is adapted from Reverso under MIT, and the pretraining corpora are used under the terms their publishers set. Seeds and determinism Every arm uses seed 4242 except the two repeats of the shipped recipe at seeds 4343 and 4444, which measure training variance directly. The three runs span 0.00090.0009 nGMASEnGMASE and 0.00220.0022 nWQLnWQL, which are the spreads we quote. All three are averaged over the same eight checkpoints, so the figures are comparable; the two repeats alone land 0.00020.0002 apart on nGMASEnGMASE, which is one pair rather than a spread. Every other delta in this paper is a single run at seed 4242. The bootstrap intervals of Appendix B.1 resample configurations and not runs. Autotuned kernels and the reduction order of a distributed run leave a rerun free to differ in the last bits. The reported scores are computed under bf16 autocast on an NVIDIA GPU and depend on that choice at the third decimal: a strict-FP32 CPU rerun reproduces the harness exactly and still differs from the bf16 record by about 10−310^-3 on two configurations we checked. The firmware profile is the exception, its integer arithmetic being exact across three matmul backends and across boots (Appendix E). A.3 Inference Sign symmetrization and canonical-period alignment are both applied at every evaluation of the two host profiles, and neither is carried by the firmware. Alignment fires only where the dominant spectral peak of a configuration’s own test contexts sits at k∈[2,16]k∈[2,16] times the canonical samples-per-day cycle and the canonical cycle is absent from the spectrum. Seven conditions in all must hold, among them a quorum across the sampled series, a guard that keeps the decimated context long enough to fill the encoder window and a guard that keeps the horizon long enough to interpolate back. downsample.py in the released code states all seven with their constants. Quantile crossing and sorting The quantile head has no monotonicity constraint, the standard choice for multi-quantile forecasters. Since the population minimizer of each pinball term is the true quantile, the target of training is already non-crossing. Leaving the head unconstrained also keeps the output stage a single INT8-friendly matrix multiplication with an independent median for block feedback. At finite samples, however, crossings still occur, and they are more frequent on the path that ships. On the fixed test input, 2121 of 4848 horizons contain at least one adjacent-quantile inversion in the unquantized path, against 4242 of 4848 under the exact static-W8A8 runtime. Quantization there can move neighboring quantiles onto the same integer level. Sorting is monotone rearrangement, which weakly improves crossing quantile estimates (Chernozhukov et al. 2010), and it is applied in both the benchmark predictor and the firmware, so the scored object and the emitted object are the same. Appendix B Evaluation protocol and comparators B.1 Evaluation protocol Every score comes from the benchmark’s own harness, over its own test windows and prediction lengths, with no added windowing and univariate conversion only where the target is multivariate. Forecasts are computed under bf16 autocast, and the released code also carries a strict-FP32 path. Because the leaderboard’s CRPS column reports a weighted quantile loss over each model’s finite quantile grid rather than the continuous ranked probability score, we write nWQLnWQL throughout. Table 4: The eight scored configurations: one checkpoint, the same 97 GIFT-Eval configurations, all scored on the host. Lower is better. “Exact” W8A8 calls a host build of the same C integer core sources the firmware executes rather than a fake-quantization emulation, and the board runs the fidelity chain of Appendix E, not the benchmark. Profile Arithmetic Symmetrization Alignment nGMASEnGMASE nWQLnWQL nMSISnMSIS Host bf16 yes yes 0.7738 0.5454 0.5541 No alignment bf16 yes no 0.7858 0.5567 0.5786 No symmetrization bf16 no yes 0.7816 0.5515 0.5638 Single pass bf16 no no 0.7935 0.5629 0.5889 Quantization reference fp32-strict yes yes 0.7736 0.5457 0.5535 Single-pass reference fp32-strict no no 0.7918 0.5622 0.5865 Quantized host exact W8A8 yes yes 0.7901 0.5526 0.5632 Firmware configuration exact W8A8 no no 0.8328 0.5807 0.6243 Four contrasts in Table 4 carry the costs Section 4 reports. Single pass against host gives the cost of dropping both inference strategies, no symmetrization against host the cost of dropping symmetrization alone, and no alignment against host the cost of dropping alignment alone. Quantized host against the quantization reference gives the quantizer’s cost at the strategies the host runs: the reference is that same pass unquantized in the fp32-strict arithmetic the quantized path uses for its floating-point islands, which is why it and not the bf16 host row is the denominator. Read against the single-pass reference, which is that same pairing at the device’s own setting, the quantizer costs about twice as much (Appendix D). Every comparator number is the model’s own published result. For GIFT-Eval we take each entrant’s per-configuration file from the benchmark’s public results repository, pinned at commit 6fdb10df9c17411f0aef5f862afbec23627c12f, and re-aggregate it under the leaderboard’s own rule; for Chronos-ZS and fev-bench we vendor the published per-task files unchanged. Re-aggregating rather than copying puts every entry on the same seasonal-naive reference over the same 9797 configurations, and gives the paired intervals of Appendix B.3 per-configuration values to resample. A model that publishes no per-configuration result does not enter the census, and one that publishes aggregates only, as FLAIR does, is carried at those aggregates. The fev-bench comparators are each publisher’s own run under the harness version current when they published: 0.8.00.8.0 for FlowState and the statistical baselines, 0.9.00.9.0 for Toto-2.0-4m and 0.6.10.6.1 for CITRAS-FM. The evaluation manifest in the supplementary evidence package records the quantized host profile, with sign symmetrization and period alignment enabled, and not the firmware profile. Intervals are percentile bootstraps under one of two schemes: resampling the 9797 configurations, or clustering, which resamples instead the 2828 base datasets they come from. Configurations drawn from one dataset are not independent, since the three terms of one dataset-frequency are the same series at different horizons. Cost axes Parameter count sets storage, not arithmetic, and the census separates the two: the released artifact gives the INT8 weight bytes, whether those bytes alone fit the 2 MiB2\,MiB flash of the device of Section 4.3, and how many sequence positions each encoder evaluates. Four of the nine fit the flash and five do not. On the arithmetic axis the census can only report tokenization. Four of the eight comparators evaluate their parameters at every one of 20482048 positions as we do, and four are patch-strided, three of those declaring between 1616 and 128128 tokens per encoder pass. Our core call is 3.61×1083.61× 10^8 multiply-accumulates at L=2048L=2048, computed from the shapes of Table 2 and consistent with the 8989 million per second the board sustains over 4.08 s4.08\,s. Because two tied SwiGLUs are evaluated at every position, one across the ten encoder blocks and one across the six future-conv blocks, that count is high for our size. It works out to 24652465 multiply-accumulates per parameter per call. For six of the eight comparators the released configuration does not determine a multiply-accumulate count, so none is estimated. B.2 Comparator census The census fixes the comparison class before any result is read. It admits a model if it forecasts zero-shot, publishes a per-configuration GIFT-Eval result, declares no test-data leakage, and holds at most 10 M parameters, whether or not its checkpoint has been released. By “zero-shot” we mean the model forecasts an evaluation series without fitting to it, which is the property a device needs. The leaderboard’s own model_type field, however, draws the line differently, reserving zero-shot for models that also do not pretrain on its companion corpus and typing the rest pretrained. Under that field TinyCast and two other census members would be pretrained. No entry of either type whose size can be established falls below our count, the smallest being Reverso-Nano at 200200 K. Of the rest, 2626 were verified above the 1010 M cut and 2020 the sweep could not size. The sweep covered every leaderboard entry at the time of writing; the snapshot is pinned to a single benchmark commit and released with the paper, and every comparator aggregate in Table 1 is recomputed from it against the same seasonal-naive reference, so no number is copied from a publishing paper. AutoARIMA, AutoTheta and AutoETS enter through each benchmark’s own published run of StatsForecast (Garza et al. 2022). Excluded, with reasons The 10 M cut removes the models the census is not drawn against, TempoPFN among them: at 38 M it declares zero-shot and no leakage and re-aggregates on the snapshot to 0.78750.7875, 0.53270.5327 and 0.49100.4910, behind us on point accuracy and ahead on both probabilistic metrics. Four sub-10 M models are excluded for declaring test-data leakage in their own leaderboard metadata: Lag-Llama, Super-Linear and the R1 and R2 releases of TTM. Seven further models are excluded because their size cannot be established. CHARM, DeOS, Lingjiang, LongSeer, Migas and VISIT release neither a checkpoint nor a parameter count. Xihe (Sun et al. 2025) publishes a family from 9.5 M to 1.5 B without a per-configuration result that would identify which member the board entry is. Since Xihe and VISIT carry two board directories each, these seven models occupy nine entries. Fifteen further entries are agentic or ensemble systems that route between or combine several forecasters rather than single models, and none publishes a parameter count. Three more are fitted to the evaluation series and one publishes no per-configuration result. FLAIR (Honda 2026) sits below the cut and is not a zero-shot model, since it fits a few dozen coefficients per series at inference, so it is reported with the statistical baselines rather than in the census. Its three aggregates are the board’s own published values; unlike every other row of Table 1 they are not recomputed here, because the snapshot carries no per-configuration file for it. The archived snapshot carries the per-configuration directories the census and the baselines are computed from. Chronos-Bolt-Tiny and Chronos-Tiny, which we do use as Chronos-ZS comparators, have no GIFT-Eval board entry and so cannot enter the census; CITRAS-FM is in the same position. Parameter counts Counts come from the released checkpoint where one is available and from the publishing paper otherwise, and the two do not always agree. Reverso-Small recounts to 550,161550,161 learnable parameters against the paper’s 550 K, once 10,24010,240 non-learned FFT constants are excluded. YingLong-6m holds 7,319,5667,319,566 parameters despite its release name. TTM-R3 is listed at its main-branch count. Since the leaderboard run for that entry selects larger-context branches and ensembles across them for 6666 of the 9797 configurations, that count understates what produced its score. TTM-R3 is the entry our nWQLnWQL comparison is measured against. Per-dataset supervised models The census is zero-shot only, so models trained on the series they forecast are out of scope. The board carries ten. The pinned snapshot holds per-configuration results for eight of them, recomputed here on the same footing as every other comparator (Table 5), and TinyCast’s 0.7740.774, 0.5450.545 and 0.5540.554 lead all eight on all three metrics. Of the two the snapshot does not cover, xLSTM-Mixer reports 0.5100.510 on the board’s own probabilistic metric, ahead of us, and FFM reports 0.7040.704, behind. That is the comparison the premise of a pretrained forecaster is meant to displace. Table 5: Per-dataset supervised models in the pinned snapshot, all 97 configurations, ratios to seasonal naive. Lower is better. These are trained on the series they forecast and are therefore outside the zero-shot census of Table 1. Model nGMASE↓nGMASE nWQL↓nWQL nMSIS↓nMSIS TinyCast (ours) 0.774 0.545 0.554 PatchTST 0.849 0.587 0.574 iTransformer 0.893 0.620 0.613 TFT 0.915 0.605 0.656 N-BEATS 0.938 0.816 2.512 DLinear 1.061 0.846 2.841 TiDE 1.091 0.772 0.906 DeepAR 1.343 0.853 0.933 Crossformer 2.574 1.637 6.892 B.3 Comparator intervals Table 1 reports point estimates. Every comparator whose per-configuration results are in the released snapshot is scored on the same 9797 configurations against the same seasonal-naive reference, so each difference admits a paired bootstrap, and Table 6 gives them. The delta is our score minus the comparator’s, so a positive delta means the comparator leads; 20,00020,000 replicates, percentile intervals. The second interval resamples the 2828 base datasets rather than the 9797 configurations, on the grounds of Appendix B.1. FLAIR has no per-configuration entry in the snapshot and so has no interval here. The released artifact carries the same two intervals for every snapshot model with a per-configuration record, 2828 models and 8484 deltas, of which 1515 span zero under clustering. The 1717 beyond Table 1 are the per-dataset supervised models, the naive baseline, and entries the 10 M cut put out of range. Table 6: Paired bootstrap intervals for every difference in Table 1 with a per-configuration comparator record. Positive Δ means the comparator scores lower and therefore leads. The three StatsForecast baselines are omitted: all are resolved against us, by margins of 0.300.30 to 8.088.08 units. FLAIR is absent for the reason given above, having no per-configuration entry in the snapshot. † marks a difference whose cluster interval spans zero. The Reverso rows on nWQLnWQL and nMSISnMSIS carry the same caveat as in Table 1: those models emit no predictive distribution, so the quantity differenced is a point error. 95% CI Model Params Δ configs base datasets nGMASEnGMASE Reverso-Nano 200 K +0.0140+0.0140† [+0.0030,+0.0245][+0.0030,+0.0245] [−0.0022,+0.0283][-0.0022,+0.0283] Reverso-Small 550 K +0.0475+0.0475 [+0.0366,+0.0581][+0.0366,+0.0581] [+0.0322,+0.0613][+0.0322,+0.0613] TTM-R3 1.4 M +0.0498+0.0498 [+0.0348,+0.0656][+0.0348,+0.0656] [+0.0290,+0.0695][+0.0290,+0.0695] Reverso 2.6 M +0.0626+0.0626 [+0.0479,+0.0782][+0.0479,+0.0782] [+0.0437,+0.0843][+0.0437,+0.0843] Toto-2.0-4m 4.1 M +0.0172+0.0172† [−0.0081,+0.0382][-0.0081,+0.0382] [−0.0102,+0.0448][-0.0102,+0.0448] YingLong-6m 7.3 M −0.1064-0.1064 [−0.1446,−0.0733][-0.1446,-0.0733] [−0.1702,−0.0530][-0.1702,-0.0530] FlowState-9.1M 9.1 M +0.0476+0.0476 [+0.0327,+0.0627][+0.0327,+0.0627] [+0.0300,+0.0651][+0.0300,+0.0651] Kairos-10m 9.9 M +0.0211+0.0211 [+0.0008,+0.0383][+0.0008,+0.0383] [+0.0021,+0.0374][+0.0021,+0.0374] nWQLnWQL Reverso-Nano 200 K −0.1156-0.1156 [−0.1324,−0.1002][-0.1324,-0.1002] [−0.1408,−0.0922][-0.1408,-0.0922] Reverso-Small 550 K −0.0811-0.0811 [−0.0954,−0.0678][-0.0954,-0.0678] [−0.1006,−0.0634][-0.1006,-0.0634] TTM-R3 1.4 M +0.0259+0.0259 [+0.0127,+0.0399][+0.0127,+0.0399] [+0.0085,+0.0459][+0.0085,+0.0459] Reverso 2.6 M −0.0649-0.0649 [−0.0827,−0.0466][-0.0827,-0.0466] [−0.0886,−0.0382][-0.0886,-0.0382] Toto-2.0-4m 4.1 M +0.0213+0.0213† [+0.0001,+0.0401][+0.0001,+0.0401] [−0.0036,+0.0457][-0.0036,+0.0457] YingLong-6m 7.3 M −0.0636-0.0636 [−0.0894,−0.0405][-0.0894,-0.0405] [−0.1031,−0.0260][-0.1031,-0.0260] FlowState-9.1M 9.1 M +0.0435+0.0435 [+0.0304,+0.0582][+0.0304,+0.0582] [+0.0268,+0.0629][+0.0268,+0.0629] Kairos-10m 9.9 M −0.0087-0.0087† [−0.0283,+0.0086][-0.0283,+0.0086] [−0.0278,+0.0092][-0.0278,+0.0092] nMSISnMSIS Reverso-Nano 200 K −1.4807-1.4807 [−1.6688,−1.3123][-1.6688,-1.3123] [−1.7867,−1.1911][-1.7867,-1.1911] Reverso-Small 550 K −1.3911-1.3911 [−1.5651,−1.2281][-1.5651,-1.2281] [−1.6846,−1.1185][-1.6846,-1.1185] TTM-R3 1.4 M +0.0528+0.0528 [+0.0219,+0.0843][+0.0219,+0.0843] [+0.0076,+0.0935][+0.0076,+0.0935] Reverso 2.6 M −1.3506-1.3506 [−1.5205,−1.1952][-1.5205,-1.1952] [−1.6226,−1.0875][-1.6226,-1.0875] Toto-2.0-4m 4.1 M +0.0989+0.0989 [+0.0684,+0.1304][+0.0684,+0.1304] [+0.0668,+0.1309][+0.0668,+0.1309] YingLong-6m 7.3 M +0.0200+0.0200† [−0.0131,+0.0522][-0.0131,+0.0522] [−0.0300,+0.0579][-0.0300,+0.0579] FlowState-9.1M 9.1 M −0.0091-0.0091† [−0.0413,+0.0244][-0.0413,+0.0244] [−0.0488,+0.0215][-0.0488,+0.0215] Kairos-10m 9.9 M −0.2224-0.2224 [−0.2852,−0.1660][-0.2852,-0.1660] [−0.2967,−0.1549][-0.2967,-0.1549] Appendix C Ablations and negative results C.1 Ablation setup Table 7 gives each family’s configuration. The exclusion lists of Appendix A are applied when GIFT-Eval-Pretrain is cached, so every family inherits them and none saw a benchmark test base. The deployed configuration differs from the architecture family’s causal phase-binning arm in five fields: FFN expansion, feed-forward tying, convolution factorization, the future-conv readout and the number of quantile levels. Table 7: Configuration of the three ablation families and of the deployed model. Deltas are valid within a family and absolute scores are not comparable across families. Q is the number of quantile levels; the single-quantile families are scored on nMADnMAD, and the component family runs at about a fifth of the deployed sample budget. Every family reads GIFT-Eval-Pretrain and Chronos KernelSynth; the component family adds four locally generated length-4096 KernelSynth shards, which its synthetic-family arm replaces with the four Reverso-family shards the deployed model trains on. Family Control Parameters Steps Q Encoder Architecture dilated-conv base 340,545340,545 7,500 1 untied, non-separable, FFN 1.51.5 + phase binning 361,089361,089 + recency gate 393,921393,921 substituted-recency arm 410,241410,241 Component architecture family’s best arm 394,441394,441 30,000 9 untied, non-separable, FFN 1.51.5 + future-conv 445,513445,513 future-conv stack separable, shared FFN Optimization peak LR 3×10−33× 10^-3, 100 M samples – – 1 effective batch 4096 Deployed – 146,505146,505 36,62136,621 9 tied, separable, FFN 1.01.0 C.2 The ablation tables The architecture and optimization arms emit a single quantile, so their weighted quantile loss reduces exactly to the median absolute deviation. That column is written nMADnMAD, formed and normalized like nWQLnWQL but a point error, and not comparable to the nWQLnWQL of a nine-quantile model. Intervals for the named arms On the architecture family’s 340 K, 7,500-step line, substituting a phase-free recency path for the detector costs 0.1310.131 nGMASEnGMASE with a 95%95\% paired bootstrap interval over configurations of [0.085,0.189][0.085,0.189], and on that line it splits by sampling rate, scoring 1.3521.352 on hourly configurations against 0.9330.933 on daily-or-coarser. That arm carries 410 K parameters against a 340 K control, so it measures the detector and the capacity together; the capacity-matched retrained comparison is the one Section 4.2 reports. Phase binning’s benefit tracks the same axis, rising from a median 0.0210.021 on the 2424 configurations the benchmark assigns no seasonality to 0.2190.219 on the quarter with the largest ratio of naive to seasonal-naive MASE. The head-to-head against Reverso-Nano runs the other way: we beat it on 1111 of those 2424 and on 1919 of the 7373 that declare a cycle. Causal padding is free within resolution on its own (Table 8) and once phase binning is present, where it costs +0.0001+0.0001 nGMASEnGMASE [−0.0117,+0.0119][-0.0117,+0.0119] and +0.0095+0.0095 nMADnMAD [−0.0006,+0.0194][-0.0006,+0.0194], each spanning zero. Sign symmetrization returns 0.00790.0079 nGMASEnGMASE [0.0034,0.0126][0.0034,0.0126] and 0.00610.0061 nWQLnWQL [0.0022,0.0099][0.0022,0.0099]. The backtest-selected period arm is worse than the raw Fisher pick on both metrics, by 0.0040.004 and 0.0050.005, inside the bootstrap’s resolution and inside the kill band fixed for it before the run. The deployment interaction residual of Section 4 is 0.0230.023 nGMASEnGMASE. A Kalman-smoothed decoder variant is released with the other component arms but kept out of Table 9. At four times the sample budget of the rest of its family it still did not reach the control, falling short by more than any arm in the table gains. Since its budget differs from theirs, its delta could not be read against their common control in any case, and it is excluded from the multiplicity correction below for the same reason. Table 8: Architecture family, dilated-conv base at 340 K, 7,500 steps. Lower is better on nGMASEnGMASE and nMADnMAD, so a negative Δ is an improvement. Arms are not parameter-matched, and each row gives its count. nMADnMAD is the single-quantile point error defined above. † marks a delta whose 95%95\% paired bootstrap interval over configurations spans zero. params nGMASEnGMASE Δ nMADnMAD Δ detector off, recency path substituted 410 K 1.1537 +0.1312+0.1312 0.9774 +0.1160+0.1160 control (dilated-conv base) 340 K 1.0225 0.8614 causal padding 340 K 1.0161 −0.0064-0.0064† 0.8562 −0.0052-0.0052† + phase binning 361 K 0.9248 −0.0977-0.0977 0.7791 −0.0823-0.0823 + phase binning + causal 361 K 0.9250 −0.0975-0.0975 0.7886 −0.0728-0.0728 + phase binning + recency gate 393 K 0.9092 −0.1133-0.1133 0.7694 −0.0920-0.0920 Table 9: Component family, 394 K nine-quantile line, 30,000 steps. Lower is better on nGMASEnGMASE and nWQLnWQL, so a negative Δ is an improvement. Arms carry the control’s parameter count except future-conv, which adds 5151 K. † marks a delta whose 95%95\% paired bootstrap interval over configurations spans zero. nGMASEnGMASE Δ nWQLnWQL Δ control (394 K line) 0.8123 0.5699 + future-conv correction 0.7972 −0.0151-0.0151 0.5614 −0.0085-0.0085 + synthetic-family blend 0.8060 −0.0062-0.0062† 0.5669 −0.0030-0.0030† + synthetic-family blend (tuned dose) 0.8052 −0.0071-0.0071† 0.5623 −0.0076-0.0076† + gated committing loss 0.8100 −0.0023-0.0023† 0.5690 −0.0009-0.0009† + future-conv + synthetic families 0.7860 −0.0263-0.0263 0.5529 −0.0170-0.0170 8 training AR chunks (vs 4) 0.8132 +0.0010+0.0010† 0.5648 −0.0051-0.0051† backtest-selected period (vs raw detection) 0.8167 +0.0044+0.0044† 0.5749 +0.0050+0.0050† MASE-weighted loss 0.8146 +0.0023+0.0023† 0.5719 +0.0020+0.0020† Table 10: Optimization family: learning-rate peak and sample budget. Lower is better, so a negative Δ is an improvement. nMADnMAD is a point error, as in Table 8. † marks a delta whose interval spans zero. nGMASEnGMASE Δ nMADnMAD Δ control (peak LR 3×10−33× 10^-3, 100 M samples) 0.8562 0.7252 peak LR 1e-3 0.8957 +0.0395+0.0395 0.7460 +0.0208+0.0208 peak LR 2e-3 0.8665 +0.0103+0.0103 0.7300 +0.0048+0.0048† peak LR 4e-3 0.8745 +0.0183+0.0183 0.7304 +0.0052+0.0052† budget 50 M samples 0.8933 +0.0371+0.0371 0.7479 +0.0227+0.0227 budget 150 M samples 0.8533 −0.0029-0.0029† 0.7217 −0.0035-0.0035† Interval score in the component family nMSISnMSIS is meaningful only for the component family, which has the nine-quantile head; the other two families emit a single quantile, where the score reduces to a rescaled nGMASEnGMASE. On that metric the longer training rollout is not null: it improves the interval score by 0.02970.0297 (95%95\% CI [0.0171,0.0433][0.0171,0.0433], and [0.0163,0.0435][0.0163,0.0435] under clustering), on 5858 of the 9797 configurations, which is the only component arm resolved on nMSISnMSIS under clustering and roughly 2.62.6 times the next largest such delta. Selection ran on the two metrics the family’s table carries, and the arm is null on both, at +0.0010+0.0010 nGMASEnGMASE and −0.0051-0.0051 nWQLnWQL. Since nMSISnMSIS sits outside the correction family described below, the interval-score gain is a single uncorrected delta, and we did not carry the arm into the deployed configuration. Canonical-period alignment under clustering Alignment changes only two of the 97 configurations, both from one base dataset, and its bootstrap interval touches zero for that reason: a replicate that draws neither configuration returns exactly zero, which happens in 13.2%13.2\% of draws. Clustering cannot separate it from zero at all: a replicate that omits bizitobs_l2c returns exactly zero, which is 36.0%36.0\% of draws, and the two-sided achieved level is 0.720.72 on both metrics. Its 0.0120.012 nGMASEnGMASE and 0.0110.011 nWQLnWQL sit inside the headline 0.7740.774 and 0.5450.545. Sign symmetrization is resolved under the same clustering, at [0.0029,0.0144][0.0029,0.0144] nGMASEnGMASE and [0.0019,0.0111][0.0019,0.0111] nWQLnWQL, and changes all 9797. Multiplicity and what the correction covers The correction family is the 3636 deltas printed in Tables 8, 9 and 10, which is every arm of the three families on the two metric columns its own table carries. Each is a 95%95\% paired bootstrap interval over the 9797 configurations, resampling configurations rather than runs, and 1818 of the 3636 span zero. Since thirty-six intervals at 95%95\% will resolve one or two by chance, the family carries a Benjamini–Hochberg correction (Benjamini & Hochberg 1995) at q=0.05q=0.05. It leaves 1616 resolved under configuration resampling. Clustering, which widens the intervals by a median factor of 1.411.41, leaves 1515 or 1616 before the correction and 1414 after it. Read at its strictest, cluster interval and cluster correction together, the evidence is 1414 deltas, seven arms on both of their metrics. Detector removal and phase binning are among them, at [0.063,0.220][0.063,0.220] and [−0.155,−0.049][-0.155,-0.049] under clustering. The future-conv correction survives neither, losing one metric or the other under every combination, and its nWQLnWQL cluster interval closes on zero at the upper end. The correction is conservative, since ten of the 3636 are the nMADnMAD column of a single-quantile arm, where that metric is a point error tracking nGMASEnGMASE almost exactly (Pearson 0.9940.994 across those arms). Thirty-six therefore overstates how many separate questions were asked, and dropping that column changes no delta’s status under either scheme. The correction also covers the ablation tables and nothing else. The comparator differences of Appendix B.3, the substitution arms, the capacity and inference-strategy probes, sampled feedback and the subgroup splits each carry one interval and no correction, so each is a 95%95\% statement on its own. The intervals are released with the per-configuration results. C.3 Detector evidence The detector fires on 84%84\% of initial contexts across all 9797 configurations and fills 2.92.9 of its four slots on average, measured over at most 200200 windows per configuration. Since the deployed model re-runs the detector on every rolled-forward context, this figure covers the initial context only. Where the true period is checkable the returned one is right: 2424 for hourly electricity and solar, and 9898, 146146 and 293293 for the daily cycle at fifteen-minute, ten-minute and five-minute sampling. The small offsets are bin quantization. Spectral leakage cannot account for the extra slots, since the detector keeps only local maxima and two adjacent bins cannot both be one. Harmonics account for part of them. Counting a slot as a new cycle only when it is not a harmonic of one already accepted, a multi-slot emission carries 2.22.2 distinct cycles on average, and 79%79\% carry a second. Raising K therefore has little left to find, since only 5%5\% reach four distinct cycles and later slots would carry fewer. A single-delta K=8K=8 arm on the architecture family’s best base bears this out, scoring 0.92330.9233 nGMASEnGMASE against its 0.90920.9092 (Table 11), so we did not carry a larger K into the deployed configuration. Firing rate against a frequency control Accuracy is worse where the detector rarely fires, and the gap survives a control for declared seasonality. The deployed model scores 0.7530.753 nGMASEnGMASE on the 7171 configurations that fire on more than 90%90\% of windows, against 0.8410.841 on the 1010 that fire below 50%50\%. Seven of those ten are configurations the benchmark assigns no seasonality, so the split could be reporting nothing more than that series without a declared cycle are harder. That reading requires declared seasonality to predict our error, and it does not. Its rank correlation with nGMASEnGMASE is +0.089+0.089, and the 2424 configurations with no declared cycle score 0.7660.766 against 0.7760.776 for the other 7373. Restricting to those 7373 and splitting them at 50%50\% firing therefore leaves the gap almost intact, at +0.074+0.074 [+0.024,+0.125][+0.024,+0.125]. Within the architecture family the uncontrolled split moves phase binning from 0.1280.128 on the 7171 above 90%90\% to nothing separable from zero on the 1010 below 50%50\%, and that null sits with the seven of those ten the benchmark assigns no seasonality. Only three of the 7373 with a declared cycle fire below 50%50\%, however, so the controlled split’s low bucket rests on three points and its bootstrap admits only ten distinct resamples. Across all 9797 configurations the rank correlation between firing rate and nGMASEnGMASE is −0.110-0.110 [−0.290,+0.083][-0.290,+0.083]. The association is in the direction the premise predicts, and it lives at the tail of the firing distribution rather than across it. The seasonality contrast of Appendix C.2 states the question on a larger split. The detector retrain against each shipped seed Section 4.2 contrasts the detector-off retrain with the mean of three shipped-recipe runs. That contrast is +0.0071+0.0071 nGMASEnGMASE, [−0.0004,+0.0148][-0.0004,+0.0148] resampling the 97 configurations and [−0.0013,+0.0177][-0.0013,+0.0177] resampling the 28 base datasets, and +0.0042+0.0042 nWQLnWQL, [−0.0006,+0.0088][-0.0006,+0.0088] and [−0.0005,+0.0089][-0.0005,+0.0089]. Paired against each shipped seed separately the contrasts are +0.0076+0.0076 nGMASEnGMASE [+0.0002,+0.0157][+0.0002,+0.0157] at seed 4242, +0.0069+0.0069 [−0.0010,+0.0151][-0.0010,+0.0151] at seed 4343 and +0.0067+0.0067 [−0.0016,+0.0156][-0.0016,+0.0156] at seed 4444; on nWQLnWQL they are +0.0028+0.0028 [−0.0036,+0.0087][-0.0036,+0.0087], +0.0047+0.0047 [−0.0014,+0.0111][-0.0014,+0.0111] and +0.0051+0.0051 [−0.0008,+0.0111][-0.0008,+0.0111]. Substitution arms The three interventions Section 4.2 describes score as follows. Suppressing the detector’s output costs 0.07510.0751 nGMASEnGMASE (95%95\% CI [0.0440,0.1138][0.0440,0.1138]). Against that control the fixed data-blind set is worse still, 0.85970.8597 against 0.84890.8489 (+0.0108+0.0108, [0.0022,0.0204][0.0022,0.0204]), and the shuffled draw is barely better, 0.84140.8414 (−0.0074-0.0074, [−0.0141,−0.0001][-0.0141,-0.0001]), so the detector’s own distribution applied to the wrong series recovers almost none of its value. These interventions leave the phase machinery in place and change only its input, so they are not comparable with the arm of Table 8 that removes both on a different training line. Canonical substitution and window occupancy Substituting the metadata-declared canonical period for the detector’s own choice costs accuracy everywhere, but very unevenly: 0.1360.136 in log ratio on sub-hourly and hourly configurations against 0.0050.005 on daily-or-coarser ones, a contrast of 0.1310.131 with a paired bootstrap interval of [0.084,0.180][0.084,0.180]. The canonical period is the true seasonal period in both groups, so correctness does not explain the gradient. Window occupancy accounts for it. The substituted period is 288288 samples at five-minute sampling and 360360 at ten-second sampling, so a 20482048-sample context folds onto seven cycles and six. At daily-or-coarser sampling the canonical weekly period of seven packs nearly three hundred cycles into the same window. What the encoder responds to is how many cycles the fold puts in each bin, and the detector earns its place by choosing periods that both occupy the window well and belong to the series in front of it. Taken as a whole the canonical substitution is about as damaging as supplying no periods at all, 0.85090.8509 against 0.84890.8489. Occupancy is not the whole account, and the substitution arms bound how much of the detector’s value it absorbs. Against the 0.07510.0751 nGMASEnGMASE that suppressing the detector’s output costs, replacing its choices with a fixed well-spread set costs 0.08590.0859, more than suppression itself. Its own outputs assigned to the wrong series cost 0.06770.0677, nine tenths of the way. A well-occupied period the series does not have is therefore worse than none at all, and the part the word “detection” most naturally suggests accounts for most of the effect. That the shuffled arm nonetheless beats the fixed one by 0.0180.018 [0.013,0.024][0.013,0.024] says the distribution of periods the detector produces carries information about the corpus even when the correspondence to individual series is destroyed. C.4 Capacity, size and single-setting sweeps The architecture family bounds how much of phase binning’s effect capacity can explain. The recency gate adds 3333 K parameters to the same base under the same recipe and budget and returns 0.01560.0156 nGMASEnGMASE (95%95\% CI [−0.0255,−0.0067][-0.0255,-0.0067] over configurations, [−0.0255,−0.0060][-0.0255,-0.0060] under clustering). The next most efficient use of capacity we measured therefore buys about a tenth as much per parameter as phase binning does. Width is measured directly, but on the component family’s 394,441394,441 line and not on this one: widening D from 6464 to 7676 there, 19%19\% wider for 41%41\% more parameters, moves nGMASEnGMASE by −0.0018-0.0018 (95%95\% CI [−0.0081,+0.0047][-0.0081,+0.0047]) and nWQLnWQL by −0.0019-0.0019 ([−0.0063,+0.0021][-0.0063,+0.0021]), both intervals containing zero. The reduction to the deployed size Halving the model cost nothing measurable. Against the 445,513445,513-parameter future-conv arm, a variant that cuts the FFN expansion from 1.51.5 to 1.01.0, ties the feed-forward, removes the recency bins and disables the gate reaches 225,865225,865 parameters, 49%49\% fewer. Paired over the 4343 configurations both arms cover at step 7,0007,000, it scores 1.0085×1.0085× the control on point accuracy (95%95\% CI [0.9697,1.0450][0.9697,1.0450]), 1.0085×1.0085× on probabilistic accuracy ([0.9892,1.0321][0.9892,1.0321]) and 0.9531×0.9531× on the interval score ([0.9145,0.9926][0.9145,0.9926]). Both accuracy intervals contain parity and the interval score improves. The probe covers 4343 of the 9797 configurations and stops well short of the deployed schedule, at step 7,0007,000. The remaining step to 146,505146,505, the separable convolutions, is not separately paired. Single-variable overrides Seven settings were varied one at a time on the architecture family’s best arm, the last row of Table 8, each scored on all 9797 GIFT-Eval configurations. Table 11 gives them. Six either cost accuracy or sit inside the family’s noise, which is why the shipped values stand. Doubling the phase bins to 3232 is the only setting that moves the other way, by 0.00450.0045, less than the causal-padding delta the same family’s bootstrap cannot separate from zero. That run also postdates the freeze of the deployed line, and nb=32n_b=32 doubles the cyclic template the device holds. We report it without adopting it. Raising the period cap from four to eight is the second-largest loss in the table, behind only the recency-weighted fold, and is the evidence behind stopping at four. Table 11: Single-variable overrides on the architecture family’s best arm. All 9797 GIFT-Eval configurations; a negative Δ is an improvement. nGMASEnGMASE Δ control (phase binning + recency gate) 0.9092 phase bins, 1616 to 3232 0.9047 −0.0045-0.0045 cross-horizon convolution, width 55 0.9085 −0.0007-0.0007 encoder kernel width, 33 to 55 0.9100 +0.0008+0.0008 gated encoder convolution 0.9178 +0.0086+0.0086 harmonics per period, 11 to 22 0.9178 +0.0086+0.0086 period cap, 44 to 88 0.9233 +0.0141+0.0141 recency-weighted phase fold 0.9242 +0.0150+0.0150 C.5 Negative results Table 12 lists the interventions aimed at point accuracy that were tested and rejected. Each was a single-run probe at reduced budget, so they characterize this architecture at this scale and need not generalize. Table 12: Interventions aimed at point accuracy, tested and rejected. nGMASEnGMASE throughout, lower is better. Groups 1 and 2 are scored against an archived control and group 1’s per-configuration results are released. Group 3’s arms have no archived control, and groups 4 to 6 are reported by direction. Group Intervention Scored on Result 1 Computed values seasonal-naive draft as input value 6-config probe 0.8825 + all significant periods 6-config probe 0.8930 + linear trend term 6-config probe 0.9178 control (dilated-conv base) 6-config probe 0.8760 trend-seasonal decomposition as channels 97 configs 0.9177 2 Learned rule learned per-period weight, variant 1 97 configs 0.9114 learned per-period weight, variant 2 97 configs 0.9190 hard reliability rule 97 configs 0.9002 no rule 97 configs 0.9092 3 Per-instance adaptation 4 methods, best is an oracle gate 97 configs 0.818 amortized model 97 configs 0.774 4 Tail-robust objective worst-α per-sample losses probe worse at every α 5 Horizon-weighted loss linear long-horizon up-weighting probe no net change 6 Median up-weighting q0.5q_0.5 term up-weighted probe no gain at convergence Group 1 supplied computed quantities as input values rather than as a coordinate, and the regression grows with the amount of prior supplied. Read together with the output-suppression arm of Section 4.2, this locates what computing buys: a computed period is useful as a coordinate the encoder is indexed by, while a computed forecast is not useful as a value the encoder must correct, because the convolutional stack models level and seasonality in value space better than the hand-computed baselines do. Group 2 tried the premise in the other direction, replacing the hard reliability rule that rejects periods with too few cycles in the window by a learned per-period weight. Both variants were worse than the hard rule and worse than no rule at all, and neither the rule nor its learned replacement is in the deployed configuration. Training budget interacts with that second result. In a separate probe the hard rule, together with a wider fixed cross-horizon convolution, improved this family at a reduced training budget and cost accuracy at the budget the shipped model uses, each flag worth 0.0090.009 at 30,00030,000 steps against a joint cost of 0.01610.0161 at 150,000150,000 steps. The two flags were changed together, so the attribution is joint, but the direction is what one would expect if a hard-coded bias helps an undertrained model and constrains a well-trained one. Group 3 shows the apparent in-context-learning headroom to be largely a measurement artifact, since a per-series Bayesian fit that looks strong under a balanced interior-window probe falls behind the amortized model under the exact GIFT-Eval protocol, and the oracle gate’s per-series advantage does not correlate with the tested identifiability statistics. In group 4 sample-level CVaR (Rockafellar & Uryasev 2000) concentrates on the noisiest, most aleatoric samples instead of the under-served configurations, so the training-sample tail does not transfer to the evaluation-configuration tail the metric scores. Appendix D Additional benchmark measurements This appendix carries in full the measurements Section 4 states in summary. D.1 Interval quality and coverage nWQLnWQL scores sharpness and calibration together, and two further measurements separate them. The first is the mean scaled interval score, normalized the same way and reported in Table 1: TinyCast reaches 0.5540.554. GluonTS scores it at α=0.05α=0.05, so the 2.52.5 and 97.597.5 percent levels a nine-decile head does not emit are supplied by the tail extrapolation of its quantile accessor; every model in the column that emits deciles is treated alike, but the level is not one any of them predicts directly. Table 13 places it against the census. Two models are ahead by a resolved margin and each spends ten to thirty times the budget, while two further comparisons do not resolve. FLAIR pretrains nothing and fits 2828 to 5757 coefficients per series, and it has no per-configuration record, so no interval can be formed against it. The Reverso family emits no predictive distribution, so its entries are point errors scored by an interval metric rather than comparable measurements. Those models lead us on point accuracy. Concurrent work adds a quantile head to the 2.62.6 M Reverso backbone, reported at 33 M with the head, and reaches 0.4990.499 nWQLnWQL (Fu et al. 2026), twenty times our parameter count and above the 1.41.4 M of the frontier claim. Table 13: Interval score on GIFT-Eval at the host profile, all 9797 configurations, normalized to seasonal naive. Lower is better. Positive Δ means the comparator scores lower and therefore leads. Intervals are paired bootstraps over configurations, and † marks a difference whose cluster interval spans zero. Parenthesized values are point errors for models not emitting predictive distributions, as in Table 1, and their differences carry the same caveat. Model Params ↓ nMSIS↓nMSIS Δ 95%95\% CI TinyCast (ours) 146 K 0.554 Reverso-Nano 200 K (2.035) −1.4807-1.4807 [−1.6688,−1.3123][-1.6688,-1.3123] Reverso-Small 550 K (1.945) −1.3911-1.3911 [−1.5651,−1.2281][-1.5651,-1.2281] TTM-R3 1.4 M 0.501 +0.0528+0.0528 [+0.0219,+0.0843][+0.0219,+0.0843] Reverso 2.6 M (1.905) −1.3506-1.3506 [−1.5205,−1.1952][-1.5205,-1.1952] Toto-2.0-4m 4.1 M 0.455 +0.0989+0.0989 [+0.0684,+0.1304][+0.0684,+0.1304] YingLong-6m 7.3 M 0.534 +0.0200+0.0200† [−0.0131,+0.0522][-0.0131,+0.0522] FlowState-9.1M 9.1 M 0.563 −0.0091-0.0091† [−0.0413,+0.0244][-0.0413,+0.0244] Kairos-10m 9.9 M 0.776 −0.2224-0.2224 [−0.2852,−0.1660][-0.2852,-0.1660] FLAIR 0 0.538 – no per-configuration record The second is empirical coverage, computed from the emitted quantiles over all 97 configurations, weighted by scored points so that a configuration contributes in proportion to its horizon. Pooled, the nominal 80%80\% central interval captures 68.0%68.0\% of actuals, so the model is over-confident. The deficit tracks the horizon: at the short term the same interval captures 83.0%83.0\%, at medium 67.4%67.4\%, and at long 60.0%60.0\%. This is the behavior the block-autoregressive decoder predicts, since every block after the first is conditioned on the median of its predecessors and the intervals therefore do not widen as they should with accumulated uncertainty. The three terms draw on different configurations, so the gradient could be composition rather than horizon; restricting to the 1414 base datasets that appear at all three terms widens it rather than removing it, from 23.023.0 to 25.925.9 points between short and long. We report the coverage curves per term and per frequency with the evidence. Interval score at the firmware profile Table 1 reports nMSISnMSIS for the host profile only. Recomputed over the same 97 configurations, the quantized host profile reaches 0.56320.5632 against its matched unquantized reference at 0.55350.5535, a quantizer cost of 1.75%1.75\%, and the firmware profile reaches 0.62430.6243 against the host profile’s 0.55410.5541, a cost of 12.7%12.7\%. The interval score therefore degrades about twice as fast as nGMASEnGMASE (7.6%7.6\%) and nWQLnWQL (6.5%6.5\%) over the same step. Empirical coverage is measured on the host path only, so the deployed configuration’s calibration is bounded by this figure rather than measured directly. D.2 Quantization spread Figure 4: Empirical cumulative distribution over all 97 configurations of the relative change from the matched unquantized reference to the quantized host profile, both carrying the two host-side strategies, in nGMASEnGMASE (left) and nWQLnWQL (right), for all configurations (black) and by forecast term (light to dark: 55 short, 21 medium, 21 long). Positive is a degradation and the dashed line is zero change; the panels share one x range. Dots mark the median and the P90; the filled marker where a curve reaches one is the worst configuration, named with its change. Figure 5: The same construction as Figure 4, but at the firmware profile: the relative change from the single-pass reference to exact static W8A8, with neither sign symmetrization nor period alignment on either side. Lower is better and positive is a degradation. The quantizer costs more at the firmware profile than at the host profile Figure 4 pairs the quantizer against a reference that carries both host-side strategies. The firmware carries neither, and against its own matched single-pass reference the same quantizer costs more than twice as much: 5.18%5.18\% nGMASEnGMASE and 3.29%3.29\% nWQLnWQL, against 2.14%2.14\% and 1.26%1.26\% at the host profile. The spread widens with it. On nGMASEnGMASE the firmware profile degrades 8787 of the 9797 configurations, against 7979 at the host profile. Its median configuration loses 3.21%3.21\% against 1.02%1.02\%, its P90 15.9%15.9\% against 7.55%7.55\%, and its worst +37.0%+37.0\% against +22.6%+22.6\%, in both cases on m4_hourly, which crosses parity with seasonal naive already at the host profile, 0.8580.858 to 1.0521.052. Nineteen configurations that beat seasonal naive at the host profile do not at the firmware profile. Figure 5 gives the distribution. D.3 Secondary benchmarks in full Chronos-ZS and fev-bench are both scored the way GIFT-Eval is, as geometric means of per-task ratios to the seasonal-naive reference their own comparator files carry (Tables 14 and 15). Each normalizes over its own task set, so neither is comparable with the other or with the GIFT-Eval aggregates. Table 14: Chronos-ZS at the host profile, all 2727 tasks, ratios to the published seasonal-naive reference. Lower is better. The statistical methods need no training data and have no position on a parameter axis. Model Params rel. MASE rel. WQL TinyCast 146 K 0.880 0.722 AutoARIMA – 0.869 0.741 AutoTheta – 0.859 0.793 AutoETS – 0.943 0.814 TTM-R2 805 K 1.120 1.134 Chronos-Tiny 8.4 M 0.874 0.703 Chronos-Bolt-Tiny 8.7 M 0.849 0.668 Table 15: fev-bench at the host profile, all 100100 tasks. Ratios are to the vendored seasonal-naive reference and lower is better. Win rate is TinyCast’s share of tasks won against that model, computed by the benchmark’s own pairwise function, so it rests on no comparator pool. AutoARIMA returns 9696 of the 100100. ∗CITRAS-FM releases no checkpoint, so its parameter count is the one stated in its paper rather than one we instantiated. MASE WQL Model Params ↓ ratio win rate ratio win rate TinyCast 146 K 0.819 – 0.658 – AutoARIMA 0 0.879 0.688 0.746 0.719 AutoTheta 0 0.890 0.650 0.922 0.810 Toto-2.0-4m 4.1 M 0.720 0.190 0.553 0.140 CITRAS-FM 7.2 M∗ 0.707 0.140 0.540 0.080 FlowState 9.1 M 0.702 0.140 0.525 0.110 Of the three benchmarks, Chronos-ZS is the least favorable to a model built on computed periodicity, and its task mix says why. Of the 2727 tasks, 1414 declare a seasonal period of four steps or fewer and ten declare none at all. The phase fold therefore has little to work with, and extrapolating a trend is the better strategy. On those 1414 we score 0.9130.913 relative MASE against AutoARIMA’s 0.8560.856 and AutoTheta’s 0.8510.851; on the other 1313 the ordering inverts and we lead both, 0.8460.846 against 0.8850.885 and 0.8670.867. The declared period does not account for every task, so this is a tendency rather than a rule. Against the full field of 2121 published comparators, almost all of them one to three orders of magnitude larger, TinyCast ranks seventeenth on both metrics. On fev-bench, disjointness is not established. The pretraining exclusion was defined against the GIFT-Eval and Chronos-ZS test sets, and twelve fev-bench tasks name corpus subsets we train on. We score 0.9340.934 relative MASE on those twelve against 0.8050.805 on the rest. We report the ratio-to-seasonal-naive construction used throughout rather than the benchmark’s headline, so every aggregate in this paper is built the same way. The two constructions agree metric by metric. A skill score is one minus the geometric mean of the per-task ratios, clipped to [10−2,102][10^-2,10^2], and none of our 100100 ratios reaches either bound, so our relative MASE and WQL give skill scores of exactly 0.1810.181 and 0.3420.342. The published headline 0.3040.304, with a paired bootstrap over tasks giving [0.247,0.364][0.247,0.364], is neither of those: fev-bench evaluates on a scaled quantile loss, on which our relative error is 0.6960.696. Its pairwise win rate on that loss is 0.8900.890 [0.820,0.950][0.820,0.950] against seasonal naive. Table 15 gives the rates against each comparator on the two metrics it reports. We score every task rather than a subset, and omitted tasks are dropped rather than imputed at the seasonal-naive score. On this benchmark TinyCast leads every statistical baseline on both metrics. fev-bench with both handicaps removed The 5454 covariate-free tasks still contain 2626 multivariate ones, which is where a univariate model does relatively best, so that subset controls only one of the two handicaps the paper names. Among the comparators, CITRAS-FM is the one built to exploit the inputs at issue, through the cross-variate module of Section 2, so it is where the explanation is most plausible. On the 2828 tasks that are both univariate and covariate-free, the gap to it is 0.1200.120 relative MASE and 0.1350.135 relative WQL, against 0.1130.113 and 0.1180.118 over all 100100 and 0.0970.097 and 0.1010.101 on the covariate-free 5454. Removing both handicaps widens the gap rather than closing it, which is evidence against the reading that the missing inputs account for it. D.4 Inference behavior The obvious mitigation for the coverage deficit is to feed a sampled quantile rather than the median into the next block, at no change to the inference budget. Measured over all 9797 configurations, its effect falls exactly where the mechanism says it must: 5353 have a horizon no longer than one block, so nothing is fed back and the two paths are bit-identical. On the 4444 that recurse the interval score improves in 3939 of them, by 0.0870.087 nMSISnMSIS with a paired bootstrap interval of [0.065,0.112][0.065,0.112], while point accuracy is worse and nWQLnWQL better by margins the same bootstrap cannot separate from zero. Pooled coverage rises from 68.0%68.0\% to 71.7%71.7\% and the long-horizon figure from 60.0%60.0\% to 66.3%66.3\% with intervals 16%16\% wider, which is under a third of the distance to nominal, and no intermediate setting buys it more cheaply. However, two thirds of the long-horizon deficit survives it, so a sampled feedback quantile does not recover calibration on its own. Whether the residual sits in a quantile head trained too narrow or in the rollout is not separated here. Taking quantiles across S independent sampled rollouts would separate them, but it costs S times the inference and falls outside this model’s envelope. Cold start in full A unit is commissioned before it has history, and the detector needs a few cycles in the window before it fires. Truncating the context and rescoring all 97 configurations gives the curve. The curve is reported on a relative-MAE scale, which is not interchangeable with nGMASEnGMASE and is anchored to this rescoring’s own full-context value of 0.7590.759. The rescoring does not apply the canonical-period alignment, under which the same checkpoint reaches 0.7460.746 on the same scale. Table 16 gives the curve. The fraction of windows in which the detector retains a period rises from 25%25\% at 6464 samples to 81%81\% at 512512 and then flattens at about 84%84\%. Table 16: Cold start: accuracy against the number of observed samples, all 9797 configurations rescored on a truncated context at the no-alignment profile, since an alignment factor computed from a truncated context would change the effective context length as history shrinks. Relative MAE, lower is better; 1.01.0 is parity with seasonal naive. Observed samples 64 128 256 512 1024 2048 Relative MAE 1.013 0.975 0.911 0.845 0.786 0.759 Accuracy flattens one step later: the step from 512512 to 10241024 samples is still worth 0.0580.058, and only the step from 10241024 to 20482048 falls to 0.0270.027, so the last of the gain is not detector availability. The practical reading is that a fresh deployment degrades gracefully to baseline instead of failing, and by 512512 samples has recovered two thirds of the distance from parity to its full-context score. D.5 Wins and losses against seasonal naive On point accuracy we beat seasonal naive on 9090 of 9797 GIFT-Eval configurations, 2222 of 2727 on Chronos-ZS and 8383 of 100100 on fev-bench. The losses cluster. Weekly, monthly and annual configurations score 0.8730.873 nGMASEnGMASE against 0.7580.758 elsewhere. On fev-bench seventeen tasks lose, and the largest margins are redset_5T at 1.8311.831, proenfo_gfc14 at 1.4391.439 and redset_15T at 1.3751.375, all of which declare a seasonal period. The monotone trends, world_life_expectancy at 1.0431.043 and world_co2_emissions at 1.0221.022, are among the mildest. On Chronos-ZS they are a near random walk, exchange_rate at 1.0851.085, and intermittent retail, dominick at 1.5061.506. Ten-second GIFT-Eval data at long horizons scores 1.0831.083. The wins concentrate where two conditions hold. The first is roughly 500500 regular samples, and the cold-start curve reads 0.9110.911 at 256256 against 0.8450.845 at 512512. The second is a cycle the detector retains, and the 7171 configurations firing above 90%90\% score 0.7530.753 against 0.8410.841 on the 1010 below 50%50\%. A separate limit follows from the head itself. Nine quantiles put the widest central interval at 80%80\%, so 95%95\% and 99%99\% alarm thresholds are unavailable. D.6 Qualitative forecasts Figure 6: Zero-shot forecasts at the host profile on ten GIFT-Eval tasks, spanning all seven domains, four sampling frequencies and three forecast terms. Truth (blue), median forecast (orange, dashed), shaded 1010–90%90\% predictive interval, seasonal naive (grey, dotted); the vertical dotted line marks the forecast start and grey bands mark missing observations. Titles give configuration, domain, nGMASEnGMASE and, where the horizon is only partly drawn, “first n of H”; y is in each series’ own units. The panel-selection and x-range rules are stated below. Panel selection for Figure 6 Slots are allocated across the seven domains in proportion to their configuration counts, with a floor of one. Within a domain, the configurations at evenly spaced order statistics of its nGMASEnGMASE are taken. Within a configuration, the displayed window is the one whose median-forecast MAE is the median over that configuration’s windows. The panels are drawn from the same forecasts the reported aggregates come from. Configurations with a horizon under 1212 steps are excluded from selection, since a panel of six or eight points cannot show a forecast’s behavior, and the x-range is chosen per panel and recorded in the released record. Neither is a choice on score. The panel median nGMASEnGMASE is 0.8330.833 against a benchmark median of 0.8240.824, and all 9797 configurations remain in every reported aggregate. Every per-task figure behind the aggregates of Section 4 is in the released record as CSV, for all three benchmarks, together with the comparator per-task results and the seasonal-naive denominators. Comparator aggregates are in Table 1. Appendix E On-device deployment record The figures in Table 17 come from a single deployed firmware image on an STM32H753 development board clocked at 480 MHz. Other measurements come from separate builds of the same runtime, and each is identified where it appears. E.1 Setup and operating point The model is exported as a static-W8A8 graph: symmetric per-output-channel weights and per-tensor activations, with all scales frozen before compilation. The implementation is not integer-only. The min-max normalization and its inverse, every RMSNorm, the SiLU gates with their elementwise products, the bias additions and the period detector evaluate their non-affine arithmetic locally in floating point. The detector works in FP64 and the rest in FP32. There are twenty RMSNorms in the streaming encoder and twelve in the decoder plan, with one more inside the fused decoder FFN-RMSNorm sequence. A hand-written C runtime evaluates the encoder position-by-position with the per-layer ring buffers of Section 3.3. The zero-parameter periodicity detector, one rFFT, is treated as input preprocessing and runs in floating point on the same device. The INT8 matrix multiplications, the dominant cost, use Arm’s CMSIS-N fully-connected kernels. The phase-mix projection, the fused decoder FFN and the depthwise convolutions use hand-written integer loops. The image is compiled with GCC at -O2 with 3232-byte function and loop alignment, runs from flash with instruction and data caches enabled, and copies the encoder weight pack to tightly-coupled memory at start-up. We fix the alignment because code layout alone moved the measured latency by 1.9%1.9\% between builds, 4.155 s4.155\,s against 4.076 s4.076\,s. E.2 Measured performance Timing A core call re-encodes the context position-by-position and decodes one 48-step block in 4.08 s4.08\,s. The position-wise encoder evaluation, at 1.86 ms1.86\,ms per position, accounts for 3.8 s3.8\,s of the call, and the decoder with its quantile readout for about 0.27 s0.27\,s more, of which 0.20 s0.20\,s is the decoder in isolation. Evaluating the encoder position-by-position avoids a full-window activation of about 640 KiB640\,KiB, but every call pays the full window pass. Rebuilding the identical firmware against three matmul backends bounds what kernel engineering buys: a portable scalar reference takes 6.05 s6.05\,s, hand-written SMLAD intrinsics 4.49 s4.49\,s, and CMSIS-N 4.08 s4.08\,s, a 1.49×1.49× span, with all three producing identical outputs. Core-call latency is nearly independent of the input. Across the 3232 contexts of the fidelity record the entire spread is 9.9 ms9.9\,ms on a mean of 4.06 s4.06\,s, and what variation there is tracks the number of periodicities the detector accepts, at 1.7 ms1.7\,ms per active slot. Since the core call performs its own normalization and period detection, the timed region is the whole forecast. Those 3232 calls were timed on a parity-mode build rather than the canonical image, so what transfers is the spread and not the level. On the canonical image ten repeated calls span 0.0025%0.0025\%. Longer horizons pay for their blocks and nothing more. Chains of five and fifteen blocks cost five and fifteen single-call latencies, putting the longest supported horizon of 720720 steps at 61.1 s61.1\,s. The closing quantile sort adds 0.08 ms0.08\,ms at H=240H=240 and grows linearly with the horizon. Since the encoder processes L positions in every case, cold-start forecasts from 11, 512512 and 20472047 observed samples cost what a full-context forecast costs. Table 17: Deployment record of the TinyCast static-W8A8 core, with FP32 islands, on an STM32H753 Cortex-M7 at 480 MHz. The RAM rows are not additive: the first 8 KiB8\,KiB of the heap row is already reserved in the linker-section row, and the accounted total removes the overlap. Latency Core call (full L=2048L=2048 re-encode) 4.08 s Per-position encoder step (×L× L per core call) 1860 μ Decoder (in isolation) 0.20 s Flash INT8 matrix and convolution coefficients 138.1 KiB Complete benchmark image (incl. 8 KiB8\,KiB context) 365.5 KiB RAM Encoder causal rings 128.5 KiB Phase-fold context tensor 128 KiB Linker RAM sections and reservation 508.6 KiB Persistent model heap payload 217.0 KiB Accounted unique RAM (lower bound) 717.6 KiB Peak occupancy (statics, heap, stack high-water) 730.7 KiB Storage and memory The firmware image occupies 17.8%17.8\% of the device’s flash, including an 8 KiB8\,KiB embedded test context. Its INT8 coefficients fall below the one-byte-per-parameter estimate of 143.1 KiB143.1\,KiB, since the 5,0655,065 biases and normalization scalars are carried separately at higher precision. Table 17 gives the RAM totals. The accounted figure is a lower bound, since the heap payload counts model allocations only and excludes allocator metadata, C-library buffers and stack. Peak occupancy is measured instead. The stack region is painted at boot and scanned after the run, and the heap break is read back after all allocations. The measured peak exceeds the accounted bound by exactly the overhead the accounting leaves out. Two components dominate, and each equals its architectural size exactly at D=64D=64 and L=2048L=2048. The encoder causal rings take ∑i((Kc−1)di+1)D _i((K_c-1)d_i+1)D bytes and the phase-fold context tensor takes LDLD bytes. Both totals are whole-image figures. The activation arena alone, which is the quantity embedded inference engines usually report, is 310.1 KiB310.1\,KiB: the 256.5 KiB256.5\,KiB of rings and phase-fold tensor together with the decoder plan’s declared 53.6 KiB53.6\,KiB peak. Arithmetic and energy The core call sustains roughly 8989 million multiply-accumulates per second, one every 5.45.4 CPU cycles at 480 MHz. The distance to the peak rate of the INT8 kernels is spent in the FP32 islands and in the non-matrix operations of the runtime. The part’s datasheet specifies a typical run-mode supply current of 110 mA110\,mA at 480 MHz on revision-V silicon at voltage-scaling level VOS0, executing from flash with caches enabled and peripherals disabled, rising to 148 mA148\,mA from tightly-coupled memory (STMicroelectronics 2026). Our configuration lies between those rows. At the 3.3 V3.3\,V rail those currents bracket 0.360.36–0.490.49 W. At the measured latencies that is an estimated 1.51.5–2.02.0 J per forecast and 0.70.7–0.90.9 mJ per ingested context position. Counting the forecast cost alone, a watt-hour of stored energy covers roughly two thousand forecasts. These figures are computed from the datasheet current and the measured latency at typical silicon, and are not an instrumented measurement. E.3 Fidelity Calibration protocol The 32 calibration series are 16 each from Dominick and Wiki Daily 100K, selected by ranking each source’s series on the SHA-256 digest of its identifier, which reads no sample value. The selection record is released with the paper. Dominick is also a Chronos-ZS task, so the quantizer’s scales are not blind to that benchmark, and it is our worst task there at 1.5061.506 relative MASE. Graph inputs take their finite absolute maximum, and internal thresholds minimize a histogram reconstruction error under a bounded clipping budget. The fixed test input is excluded. The phase-mix matrix lies outside the compiled plans and is quantized at build time, so no weight quantization occurs on the device. These frozen scales are what the exact static-W8A8 rows are computed under. The float simulation in the released code, quant.py, reads an activation scale from each tensor’s own range instead, so it does not reproduce those rows. Cross-hardware comparison The chain establishes that the board runs the same computation as the host, not that it returns identical floats. Board and host are compared on one fixed test input and on 32 contexts fixed before any board measurement, a different set from the calibration series and sharing only their count. The contexts are 16 benchmark-workload windows, 8 held-out real series and 8 adversarial inputs. The record was captured on a parity build whose four plan hashes match the deployed image. On the fixed test input the board records 432 de-normalized binary32 outputs. Of those, 173 are bit-identical to the host static-W8A8 reference, and every one lies within 3 units in the last place, a maximum absolute deviation of 9.5×10−79.5× 10^-7 or about 3×10−73× 10^-7 of the output range. Repeated boots reproduce the record exactly. Across the 32 contexts, 13,82413,824 outputs in all, period detection is identical everywhere, so both paths fold the context on the same periods. 55.4%55.4\% of outputs are bit-identical, and half the contexts agree within 14 units in the last place throughout. The median relative deviation is zero pooled and in the held-out real and adversarial tiers. The benchmark-workload tier is 47%47\% bit-identical, so its median is strictly positive. The largest deviations are discrete rather than accumulated rounding, and they have two sources. A near-zero output gives a large integer distance at a negligible absolute error. A one-ULP difference in an FP32 island that falls at an INT8 bin boundary flips the bin, moving that output by a full quantization step. The worst case is 15.4%15.4\% of the output range on benchmark-workload contexts, 16.1%16.1\% on held-out real series and 22.8%22.8\% under adversarial stress, the last on a near-constant input. Three independent INT8 matmul backends, CMSIS-N, hand-written SMLAD intrinsics and a portable scalar loop, produce identical outputs on the device, so the integer path itself is implementation-independent. E.4 Limits and projections Portability The streaming encoder, which dominates both latency and state, is not tied to this device class. Its source and frozen weight pack run unmodified on a commodity 150 MHz150\,MHz Cortex-M33 (RP2350), with the same INT8 kernels. There it costs 7.73 ms7.73\,ms per position within roughly 230 KiB230\,KiB, matching the host scalar reference on the four encoder channels it prints, at 1.30×1.30× the Cortex-M7’s cycle count. The full model exceeds that device’s 520 KB520\,KB SRAM, so this measures the portability of the encoder component rather than a second deployment. Streaming projection The deployed firmware re-encodes the whole window. Reusing the same decoder and buffers, a streaming variant would ingest each sample at the measured 1.86 ms1.86\,ms per-position step. It would pay the decoder and readout only when a forecast is emitted, roughly 0.27 s0.27\,s, about 15×15× below the windowed 4.08 s4.08\,s. No such firmware was linked or timed, so these are projected figures.