Every parameter of TimesFM 3.0 is here — 330.7M of them, the same count as
Google's checkpoint. Nothing is distilled or pruned. What is restricted is the
shape of what you can feed it, and that comes from the export, not the model.
Context and horizon are fixed at export time
| Limit | Here | Python version |
| Context | — | 15,360 points |
| Horizon | — | unbounded (rolled out) |
| Precision | int8, fp32 output head | fp32 |
| Series | univariate | univariate |
TimesFM computes its patch indices with plain Python integers derived from
the context length. Those become fixed constants when the model is traced to
ONNX, so a graph exported with a flexible context silently reads out of bounds
at any other length. The export instead takes one fixed window and masks off
the unused part — which is exact, but it means the window is chosen once, up
front, and every forecast pays for the whole thing even when your series is
shorter.
A longer window is a real trade, not a free upgrade: 512 → 4096 costs about
5× the latency per forecast for a small accuracy gain.
Why it is slower than running it natively
Inference is single-threaded WebAssembly. Multi-threading needs COOP/COEP
headers the demo does not set, and WebGPU is probed at startup then rejected,
because ONNX Runtime 1.29 generates invalid shader code for this graph and
returns NaN. The same graph runs in about 21 ms natively on an M4 Pro.
The live price channels
Bitcoin and Ethereum are fetched straight from a public exchange API in
your browser. Nothing is proxied and no key is used, so an ad blocker,
corporate network or regional restriction can stop them; the page tries
Binance, Kraken, Coinbase and CoinGecko in turn and names whichever answered.
They are here to show a limit, not to predict a price. A price series is
close to a random walk, so a well-behaved forecaster should produce a nearly
flat median with a rapidly widening fan. Check its skill score: below zero
means it lost to simply repeating the last value. None of this is
investment advice.
Run it yourself
The Python version has none of these shape limits, runs in fp32, and does a
forecast in about 60 ms on an M4 Pro. Export scripts, benchmarks and the full
write-up are in the repository.
github.com/frankwiersma/timesfm-local-plotter