Fracast-0

Fracast-0 is an 85K-parameter pretrained Time Series Foundation Model, small enough to load directly in a web page.

Source code and reproducible pretraining recipes are available in the GitHub repository.

"We built this solely to explore whether model compression can be pushed to an even more extreme state. We spent 15 days on this exploration. Although the work is not perfect, it is at least usable, so we are releasing it. Fracast-0 is the published version, and future versions will only get better."

Tianxiang Zhan

Fracast-0 is a compact pretrained model for probabilistic time-series forecasting. It uses a 2,048-point context, predicts 48 future points, and emits quantiles from 0.1 through 0.9.

The release has 85,001 parameters. The FP32 checkpoint is 344,412 bytes; the W8 checkpoint is 113,228 bytes.

Python Quick Start

Install the Python package in one command:

python -m pip install fracast

The package embeds both checkpoints, so this loads without network access:

import numpy as np
from fracast import FracastModel

model = FracastModel.from_pretrained(device="cpu")

# Input: [time]. Output: [horizon, quantile].
context = np.sin(np.arange(240) / 7.0)
forecast = model.forecast(context)
assert forecast.shape == (48, 9)

# The native head predicts 48 steps; longer horizons roll median blocks.
long_forecast = model.forecast(context, horizon=144)
assert long_forecast.shape == (144, 9)

# Input: [variables, time]. Output: [variables, horizon, quantile].
multivariate = np.stack([context, context * 0.5 + 2.0])
forecast = model.forecast(multivariate)
long_multivariate = model.forecast(multivariate, horizon=144)
assert forecast.shape == (2, 48, 9)
assert long_multivariate.shape == (2, 144, 9)

Pass weights="fp32" for the bundled full-precision checkpoint. The first argument can also be a local directory or a Hugging Face repository id such as "ztxtech/fracast-0" when remote loading is preferred. The W8 file stores symmetric per-output-channel INT8 weights with FP32 scales and residual tensors, then dequantizes them for inference.

Inference Contract

  • Input shapes: [T], [1, T], or [V, T].
  • Output shapes: [H, 9], [1, H, 9], or [V, H, 9]; H defaults to 48.
  • Maximum context: 2,048 observations; longer input keeps the latest 2,048.
  • Minimum context: 8 finite observations per channel.
  • Missing values: use NaN; the runtime masks them.
  • Quantile order: [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9].
  • Multivariate input is forecast channel-independently. The model does not use cross-variable interactions or future covariates.
  • Quantile crossings are not post-processed away.

The browser Playground loads the W8 checkpoint into page memory and releases it when the page is closed.

GIFT-Eval Benchmark

Fracast-0 was evaluated on all 97 GIFT-Eval configurations with the official aggregation protocol. The result is labeled pretrained: the complete pretraining recipe includes datasets from families present in the GIFT-Eval test corpus.

Protocol split Configurations Normalized MASE Normalized MWQL
Short 55 0.769573 0.568038
Medium 21 0.842959 0.557024
Long 21 0.875558 0.555953
Overall 97 0.807133 0.563008

The official aggregate first divides each configuration by the matching Seasonal_Naive result and then takes the geometric mean over all 97 configurations. The leaderboard result uses the FP32 release checkpoint. The shipped W8 form dequantizes weights before inference and is not an integer-only kernel. The leaderboard submission is public as GIFT-Eval PR #215. Its official submission files and compact summary are in benchmark/gift_eval/.

TIME Benchmark

Fracast-0 completed all 98 TIME tasks in a local Apple MPS run with batch size 512 and the FP32 release checkpoint. The normalized scores use seasonal-naive normalization by (dataset_id, horizon) and a geometric mean over MASE and CRPS.

Scope MASE norm CRPS norm MASE rank CRPS rank
Short 0.701284 0.586018 25 / 29 24 / 29
Medium 0.855065 0.736344 25 / 29 24 / 29
Long 0.833422 0.708427 24 / 29 20 / 29
Overall 0.767965 0.649192 24 / 29 24 / 29

