Skip to content
Finance Lessons

Foundation Models for Financial Time Series

Zero-Shot, Few-Shot & Scaling Laws

Zero-shot forecasting with no weight updates, the MASE benchmark that decides whether you beat the naive baseline, the zero-shot → few-shot → full fine-tune adaptation spectrum, in-context learning as a tiny inference-time training set, and the neural scaling laws — plus the irreducible-noise-floor argument for why they flatten at a useless level on near-efficient market returns.

18 min Updated Jun 22, 2026

Lesson 2 handed you a time-series foundation model: one network, pretrained on a huge pile of unrelated series, that you point at a brand-new dataset and ask for a forecast. This lesson is about how you actually use it — and how to tell whether the forecast it hands back is worth anything.

There’s a spectrum of effort here. At one end you do nothing: feed the model a window of history and read off a forecast, no training of any kind. That’s zero-shot. At the other end you retrain every weight on your target data — full fine-tune. In between sits the interesting middle: few-shot and in-context learning, where the model adapts a little without you touching most of its parameters.

And looming over all of it is the question every quant eventually asks about deep learning: does bigger help? The scaling laws say “yes, predictably” — for most domains. We’ll see why finance is the brutal exception, and why a scaling curve that flattens above the profit threshold is a treadmill you can run on forever and never get anywhere.

Let’s start with doing nothing.

Zero-shot forecasting

Before you read — take a guess

In a strict zero-shot forecast, what happens to the model's weights when you point it at a series it has never seen?

The analogy. Picture a seasoned forecaster who has read ten thousand charts across every imaginable market and sensor. You slide a brand-new chart across the desk — one she has never seen, from an industry she doesn’t recognize — and ask, “what comes next?” She doesn’t go study it for a week. She glances at the shape, recognizes the seasonality, the trend, the noise texture, and sketches the continuation cold. That cold read, drawing only on patterns absorbed elsewhere, is zero-shot forecasting. No homework, no fitting — just pattern transfer.

Precise definition. A zero-shot forecast feeds a context window x1:Lx_{1:L} (the last LL observations of a target series) into a frozen pretrained model fθf_\theta and produces a forecast x^L+1:L+H\hat{x}_{L+1:L+H} over a horizon HH, with no update to θ\theta. The model has never trained on this series; it generalizes purely from the structure it learned during pretraining. Contrast this with the classical workflow, where you fit a fresh ARIMA or train a fresh LSTM on this exact series before you can forecast it.

How do you know the forecast is any good? You need a benchmark, and “low error” in raw units is meaningless across series with different scales. The standard scale-free yardstick is the MASE.

MASE: the scaled-error benchmark

Mean Absolute Scaled Error compares your forecast’s error to the error of a dead-simple naive baseline — usually the seasonal naive forecast, which just predicts “the same as one season ago.” Formally, for a forecast y^t\hat{y}_t against actuals yty_t:

MASE=1Htyty^t1nmi=m+1nyiyim\text{MASE} = \frac{\frac{1}{H}\sum_{t} |y_t - \hat{y}_t|}{\frac{1}{n-m}\sum_{i=m+1}^{n} |y_i - y_{i-m}|}

The numerator is the MAE of your forecast on the test horizon. The denominator is the MAE of the naive seasonal forecast computed on the training set (predicting each point with the value mm steps earlier, where mm is the seasonal period). The ratio is unitless, so you can average it across thousands of series of wildly different scales.

The reading is brutally simple:

  • MASE < 1 → you beat the naive baseline (good).
  • MASE = 1 → you tied the naive baseline (you added nothing).
  • MASE > 1 → you are worse than just repeating last season (embarrassing).

Worked example — computing a MASE. Suppose a non-seasonal series (m=1m=1, so the naive forecast is “yesterday’s value”). On the training set of 6 points [10,12,11,14,13,15][10, 12, 11, 14, 13, 15], the naive one-step errors are the absolute consecutive differences:

1210,1112,1411,1314,1513=2,1,3,1,2|12-10|, |11-12|, |14-11|, |13-14|, |15-13| = 2, 1, 3, 1, 2

Their mean is (2+1+3+1+2)/5=9/5=1.8(2+1+3+1+2)/5 = 9/5 = 1.8. That’s the denominator — the naive baseline’s typical error on this series.

Now the model forecasts the next 3 points. Actuals turn out to be [16,14,17][16, 14, 17]; the zero-shot forecast was [15.5,14.5,16.0][15.5, 14.5, 16.0]. Its absolute errors are 1615.5,1414.5,1716.0=0.5,0.5,1.0|16-15.5|, |14-14.5|, |17-16.0| = 0.5, 0.5, 1.0, mean =2.0/3=0.667= 2.0/3 = 0.667. That’s the numerator.

