--- license: apache-2.0 pipeline_tag: time-series-forecasting library_name: fracast paper: https://arxiv.org/abs/2609.32209 doi: 10.48550/arXiv.2609.32209 tags: - fracast - fracast-0 - time-series-foundation-model - time-series-forecasting - foundation-models - pretrained-models - pretrained - time-series - timeseries - forecasting - probabilistic-forecasting - pytorch - cpu - safetensors - quantization - w8 - gift-eval - fev-bench - time-benchmark - boom - github - mimo-2-6-pro - deepseek-v4-1-flash - xiaomi-mimo - deepseek - arxiv - arxiv:2609.32209 - model-compression - browser-inference datasets: - Salesforce/GiftEvalPretrain - Salesforce/lotsa_data - autogluon/chronos_datasets - Datadog/BOOM - autogluon/fev_datasets model-index: - name: Fracast-0 results: - task: type: time-series-forecasting name: Time Series Forecasting dataset: type: gift-eval name: GIFT-Eval pretrained protocol metrics: - type: normalized_mase value: 0.807133 name: Overall Normalized MASE - type: normalized_mwql value: 0.563008 name: Overall Normalized MWQL - type: normalized_mase value: 0.769573 name: Short Normalized MASE - type: normalized_mwql value: 0.568038 name: Short Normalized MWQL - type: normalized_mase value: 0.842959 name: Medium Normalized MASE - type: normalized_mwql value: 0.557024 name: Medium Normalized MWQL - type: normalized_mase value: 0.875558 name: Long Normalized MASE - type: normalized_mwql value: 0.555953 name: Long Normalized MWQL source: name: Official GIFT-Eval results url: https://github.com/SalesforceAIResearch/gift-eval/tree/main/results/Fracast-0 - task: type: time-series-forecasting name: Time Series Forecasting dataset: type: time-benchmark name: TIME 98-task evaluation metrics: - type: normalized_mase value: 0.767965 name: Overall Normalized MASE - type: normalized_crps value: 0.649192 name: Overall Normalized CRPS - type: rank value: 24 name: Overall MASE rank of 29 - type: rank value: 24 name: Overall CRPS rank of 29 source: name: TIME official leaderboard url: https://huggingface.co/spaces/Real-TSF/TIME-leaderboard - task: type: time-series-forecasting name: Time Series Forecasting dataset: type: fev-bench name: FEV-Bench in-corpus protocol metrics: - type: rank value: 17 name: SQL rank of 30 (raw) - type: rank value: 16 name: SQL rank of 30 (controlled) - type: rank value: 20 name: MASE rank of 30 (raw) - type: rank value: 16 name: MASE rank of 30 (controlled) source: name: FEV-Bench official leaderboard url: https://huggingface.co/spaces/autogluon/fev-bench - task: type: time-series-forecasting name: Time Series Forecasting dataset: type: boom name: BOOM in-corpus protocol metrics: - type: scaled_mase value: 0.723 name: Scaled MASE - type: scaled_crps value: 0.434 name: Scaled CRPS - type: rank value: 11.808 name: Mean per-dataset rank of 24 source: name: BOOM official leaderboard url: https://huggingface.co/spaces/Datadog/BOOM --- # Fracast-0 **Fracast-0 is an 85K-parameter pretrained Time Series Foundation Model, small enough to load directly in a web page.** The technical report is available at [arXiv:2609.32209](https://arxiv.org/abs/2609.32209). Source code and reproducible pretraining recipes are available in the [GitHub repository](https://github.com/ztxtech/fracast-0).
"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: ```bash python -m pip install fracast ``` The package embeds both checkpoints, so this loads without network access: ```python 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](https://huggingface.co/spaces/ztxtech/fracast-0-demo) 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 official results are public in the [GIFT-Eval `results/Fracast-0` directory](https://github.com/SalesforceAIResearch/gift-eval/tree/main/results/Fracast-0). The compact summary is in [`benchmark/gift_eval/`](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 ranking table is the official 29-model [TIME leaderboard](https://huggingface.co/spaces/Real-TSF/TIME-leaderboard), and the raw 98-task outputs are in [`Real-TSF/TIME-Output`](https://huggingface.co/datasets/Real-TSF/TIME-Output). The compact scores in this archive come from the archived raw outputs and the official table; no separate recomputation is recorded for them. 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](https://github.com/ztxtech/fracast-0/tree/main/script/time_benchmark) and the public tables are also stored here under [`benchmark/time_benchmark/`](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](https://github.com/ztxtech/fracast-0/tree/main/script/fev_bench). The raw CSV is also stored here as [`benchmark/fev_bench/fracast-0.csv`](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 protocol and comparison table are in the [FEV-Bench leaderboard](https://huggingface.co/spaces/autogluon/fev-bench) and the [FEV-Bench repository](https://github.com/autogluon/fev). 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. ## BOOM Benchmark Fracast-0 completed all 7,413 BOOM dataset-term configurations and all 623,602 forecasts with the FP32 checkpoint and no task failures. In the official 24-model comparison, it obtains scaled MASE `0.723`, scaled CRPS `0.434`, and mean per-dataset rank `11.808`. The corresponding ordinal positions are `12 / 24` by MASE and `11 / 24` by CRPS. `Datadog/BOOM` is also part of the complete Fracast-0 pretraining recipe, so this result is in-corpus and must not be presented as zero-shot. The official protocol and comparison table are in the [BOOM leaderboard](https://huggingface.co/spaces/Datadog/BOOM). The raw per-configuration result, manifest, and comparator leaderboard are archived in the [GitHub repository](https://github.com/ztxtech/fracast-0/tree/main/script/boom_bench). ## Scenario Highlights These slices use per-configuration or per-task error ratios against Seasonal Naive. Lower is better, and TIME ranks use the official 29-model table. - **GIFT-Eval, Sales:** All four short-horizon Sales configurations improve on Seasonal Naive in normalized MASE and normalized MWQL. The geometric means are 0.693 and 0.422, and Fracast-0 leads TinyCast on both metrics in every configuration. - **GIFT-Eval, Cloud operations:** Across the three hourly `bizitobs_l2c` short, medium, and long slices, normalized MASE is 0.430 and normalized MWQL is 0.353. - **TIME, Solar forecasting:** `Australia_Solar/H` ranks 4th to 6th of 29 by MASE and 7th to 13th by CRPS over short, medium, and long horizons. - **TIME, Manufacturing:** On `Smart_Manufacturing/H`, medium and long horizons rank 8th of 29 by MASE, while CRPS ranks range from 8th to 10th across all three horizons. These are scenario slices, not separate aggregate rankings. The benchmark disclosures above still apply. ## 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,174 B | `5c4328710b4fa0b03821fcbfd79174408ee5bd405a98af407aa6d548f7379abd` | | `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,460 B | `5281dc1ff441732f6390254a495c00145d4d9b0a1ca1b6ab59196e5a42030176` | | `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,831 B | `f3b91a0641149683056526db2b0d1b366bfaf554e6c1ea701a2d687681426afb` | | `benchmark/time_benchmark/run-manifest.json` | 3,457 B | `fad7d60261f41193aeb34233735185de76104770a0c2907909eb306c2255b1d5` | | `benchmark/boom_bench/all_results.csv` | 2,025,022 B | `bc303c1ec2501938193b580b218de324009db997be1c46b4727676e281efc2f6` | | `benchmark/boom_bench/run-manifest.json` | 1,442 B | `385d44d779021eaf3bd8103259599ab1028bddb2361d1fc27e9fa917aa793128` | | `benchmark/boom_bench/leaderboard.csv` | 1,335 B | `6156f9d10fa76bfcbd006fec85c2f41cd6198151c3ca22871cae744187175958` | ## 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`](https://huggingface.co/datasets/Salesforce/GiftEvalPretrain) | `6830b624de7ed2b3d3e5b85bb6959d81dcc5d874` | 908.1 GiB | | `lotsa` | [`Salesforce/lotsa_data`](https://huggingface.co/datasets/Salesforce/lotsa_data) | `8191fd29eb5cf906ec55effca44d8059888b615d` | 861.2 GiB | | `chronos` | [`autogluon/chronos_datasets`](https://huggingface.co/datasets/autogluon/chronos_datasets) | `eeecad0b82a8c237e212ce6f8d1abecb513e2cec` | 833.3 GiB | | `boom` | [`Datadog/BOOM`](https://huggingface.co/datasets/Datadog/BOOM) | `69325b544c45ff0d6c43c7a99c49a6601a01725b` | 2.6 GiB | | `fev` | [`autogluon/fev_datasets`](https://huggingface.co/datasets/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; the compact scores come from the archived raw outputs and the official 29-model table, with no separate recomputation recorded for them. - 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: - [GIFT-Eval](https://github.com/SalesforceAIResearch/gift-eval) provides the 97-configuration evaluation protocol used for the public result. - [FEV-Bench](https://github.com/autogluon/fev) provides the 100-dataset evaluation protocol and leaderboard submission format. - [TIME](https://github.com/zqiao11/TIME) provides the 98-task evaluation workflow, output format, and leaderboard submission protocol. - [TinyCast](https://github.com/raws-labs/tinycast) provides the compact design baseline and the Apache-2.0 components recorded in the source repository. - [Salesforce/GiftEvalPretrain](https://huggingface.co/datasets/Salesforce/GiftEvalPretrain), [Salesforce/lotsa_data](https://huggingface.co/datasets/Salesforce/lotsa_data), [autogluon/chronos_datasets](https://huggingface.co/datasets/autogluon/chronos_datasets), [Datadog/BOOM](https://huggingface.co/datasets/Datadog/BOOM), and [autogluon/fev_datasets](https://huggingface.co/datasets/autogluon/fev_datasets) provide the public training data. - The TinyCast team also publishes the synthetic pretraining shards used by the recipe. ## 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: - [zhantianxianguestc@hotmail.com](mailto:zhantianxianguestc@hotmail.com) ## Citation ```bibtex @article{zhan2026fracast0fractalweightsharing, title={Fracast-0: Fractal Weight Sharing for a Time Series Foundation Model with Only 85K Parameters}, author={Tianxiang Zhan and Huanyao Zhang and Yuanpeng He}, year={2026}, journal={arXiv preprint arXiv:2609.32209}, eprint={2609.32209}, archivePrefix={arXiv}, primaryClass={cs.AI}, doi={10.48550/arXiv.2609.32209}, url={https://arxiv.org/abs/2609.32209} } ```