Realised vs forecast correlation: the two heatmap modes

The entanglement heatmap can be read two ways. Realised correlation measures how two stocks have actually moved together over the recent past. Forecast correlation measures how our model expects them to move together from here. The first is a fact about history; the second is an opinion about the future, and they should never be confused.

What correlation is, precisely

Correlation is a number between −1 and +1 describing how two things move together. +1 means they move in lockstep; −1 means they move in exact opposition; 0 means knowing one tells you nothing about the other. The full treatment lives on the correlation page; what follows is what our heatmap specifically does with it.

Both modes use the same statistic — the Pearson correlation coefficient. For two series x and y, it is the covariance of x and y divided by the product of their standard deviations: corr(x, y) = cov(x, y) ÷ (σₓ × σᵧ). In words: how much they move together, normalised by how much each moves on its own. The normalisation is what makes correlations comparable across stocks with wildly different volatility.

We require at least eight overlapping observations before we will print a number, and we never impute a missing series. A stock with no usable data is listed as omitted rather than quietly filled in with zeros — an invented zero would read as "perfectly independent," which is the most dangerous thing a risk tool can falsely tell you.

Realised mode: what actually happened

Realised correlation is computed from the trailing 90 trading days of daily closes. We convert each price series into daily log returns — the natural logarithm of each day's close divided by the previous day's close — and take the Pearson correlation of those two return series.

Log returns rather than raw prices, and this matters. Two stocks that both drifted upward over a year will show a high price correlation purely because both went up, which tells you nothing about whether they respond to the same forces. Correlating the daily returns instead asks the sharper question: on the days one moved, did the other move with it? That is what a risk manager actually needs to know.

One property to internalise before you use the toggle: realised mode ignores the horizon selector entirely. Whether you have 1-month or 1-year selected, realised correlation is always the same trailing 90-day computation. The horizon governs which stocks appear in the grid (they are ranked by forecast growth at that horizon), not how the realised numbers inside it are computed. This is a genuine gotcha, and we would rather you learn it here than infer it from a heatmap that stubbornly refuses to change.

Forecast mode: what the model expects

Forecast correlation applies the same Pearson formula to a completely different input: the log returns of the model's own projected price curves at the horizon you selected. Two stocks are "entangled" in this sense when the model's forecast paths for them rise and fall together.

This is a statement about the model, not directly about the market. It is genuinely useful — it surfaces concentration risk you might not see from realised data, and it can flag pairs the model expects to decouple even though they have moved together historically. But it inherits every assumption the model makes, and two forecasts can correlate simply because they were built from overlapping inputs rather than because the businesses are linked.

The honest way to use the toggle is as a comparison. Flip between the two and look for pairs where they disagree. A pair with high realised and low forecast correlation is the model saying "this relationship is about to break" — a claim it may well be wrong about, but one worth knowing it is making. See entanglement / forecast co-movement for how we use this in the product.

A worked example (illustrative)

Example (illustrative — invented numbers chosen to show the mechanics, not live tickers). Two stocks show a realised correlation of 0.85. Over the last 90 days they have moved almost as one.

You hold both, and you believe you hold two positions. Arithmetically, you hold something much closer to one position of double the size. If a shock hits the thing they have in common — the same sector, the same customer, the same interest-rate sensitivity — both fall together and your loss is not halved by owning two names. This is what people mean when they say a portfolio is "diversified on paper only."

The remedy is not to hunt for negative correlations, which are rare and unstable. It is to notice when the number is high and stop counting a pair as two independent bets. Our concentration measure answers the same question from the position-sizing side, and diversification covers the principle.

When correlation misleads you

It is unstable, and it is most unstable exactly when it matters. In calm markets, stocks respond to their own idiosyncratic news, and correlations look reassuringly moderate. In a crash, everyone sells everything at once for the same reason, and correlations rush toward +1. The 90-day number you are looking at was measured in the world you are in now, not the world you need protection from. Plan for correlations to be higher than the heatmap says, precisely when you need them to be lower.

Pearson only sees straight lines. Two stocks can be tightly related in a way this coefficient scores as zero — for example, if one moves sharply whenever the other moves in either direction. A correlation near zero means "no linear relationship in this window," which is a much narrower claim than "unrelated." Some of that non-linear structure is what random matrix theory exists to help separate from pure noise.

And correlation is not causation, in the most practically expensive sense: two stocks correlate because both respond to some third thing — a sector, a rate, an index flow. Neither is driving the other. When that third thing changes, the relationship you measured can vanish overnight, with no warning visible in the heatmap.

Finally, a small-sample caution. Any correlation computed from 90 observations carries meaningful sampling error. The difference between 0.55 and 0.65 in a cell is usually not a difference at all. Read the heatmap in broad bands — strongly linked, loosely linked, unlinked — and ignore the second decimal place.

Frequently asked questions

What is the difference between realised and forecast correlation?

Realised correlation measures how two stocks have actually moved together over the trailing 90 trading days. Forecast correlation measures how our model expects their projected price paths to move together at the selected horizon. One is history; the other is a model opinion.

How is realised correlation computed?

From the last 90 daily closes: each price series is converted to daily log returns, and the Pearson correlation coefficient — covariance divided by the product of the standard deviations — is taken between the two return series.

Why does the realised heatmap not change when I change the horizon?

Because realised correlation is always the trailing 90-day computation, regardless of horizon. The horizon selector changes which stocks appear in the grid — they are ranked by forecast growth at that horizon — not how the realised correlations are calculated.

Can I rely on correlation to diversify my portfolio?

Only cautiously. Correlations measured in calm markets tend to rise sharply toward +1 in a crash, which is exactly when diversification is supposed to protect you. Assume the true correlation under stress is higher than the heatmap currently shows.

See it on a ticker

Browse all S&P 500 tickers to see this metric applied to individual companies.

Related terms

Educational research only — not investment advice.