MASEzero-shot=0.6671.8=0.37\text{MASE}_{\text{zero-shot}} = \frac{0.667}{1.8} = 0.37

A MASE of 0.37 means the zero-shot forecast’s average error is about a third of the naive baseline’s — a clear, real win. Compare a clumsier forecast [14,14,14][14, 14, 14] (just guessing the last training value): its errors are 1614,1414,1714=2,0,3|16-14|, |14-14|, |17-14| = 2, 0, 3, mean =5/3=1.667= 5/3 = 1.667, giving MASE=1.667/1.8=0.93\text{MASE} = 1.667/1.8 = 0.93 — barely better than naive. The MASE instantly tells you which forecast actually earned its keep.

Zero-shot vs fitted: when forecasting actually pays
forecast →time →
Actual (realized future)Zero-shot foundation modelFitted local model
Forecast error (MASE-style, ↓ better)
Zero-shot foundation model0.30Fitted local model0.34Naive baseline1.00

Toggle the regime. On the near-stationary (seasonal, weather-like) series, the frozen zero-shot forecast tracks the actual and lands a MASE comfortably below 1 — it genuinely beats the naive baseline. Flip to the financial-returns series and watch both the zero-shot AND the fully fitted forecasts collapse onto the naive line: MASE ≈ 1, because there is almost no structure to forecast. Same model, same metric — the difference is entirely in how much signal the series contains.

Warning:

Beating the benchmark is not the same as making money

A MASE below 1 means you beat a naive forecast — a forecasting-contest win, not a P&L. Two traps hide here. First, on financial returns the naive baseline is brutally strong (tomorrow’s return is roughly unforecastable, so “predict the mean” is nearly optimal), and a MASE of 0.99 is a rounding error, not an edge. Second, MASE measures point-forecast accuracy, which has almost nothing to do with whether a strategy built on the forecast survives transaction costs, latency, and turnover. A forecaster can win the benchmark and still lose money — see lesson 6.

When to use it

Reach for zero-shot first whenever you want a fast, fit-free baseline or you simply cannot fit a per-series model — a brand-new asset with three weeks of history, or ten thousand series you can’t babysit individually. It’s also the honest control: before you spend a week fine-tuning, check whether the frozen model already does the job. The catch is that zero-shot can only exploit structure that resembles its pretraining; a series with genuinely novel dynamics (or, as we’ll see, almost no structure at all) gets a mediocre cold read and no amount of “zero” effort fixes it.

Fill in the MASE reading.

Pick the right option for each blank, then check.

A forecast with MASE = 0.37 has an average error about the naive seasonal baseline's, so it clearly the benchmark.

The adaptation spectrum

Before you read — take a guess

You order three approaches by how much of the model they change: (A) feed the target series as context with frozen weights, (B) retrain every weight on the target series, (C) update a small adapter / final layer on a handful of target examples. From least to most adaptation, which order is correct?

The analogy. Hiring a consultant. Zero-shot is asking her to opine on your problem cold, using only her prior experience. Few-shot is handing her a one-page brief with three worked examples before she answers — she adapts on the spot without you reprogramming her. Full fine-tune is sending her back to school for a semester on your business specifically: maximal customization, maximal cost, and a real risk she forgets everything else (catastrophic forgetting) or just memorizes your three case studies (overfitting).

Precise definitions.

  • Zero-shot. No weight updates. Context window in, forecast out.
  • Few-shot. A small amount of adaptation: either a handful of in-context examples appended to the prompt/context (no weight change — that’s in-context learning, next section), or a light fine-tune touching only a small subset of parameters (a final layer, a LoRA adapter, a bias-only tune) on a few labeled examples.
  • Full fine-tune. Backpropagate into all parameters θ\theta on your target data, using the pretrained weights only as an initialization.

The trade-off across the spectrum is the heart of the lesson:

Weight updates?Target data neededComputeOverfitting risk on low-SNR data
Zero-shotNoneNone (just a context window)Inference only — cheapestNone (nothing is fit) — but capped by pretraining transfer
Few-shot (in-context)NoneA handful of examples in contextInference onlyLow–moderate (a longer context can feed in more noise)
Few-shot (light tune)A small subset (adapter / final layer)Tens–hundreds of examplesModestModerate — fewer params to overfit, but you are fitting
Full fine-tuneAll parametersThousands+ aligned examplesHighest (full backprop)High — max capacity meets noisy, scarce returns