The official raw submission is TIME-Output discussion #42 with branch head c04be85a3108f901d5a656f3ee7ec5f50baf1f77. It was merged into TIME-Output main at 65119f562f340544ee2fe54194a60b3043a514fb. Review is complete; no separate official recomputation is recorded for the compact scores in this archive.

Of the 98 tasks, 47 use the released 48-step head with median-quantile feedback for longer horizons. This rollout path is disclosed in every raw task configuration and is not a strict official-protocol claim. The compact analysis and reproducibility scripts are archived in the GitHub TIME archive and the public tables are also stored here under benchmark/time_benchmark/.

In the parameter-count analysis, Fracast-0 has 85,001 parameters and lies on both the parameter-MASE and parameter-CRPS Pareto fronts. Its dominator lists are empty for both metrics. The smallest better-performing comparator is Toto-2.0-4m with 4,144,456 parameters, MASE 0.691002, and CRPS 0.582490. OmniScient uses a conservative Chronos-2 base lower bound, and PatchTST-FM-Extended uses the public R1 count from the same default architecture.

FEV-Bench

Fracast-0 also completed the official local 100-task FEV-Bench run with Apple MPS, batch size 512, FP32 computation, and the w8 checkpoint. The full adapter, pinned analysis code, raw result, and ranking tables are archived in the GitHub repository. The raw CSV is also stored here as benchmark/fev_bench/fracast-0.csv.

Metric Raw rank Leakage-controlled rank
SQL 17 / 30 16 / 30
MASE 20 / 30 16 / 30
WQL 17 / 30 16 / 30
WAPE 20 / 30 17 / 30

The raw SQL win rate is 44.44% with a 35.72% skill score. All 100 tasks completed without a task failure. Fracast-0 was pretrained on every autogluon/fev_datasets configuration in the benchmark, so the official leakage-controlled aggregate replaces Fracast-0 errors with Chronos-Bolt. This is an in-corpus result and must not be read as an independent zero-shot score. The full disclosure is public in FEV-Bench PR #189.

572 of 235,039 sequence windows (0.243%) had fewer than eight finite observations after official task slicing. The adapter repeats the most recent finite value for those windows; it does not use labels to change forecasts.

Files

File Size SHA-256
model.safetensors 344,412 B 0d678f123f3d1f91c5065cca2b5d40eccc469360afc2381b27290486011ded2c
model.int8.safetensors 113,228 B 77beb5e5f17cf77525c4c1813fdaacfba586ac0b9d6f67a7ad4355de25b05544
config.json 1,338 B 1d7d2cf831f51ae2c5c9bf4cb4d8d4a49ec0085d6d55010814a1aae2a777a5dc
w8_manifest.json 4,944 B 7ade15dcc72aa6d597f398c85d73333d93ee16ebb5128810110723e3f25704ee
benchmark/gift_eval/all_results.csv 24,537 B 09118b804e0f20895991d9ce993bb60be8ef6f80fe5c35bb88820bbe4dc30c3b
benchmark/gift_eval/config.json 343 B 94a7b09e963336c8251664830796088b36cc60ea0d017b52ae89562523f8da8e
benchmark/gift_eval/protocol_summary.csv 172 B 71722d8473999f3fe2edf66272725e06e757973fd18c86a0cb1818327f73a57d
benchmark/gift_eval/run-manifest.json 2,152 B ce87b8ffda8626689cf5903436b61e2a20575513e9395100424bfa23ae0cd7f1
benchmark/fev_bench/fracast-0.csv 68,587 B 9dda82627d03966a279b4118a140d3b293c495c508c1037e05b536326e193ab2
benchmark/fev_bench/fracast_ranks.csv 743 B 272a3270e4074f50ac40aea7fdc4d28664bed83bf99aa8e807964e2f4b9c9487
benchmark/fev_bench/run-manifest.json 3,561 B 14aa7b8af91cb5e88751bcfbfa33d2eaff4659a0e3ecf876c54543e05530af23
benchmark/time_benchmark/Fracast-0_TIME_tasks.csv 8,491 B 1b493d95de44df4bda87f82e0dbb7707a7fbf8b1ca7c57f762769367b5fea31e
benchmark/time_benchmark/TIME_horizon_leaderboard.csv 6,522 B 13faabfcb15acbc53a3d548efa9ab35c5a3338bfaedee10a814d0fc85970b1ff
benchmark/time_benchmark/TIME_overall_leaderboard.csv 1,561 B 778fd266be0639b042ae9d6ebe9019479f60d6dcee79f1b68ada8a3e72d809ee
benchmark/time_benchmark/TIME_pareto.csv 2,885 B 8c33c9f3fc0bc592103653d40f10fdd79600eb83b7b563cdff049660b875b44e
benchmark/time_benchmark/TIME_pareto_summary.json 2,812 B 44ba218c32a89b26ccfb1df642465de858554c3a13ff33a3b5ad055169244d64
benchmark/time_benchmark/run-manifest.json 3,820 B c7295d31a403c1bfa94dc0c1f2a41e0f76758066961cda6fe41d909bf1c03f06

