加载中…
加载中…
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. 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."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.
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.
[T], [1, T], or [V, T].[H, 9], [1, H, 9], or [V, H, 9]; H defaults to 48.NaN; the runtime masks them.[0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9].The browser Playground loads the W8 checkpoint into page memory and releases it when the page is closed.
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.
The compact summary is in
benchmark/gift_eval/.
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,
and the raw 98-task outputs are in
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
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.
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 protocol and comparison table are in the
FEV-Bench leaderboard and
the FEV-Bench repository.
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.
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. The raw
per-configuration result, manifest, and comparator leaderboard are archived in
the GitHub repository.
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.
bizitobs_l2c
short, medium, and long slices, normalized MASE is 0.430 and normalized MWQL
is 0.353.Australia_Solar/H ranks 4th to 6th of 29 by
MASE and 7th to 13th by CRPS over short, medium, and long horizons.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.| 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 |
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.
pretrained with test-data leakage because
the pretraining recipe includes GIFT-Eval-family datasets.Fracast-0 depends on the teams behind the benchmark, compact baseline, and public pretraining corpora:
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.
There are no sponsors yet. Continued maintenance still needs API credits and server resources. Feedback and support are welcome through:
@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}
}