Notice the column that matters most for finance: overfitting risk rises as you move right, and financial return series are exactly the low-signal, scarce-sample regime where that risk bites hardest. More adaptation is not automatically better — on noisy data it’s often worse, because you’ve handed a flexible model more rope to fit noise (the data-hunger problem from the deep-learning course).

Warning:

Full fine-tuning a giant model on a few hundred noisy returns is a sponge for noise

The instinct “I have a foundation model, let me fine-tune it on my data” is usually right for vision and language and usually wrong for low-frequency returns. Full fine-tune unleashes the model’s entire parameter count on a tiny, autocorrelated, regime-shifting sample — the parameters-per-effective-sample ratio explodes and the model memorizes noise. On scarce, low-SNR financial data, the less-adaptive end of the spectrum (zero-shot or a tiny adapter) frequently generalizes better than a full fine-tune. Default to the left of the table and only move right if held-out evidence — not in-sample loss — earns it.

When to use which

Use zero-shot for cold-start and massive cross-sections; few-shot / light tune when you have a modest amount of clean, relevant target data and want a nudge without a noise-soaking overhaul; full fine-tune only when you genuinely have abundant, aligned target data and a high-SNR task (think microstructure with millions of snapshots, not daily returns). The further right you go, the more you must prove the adaptation helps out of sample, because in-sample loss will always smile back at you.

Pick a term, then click its definition.

In-context learning

Before you read — take a guess

A model performs 'in-context learning' when you put a few input→output examples in its context and it adapts to them. Where does this adaptation live?

The analogy. You ask a polyglot friend to translate a sentence into a dialect she’s rusty on. Instead of sending her to language school (fine-tuning), you show her five example translations first. She studies the pattern in the moment and nails the sixth — then forgets it the instant the conversation moves on. The five examples were a tiny, disposable training set that lived entirely in her short-term attention. That’s in-context learning (ICL): the model treats the context as an inference-time training set, adapting its output without any of it sticking to its weights.

Precise statement. Given a context containing kk demonstration pairs (x1,y1),,(xk,yk)(x_1, y_1), \dots, (x_k, y_k) followed by a query xqueryx_{\text{query}}, the model produces y^query\hat{y}_{\text{query}} conditioned on all of them through a single forward pass. The remarkable empirical finding (and an active research area) is that large pretrained sequence models behave as if they ran a learning algorithm over those kk pairs internally — yet θ\theta is untouched. For a time-series foundation model, the “demonstrations” are often just the context window itself: the recent history is the tiny training set the model conditions its continuation on.

Worked intuition — context length on a noisy series. Suppose a series is 90% noise, 10% signal, and you extend the context window from 64 to 512 observations hoping to “show the model more.” On a clean, near-stationary series, more context means more genuine pattern to lock onto — accuracy improves. On a near-efficient return series, the extra 448 observations are overwhelmingly noise: roughly 0.9×4484030.9 \times 448 \approx 403 of them carry no forecastable structure. You haven’t enriched the tiny training set with signal; you’ve diluted it with distractors, and the model can spuriously “learn” a pattern from noise that won’t recur. Longer context helps only in proportion to the signal density of what you add.

Warning:

More context is not more signal on low-SNR series

The seductive fix when a forecast disappoints is “give it more history.” On a structured series that helps. On returns it often hurts: a longer context is a longer noise sample, and in-context learning will happily fit transient noise patterns that evaporate out of sample — the same overfitting trap as fine-tuning, just relocated into the forward pass. Lengthen context to add signal, never to add quantity.

When to use it

In-context / few-shot prompting shines when you have a few clean, representative examples and want adaptation with zero training infrastructure — no optimizer, no checkpoint, no catastrophic-forgetting risk, and instant iteration. It’s the natural default for cold-start and rapid prototyping. It fades exactly where signal density is low: piling more context onto a noisy return series feeds the model more noise, not more edge.

If in-context learning changes no weights, how can the model ‘adapt’ to the examples at all?

Answer. The adaptation lives in the activations, not the parameters. The demonstration pairs flow through self-attention, and the query token attends to them, so the output is conditioned on those examples just as if they were context for any prediction. Research suggests the forward pass can implement something resembling an internal learning step over the demonstrations — but crucially it is transient: remove the examples from the context and the “learning” vanishes completely, because nothing was ever written back into θ\theta. It’s working memory, not long-term memory.

Scaling laws

Before you read — take a guess

Neural scaling laws (Kaplan 2020; Hoffmann/Chinchilla 2022) describe how a model's test loss behaves as you grow parameters, data, and compute. What shape does that relationship take?