Training Data

Fracast-0 was trained on five pinned public datasets plus the four official TinyCast synthetic shards. The five source datasets are immutable snapshots in script/data/download_public_data.py:

Key Hugging Face dataset Pinned revision Approx. size
pretrain Salesforce/GiftEvalPretrain 6830b624de7ed2b3d3e5b85bb6959d81dcc5d874 908.1 GiB
lotsa Salesforce/lotsa_data 8191fd29eb5cf906ec55effca44d8059888b615d 861.2 GiB
chronos autogluon/chronos_datasets eeecad0b82a8c237e212ce6f8d1abecb513e2cec 833.3 GiB
boom Datadog/BOOM 69325b544c45ff0d6c43c7a99c49a6601a01725b 2.6 GiB
fev autogluon/fev_datasets f71c0fff4cf81283a2c43e7f3a73aa4f9826aef8 0.6 GiB

The five sources total about 2.6 TiB before conversion. They are converted independently into the fast-corpus layout; the TinyCast synthetic shards are built from the official four-shard recipe and converted into the same layout.

The corpus scan covered 69,614,455 series and about 549.85 billion points across 3,234 datasets; the training split used 62,653,010 series. The checkpoint is from step 45,776 with an effective batch of 4,096 windows, approximately 187.5 million training windows.

Because several corpus roots can overlap GIFT-Eval families, results are labeled pretrained, not zero-shot.

Limitations

  • Fracast-0 is univariate and channel-independent; it does not model cross-variable dependence.
  • The native head predicts 48 steps at a time. Longer horizons append median predictions and re-normalize each 2,048-point context before the next block.
  • The GIFT-Eval result is labeled pretrained with test-data leakage because the pretraining recipe includes GIFT-Eval-family datasets.
  • The FEV-Bench pretraining corpus overlaps every benchmark dataset, so its official leakage-controlled result is not an independent zero-shot score.
  • 47 of 98 TIME tasks use median-quantile rollout beyond the native 48-step head; its official raw submission is merged, with no separate official recomputation recorded for the compact scores.
  • The W8 export is not an integer-only kernel.
  • This release is distributed under the Apache-2.0 license.

Acknowledgements

Fracast-0 depends on the teams behind the benchmark, compact baseline, and public pretraining corpora:

Development support

The implementation, debugging, and release work used paid API access to Xiaomi MiMo 2.6 Pro and DeepSeek V4.1 Flash. Both were effective for this project and are recommended.

Supporters / sponsors

There are no sponsors yet. Continued maintenance still needs API credits and server resources. Feedback and support are welcome through:

Citation

A technical report is in preparation. Until then, cite this release as ztxtech/fracast-0.

Downloads last month
8
Safetensors
Model size
85k params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Datasets used to train ztxtech/fracast-0

Evaluation results