A friend messaged me a screenshot last quarter. Two assets, a correlation of about 0.94, and the question was whether he should be worried that his book had turned into one big directional bet without him noticing. Reasonable worry. Then I asked how he computed it, and the answer was that he pulled the closing prices for both, dropped them into a correlation function, and read off the number. That is the whole story. He correlated price levels, and price levels almost always look correlated even when the two things have nothing to do with each other.
This trips up more people than you would expect, and it is not a subtle statistics point. It is the difference between a number that means something and a number that is mostly an artifact of the fact that both series were going up over the window you happened to pick.
Why price levels lie to you
A correlation coefficient is built to measure whether two variables move around their means together. That assumption quietly requires each series to have a stable mean and variance, or at least something close. A price series does not. It wanders. It has no mean it wants to return to, and the mean of the window you sampled is just an accident of where the trend started and ended. Statisticians call this non-stationary, and correlation was never designed for it.
Here is the practical version. If asset A drifted from 100 to 300 over your window, and asset B drifted from 10 to 40 over the same window, the correlation function sees two lines that both went up and to the right, and it rewards that with a huge number. It does not care whether the day-to-day wiggles line up. It cares that the overall slopes agree. Two completely unrelated things that both trended up in the same period will read as tightly correlated, and two things that both trended down will too. The classic demonstrations of this pair up things like a country's cheese consumption and some unrelated mortality rate and get correlations north of 0.9, purely because both happened to trend over the years measured.
The failure mode is worse than a random false positive, because it is biased in one direction. In a bull market almost everything trends up together, so almost every pair of price series will show a fat positive correlation. You will conclude your portfolio is far more concentrated than it is, or that you have found a great hedge, when all you have found is a shared trend.
Correlate returns instead
The fix is to stop correlating levels and start correlating changes. Convert each price series to returns first, then correlate those. Returns are roughly stationary in a way that prices are not. They hover around a small mean, they do not carry the trend baked in, and the correlation of returns actually answers the question you meant to ask, which is whether the two things tend to move on the same days.
You have two reasonable choices for how to compute the return:
- Simple percentage returns. Today's price divided by yesterday's, minus one. Intuitive, and what most risk reports use.
- Log returns. The natural log of today's price divided by yesterday's. These add up cleanly across time, they are close to symmetric for small moves, and they behave better when you start compounding or aggregating across periods.
For a correlation over daily data the two give almost identical answers, because on small moves a log return and a percentage return are nearly the same number. I lean on log returns out of habit because the math downstream is cleaner, but if percentage returns are what your reports already speak, do not overthink it. The important switch is from levels to changes, not which flavor of change.
One thing to keep straight while you do this. Compute the return on each series in its own currency and units first, then correlate. Do not correlate a raw dollar price against a raw index level and expect the scale difference to wash out. Once both are returns, the scale is gone and you are comparing like with like.
Sanity-checking a suspiciously high reading
Even after you switch to returns, you will occasionally get a number that looks too good or too scary. Before you size anything on it, run it through a few quick checks. This is the routine I actually use when a correlation surprises me.
- Confirm you correlated returns, not levels. Ninety percent of shocking correlations die right here. If the input series still has an upward drift baked in, you are measuring the trend, full stop.
- Plot the two return series against each other. A real correlation shows up as a fuzzy cloud with a tilt. A spurious one, or one driven by a handful of days, shows up as a blob with two or three outliers dragging the line. Your eye catches this faster than any test.
- Recompute on subwindows. Split the period in half, or roll the correlation over a shorter window. If the number is stable across chunks, believe it more. If it swings from 0.2 to 0.8 depending on where you cut, the single full-window number is meaningless for sizing.
- Check for a shared shock. One violent day that hit both assets can manufacture correlation across an otherwise unrelated pair. Drop the largest few moves and see if the reading survives. If it collapses, you are looking at a couple of events, not a relationship.
- Ask whether the sign even makes sense. If two things you would expect to be loosely related are reading 0.95, assume a data problem before you assume a discovery. Duplicated feeds, one series forward-filled from the other, or the same underlying priced twice will all produce near-perfect correlation for boring reasons.
None of this is exotic. It is the boring hygiene that stands between a correlation matrix you can risk-budget against and one that quietly lies to you the whole way through a trending market. The rule of thumb I would leave you with is simple. If you did not explicitly convert to returns before correlating, you did not measure correlation, you measured whether both lines went up. And in a market where most lines go up, that is a question you already knew the answer to.