The analogy. Polishing a lens. The first hours of polishing sharpen the image dramatically. Keep going and each additional hour helps less — and no amount of polishing beats the diffraction limit set by physics: there’s a floor of blur you simply cannot grind away. Neural scaling is the same. Pour in more parameters, data, and compute and the loss keeps dropping along a smooth power-law curve — but with diminishing returns, and it bottoms out at an irreducible floor LL_\infty set by how much signal the problem contains. You can polish forever; you cannot beat the diffraction limit.

Precise form. A common parameterization of the scaling law in model size NN (holding data/compute ample) is:

L(N)=L+(NcN)αL(N) = L_\infty + \left(\frac{N_c}{N}\right)^{\alpha}

where L(N)L(N) is the test loss at NN parameters, LL_\infty is the irreducible loss (the entropy floor — the part no model can ever remove), NcN_c is a problem-specific scale constant, and α>0\alpha > 0 is the scaling exponent (the steepness of the diminishing-returns curve). Kaplan et al. (2020) found such power laws spanning many orders of magnitude in language; Hoffmann et al. (2022, “Chinchilla”) refined the compute-optimal balance, showing many models were oversized and undertrained — you should scale data and parameters together.

Worked example — diminishing returns. Take L=0.5L_\infty = 0.5, Nc=106N_c = 10^6, α=0.5\alpha = 0.5 (so the reducible term is Nc/N\sqrt{N_c/N}):

Parameters NNReducible term 106/N\sqrt{10^6/N}Total loss L(N)L(N)Gain vs previous row
10410^4100=10\sqrt{100} = 1010.510.5
10610^61=1\sqrt{1} = 11.51.59.0-9.0
10810^80.01=0.1\sqrt{0.01} = 0.10.60.60.9-0.9
101010^{10}0.0001=0.01\sqrt{0.0001} = 0.010.510.510.09-0.09

Going from 10410^4 to 10610^6 parameters (×100) slashed loss by 9.0. The next ×100 (to 10810^8) bought only 0.9. The next ×100 bought 0.09. Each 100× scale-up delivers a tenth of the previous improvement, and the curve is visibly crawling toward L=0.5L_\infty = 0.5. That asymptote is the whole story for finance.

Do scaling laws hold on market data?

Here’s the killer question. In language and vision, LL_\infty is small — there is enormous learnable structure, so scaling pays off for a long, long way before the floor bites. Markets are different. A near-efficient market has, almost by construction, a huge irreducible floor: next-period returns are close to a martingale, so the entropy of the target is nearly maximal and the forecastable component is tiny. The scaling law still holds — loss still falls as a power law — but it flattens out at LL_\infty long before that floor is low enough to trade profitably.

The noise-floor argument, side by side. Imagine the same scaling law L(N)=L+(Nc/N)αL(N) = L_\infty + (N_c/N)^\alpha in two domains:

Low-noise domain (e.g. weather nowcast)Near-efficient returns
Irreducible floor LL_\inftySmall — lots of learnable structureHuge — target is nearly unpredictable
Where the curve flattensAt a useful, low lossAt a loss above the profit threshold
Payoff from scaling 100×Real, sustained accuracy gainsAsymptotically nothing tradeable
VerdictScale away — it worksA treadmill: motion without progress

On returns, you can 100× your parameters and your data, ride the power-law curve down exactly as the math promises, and still land at a loss that’s above the threshold where a strategy makes money after costs. The model gets “better” in loss while remaining useless in P&L, because the floor it’s approaching is set by the market’s near-efficiency, not by your compute budget.

Warning:

A scaling curve that flattens above the profit threshold is a treadmill

This is the single most important idea in the lesson. Scaling laws are real and they hold on market data — that’s exactly the trap. You’ll observe loss dropping with scale, conclude “it’s working, let’s scale more,” and pour compute into a curve whose asymptote LL_\infty sits above the level you need to profit. You run faster and faster and stay in the same place. Before scaling anything on a return series, ask the only question that matters: where does the floor sit relative to the profit threshold? If LL_\infty is above it, more parameters, more data, and more compute are all dead money. Scale solves data-poor, high-signal problems — it cannot dig below a market’s entropy floor.

Sort each statement under the domain it best describes.

Place each item in the right group.

  • Each 100× scale-up still yields real, usable accuracy gains
  • L_∞ is huge because the target is nearly a martingale
  • Loss keeps falling on the power law yet never crosses the profit threshold
  • The irreducible floor L_∞ is small, so the curve flattens at a useful loss

