Built by Eulogik — deployable AI for the real world
What is NanoForecast?
NanoForecast is a 6.5M-parameter time series foundation model that runs inference on CPUs, Raspberry Pi, edge devices, and in the browser. It performs zero-shot forecasting on unseen time series without fine-tuning, producing point forecasts with quantile uncertainty bounds (p10–p90).
Unlike 200M+ parameter alternatives (TimesFM, Chronos), NanoForecast is designed for deployment constraints: 19.5ms CPU inference, ONNX export (9.2MB INT8), streaming RNN mode, and Apache 2.0 license. It matches or beats TimesFM on 4 of 6 standard benchmarks at 31x fewer parameters.
Key Features
Zero-shot forecasting — no training needed for new time series
Streaming inference — feed one value at a time via stateful DeltaNet RNN (unique to NanoForecast)
CPU inference — 19.5ms median latency on Apple M4 (no GPU required)
Train from CSV — fine-tune on your data in minutes, not days
Apache 2.0 license — no restrictions on commercial use
Multi-task heads — point forecast + quantiles + anomaly detection in single forward pass
Benchmark Results
Standard protocol: context 512, horizon 48, non-overlapping test windows, MASE scaled by seasonal-naive in-sample MAE. All models evaluated under identical conditions.
Dataset
NanoForecast v0.5 (6.5M)
TimesFM (200M)
PatchTST (15M+)
ETTh1
0.681
0.705
0.781
ETTh2
1.110
1.360
1.467
ETTm1
0.287
0.545
0.488
exchange_rate
4.317
4.383
3.861
electricity
2.029
0.923
1.347
traffic
1.805
0.765
1.379
Overall MASE
1.704
1.447
1.554
Results: NanoForecast v0.5 beats TimesFM on 4 of 6 benchmarks (ETTh1, ETTh2, ETTm1, exchange_rate) at 31x fewer parameters. TimesFM wins on electricity and traffic.
MASE by dataset
Parameter Efficiency
NanoForecast achieves 36x better efficiency (MASE per billion parameters) than TimesFM and is 2x more efficient than PatchTST.
Parameter count
Efficiency scatter
Head-to-Head Wins
Win/loss matrix
Training-Pipeline Refinement: v0.3 → v0.5
The same 6.5M-parameter architecture gained 43.8% better MASE through three training-pipeline fixes — no architecture changes.
Upload a CSV → get a forecast + prediction intervals + decomposition plot. No code required.
Quick Start
Install
pip install nanoforecast
Zero-Shot Forecasting
python
1import numpy as np
2from nanoforecast import NanoForecast
34model = NanoForecast.from_pretrained("eulogik/nanoforecast-v05")56# Generate context (or load your own time series)7context = np.sin(np.linspace(0,8*np.pi,512))+0.1* np.random.randn(512)89# Forecast10result = model.predict(context, horizon=48, freq=1)1112print(result["forecast"].shape)# (48,) point forecast13print(result["quantiles"].shape)# (5, 48) p10..p90
Streaming / Online Inference (unique to NanoForecast)
python
1result = model.predict(context, horizon=48, return_state=True)2state = result.pop("state")34# Stream new observations one at a time5for new_val in incoming_stream:6 result = model.predict_step(new_val, state, horizon=48)7 forecast = result["forecast"][0]# updated forecast instantly
1@article{nanoforecast2026,
2 title={NanoForecast: A Deployable Time Series Foundation Model},
3 author={Gautam Kishore and Eulogik},
4 year={2026},
5 url={https://github.com/eulogik/NanoForecast},
6 note={6.5M parameters, CPU inference, ONNX export, streaming RNN}
7}