I evaluated Google's TimesFM 3.0 time-series foundation model on financial data. Before the results, the thing that surprised me most: my own expectations were wrong, and I do not think I was alone.
What I expected from "foundation model"
Memory between calls. Learned behaviour that accumulates. Some way to pass domain knowledge or conditional strategy. The affordances the term carries now that language models have claimed it.
What it actually is
A decoder-only transformer, pre-trained on a broad corpus of time series, used zero-shot. The forecaster exposes three public methods: from_pretrained, predict, predict_batch.
That is the contract. predict() sees a numeric array. It is stateless, so nothing carries between calls. There is no text interface, no instructions, no reasoning step.
Why the distinction matters practically
If your domain model is a set of conditional rules, "signal X is void while regime Y holds", you need somewhere to express conditions. A numeric array is not that place. Those rules are state machines, and they are cheap and exact to write directly in code.
Technically it IS a foundation model: pre-trained once, applied zero-shot across domains with no per-series fitting. That is genuine, and the deployment numbers back it up. But "foundation" describes how it was trained and how it transfers, not what it can do.
Full series, including why it produced no usable signal on market data:
https://michaelhairetis.medium.com/i-expected-memory-i-got-a-function-call-40b714cac7b6
Top comments (0)