Quant Memo
Core

Signal-to-Noise Ratio and Learnability

A pattern can be perfectly real and still be unlearnable in practice if it is buried under enough randomness — signal-to-noise ratio measures how much of the data's variation is the pattern versus the noise, and it sets a hard ceiling on how good any model, however sophisticated, can get.

Prerequisites: Irreducible Error and the Bayes Rate

Try to have a conversation at a party where the music is loud enough. Below some volume, you catch every word. Above it, no amount of concentrating or lip-reading recovers the sentence — the words are still spoken, but the information has been destroyed by noise, not just hidden. Daily stock returns are close to that loud party: a genuine predictable pattern might contribute a fraction of a percent of expected movement, while daily randomness routinely swings price by several percent. The pattern is real. Whether any model can recover it from the noise is a separate question, and it's the question signal-to-noise ratio answers.

Defining the ratio

Model the outcome as a genuine, predictable piece plus randomness:

y=f(x)+εy = f(x) + \varepsilon

where f(x)f(x) is the true, learnable pattern — how yy actually depends on the inputs xx — and ε\varepsilon is noise, unpredictable from xx by definition. The signal-to-noise ratio compares how much the two vary:

SNR=Var(f(x))Var(ε)\text{SNR} = \frac{\text{Var}(f(x))}{\text{Var}(\varepsilon)}

In words: take the spread of values the true pattern itself produces across different inputs (the signal's variance) and divide by the spread of the random noise (the noise's variance). A ratio of 11 means signal and noise contribute equally to what you observe. A ratio of 0.010.01 means the noise is a hundred times "louder" than the pattern — exactly the loud-party regime.

noise: Var(ε) = 0.000225 signal band, Var(f(x)) = 0.000016
The signal's spread is a thin sliver inside the much wider noise band — SNR ≈ 0.07 here, meaning the pattern is real but nearly buried, and only more data narrows the noise enough to see it reliably.

Sampling distribution
sample mean →
sample size n 10spread of means 0.332predicted 1/√n 0.316

Watch how a sample mean drawn from a skewed or noisy parent distribution jitters around before settling — the more spread the parent distribution has relative to any real difference you're trying to detect between two groups, the more samples it takes before that jitter shrinks enough to see the true difference clearly. Signal-to-noise ratio is exactly this same tug-of-war, generalized from "how many samples to estimate a mean" to "how much data to learn a whole predictive function."

Worked example 1: computing SNR for a toy return model

Suppose a stock's true expected daily return depends on a signal xx via f(x)=0.002xf(x) = 0.002x, and across the range of xx observed historically, xx has variance Var(x)=4\text{Var}(x) = 4. Since ff is linear, Var(f(x))=0.0022×Var(x)=0.000004×4=0.000016\text{Var}(f(x)) = 0.002^2 \times \text{Var}(x) = 0.000004 \times 4 = 0.000016. Meanwhile daily idiosyncratic noise has standard deviation 1.5%1.5\%, so Var(ε)=0.0152=0.000225\text{Var}(\varepsilon) = 0.015^2 = 0.000225.

SNR=0.0000160.0002250.071\text{SNR} = \frac{0.000016}{0.000225} \approx 0.071

The noise's variance is about 14 times the signal's. This single number explains why a genuinely real, statistically detectable daily-return signal can still look almost invisible on any individual day's chart, and why it takes a large sample of days — not a clever model — to separate it from noise at all.

Worked example 2: same SNR, different sample sizes, different outcomes

Two researchers study the exact same SNR0.07\text{SNR} \approx 0.07 relationship above. Researcher A has 60 days of data. Researcher B has 6,000 days. Both fit the identical linear model, y^=β^x\hat{y} = \hat\beta x.

With 60 days, the standard error on β^\hat\beta scales roughly as σε/nVar(x)=0.015/60×40.00097\sigma_\varepsilon/\sqrt{n\cdot\text{Var}(x)} = 0.015/\sqrt{60\times4}\approx0.00097, against a true β=0.002\beta=0.002 — nearly half the size of the effect itself, so Researcher A's coefficient could easily come out negative, or several times too large, purely from noise.

With 6,000 days, the same formula gives 0.000097\approx0.000097 — about a twentieth of β\beta, precise enough to reliably detect and use. The pattern itself never changed; only the amount of data did. Low SNR doesn't mean unlearnable, it means more data is required before the pattern reliably rises above the noise floor — and whatever data you do have supports only a correspondingly simple model, since a complex model has more ways to mistake noise for signal.

Signal-to-noise ratio does not measure how good a model is — it measures a ceiling set by the data itself, before any model is even chosen. A perfect model cannot exceed what the data's SNR allows; more data raises how much of the true signal you can reliably extract, but a fixed low SNR at a fixed sample size limits every model equally.

What this means in practice

Financial returns sit at extremely low SNR compared to most domains machine learning is celebrated in — image recognition or language modelling routinely operate at SNRs many orders of magnitude higher, which is exactly why techniques that work brilliantly there (very deep networks, memorizing subtle patterns) tend to fail on markets: a model flexible enough to fit low-SNR training data almost always ends up fitting the noise, not the signal, since there is so much more of it to fit. This is the core justification for keeping trading models comparatively simple, heavily regularized, and validated on long out-of-sample periods — the low SNR of markets, not a lack of modelling sophistication, is the actual bottleneck.

A model that achieves a strong in-sample fit on low-SNR data is more likely to be evidence of overfitting to noise than evidence of a strong real pattern — because the noise, not the signal, dominates the variance being fit. The temptation is to read a high in-sample R2R^2 on daily returns as a discovery; in a domain known to have SNR around 0.01–0.1, a much more plausible explanation is that the model found a way to explain the noise, which will not repeat out of sample. Always ask what SNR is plausible for the domain before trusting an unusually good fit.

Related concepts

Practice in interviews

Further reading

  • Lopez de Prado, Advances in Financial Machine Learning, ch. 8
  • Hastie, Tibshirani & Friedman, The Elements of Statistical Learning, ch. 2
ShareTwitterLinkedIn