When scaling is worth the compute

Scale up when the floor is low and you’re above it — i.e. there is abundant learnable structure and your current loss is far from LL_\infty, so the next doubling still buys real accuracy. That describes high-SNR, data-rich tasks (microstructure nowcasting, cross-sectional structure with millions of samples) far better than it describes a single liquid asset’s daily returns. The honest test before spending the GPU budget: estimate where LL_\infty sits relative to your profit threshold. If you can’t show the floor is below the threshold, scaling is the treadmill — and a smaller, cheaper model gets you the same nowhere.

Fill in the scaling-law verdict for markets.

Pick the right option for each blank, then check.

On near-efficient returns the irreducible loss L_∞ is , so the power-law curve flattens the profit threshold — making more parameters and data a .

When zero-shot / few-shot is worth trying

Before you read — take a guess

For which single task is a frozen zero-shot foundation model the WEAKEST choice relative to a purpose-built classical model?

Pulling the spectrum and the scaling argument together gives a clean decision rule. Zero-shot and few-shot earn their keep where data is the binding constraint and the floor is reachable — and disappoint exactly where the market is most efficient.

Reach for zero-shot / few-shot when:

SituationWhy the frozen model wins
Cold start — a new or short-history assetYou literally can’t fit a per-series model on three weeks of data; the pretrained model transfers structure it learned elsewhere
Data-poor / illiquid marketsToo little history to train a custom model without overfitting; zero-shot needs none
Breadth across a big cross-sectionOne frozen model forecasts 10,000 series at once — no per-series fitting to babysit
A strong baseline to beatBefore you spend a week fine-tuning, check whether “do nothing” already wins; it’s the honest control for every fancier model

Do NOT reach for it when: you’re trying to squeeze alpha from one liquid, heavily-arbitraged, low-SNR return series. That’s the worst case on every axis — the irreducible floor is enormous (near-efficiency), any structure has been arbitraged away by armies of competitors, and a frozen model trained on unrelated series has no special claim on the residual. Here the foundation model is, at best, another mediocre forecaster of an unforecastable thing, and the scaling laws promise it won’t get better with size.

Warning:

The same property — low SNR — that breaks scaling also breaks zero-shot

Notice the through-line of the whole lesson. Low signal-to-noise is why full fine-tuning overfits, why longer context hurts in-context learning, why the scaling curve flattens above the profit threshold, and why zero-shot has nothing to transfer. It’s all one disease. Foundation models don’t repeal market efficiency — they relocate where you fit (or don’t fit) the model, but they cannot manufacture signal that isn’t there. Use them where data scarcity is the problem; never expect them to beat a market whose problem is that there’s almost nothing to predict.

The trade-off in one line

Zero-shot/few-shot trades transfer for fitting: you give up bespoke per-series training in exchange for instant, fit-free forecasts powered by pretraining. That trade is a steal when you have no data to fit (cold-start, illiquid, huge breadth) and a sucker’s bet when the real constraint isn’t data but the market’s own efficiency. Match the tool to the binding constraint — data scarcity, yes; entropy floor, never.

Pick a term, then click its definition.

Recap

Big picture

Zero-shot, few-shot & scaling laws

  • Zero-shot, few-shot & scaling
    • Zero-shot forecasting
      • Frozen weights, context window in
      • No fitting on the target series
      • MASE = forecast MAE / naive MAE
      • MASE < 1 beats naive; > 1 worse
    • Adaptation spectrum
      • Zero-shot → few-shot → full fine-tune
      • More adaptation = more overfit risk
      • Low-SNR returns: stay left
    • In-context learning
      • Context = tiny inference-time training set
      • No weights change (lives in activations)
      • Longer context on noise = more noise
    • Scaling laws
      • L(N) = L_∞ + (N_c/N)^α, power law
      • Diminishing returns toward floor L_∞
      • Kaplan 2020; Chinchilla 2022
      • Returns: huge L_∞ → treadmill
    • When to try zero/few-shot
      • Cold-start & illiquid markets
      • Breadth across a cross-section
      • A strong baseline to beat
      • NOT one liquid arbitraged return series
Adaptation runs from frozen zero-shot to full fine-tune; scaling laws promise predictable gains — except on near-efficient returns, where a huge noise floor flattens the curve above the profit threshold.

Zero-shot, few-shot & scaling laws — check yourself

Question 1 of 60 correct

On a training set, the naive seasonal forecast's MAE is 4.0. Your model's MAE on the test horizon is 3.0. What is the MASE, and what does it mean?

Check your answer to continue.

Mark lesson as complete