BTC and ETH move together almost every day, yet they are not cointegrated. What the two concepts really mean, why correlation is everywhere in crypto while cointegration is almost nowhere, and what that means for pairs trading.
Naively, since BTC and ETH are highly correlated, I thought they would be cointegrated. Unfortunately, they are not. Of course: correlation isn't cointegration.
So can we find other pairs in the crypto market that are cointegrated, or a way to use cointegration to build a trading strategy? That's what we'll see.
1. Definitions
Let's start with a few definitions to understand both concepts: correlation and cointegration.
Correlation
Correlation between two assets answers one question: how consistently do their returns move in the same direction at the same time?
The key point: correlation is computed on returns, not on prices. Two highly correlated series move together day to day, yet the gap between their prices can keep growing over time.
Simulated data: one common market factor, small independent noise, opposite long-run drifts.
Cointegration
To introduce this concept, Murray (1994) uses a simple image. A drunk man walks with his dog. His path is a random walk, and so is his dog's. But when they get too far apart, he calls the dog, and the distance between them shrinks again.
Each path is a random walk on its own. The leash, the distance between them, is not: it keeps coming back.
Each walker on his own is unpredictable. The distance between them is not: it keeps coming back. That's cointegration.
Why does the spread come back? If it is stationary, at least one of the two prices must react to the gap: when the spread is too wide, A and/or B must move in the direction that closes it. So today's returns depend on yesterday's spread. That is the error correction model of Engle & Granger (1987).
A quick example. Say s(t−1)=+0.10 (A is 10% too expensive relative to B), αA=−0.05 and αB=+0.03:
expected return of A: −0.05×0.10=−0.5%, so A goes down;
expected return of B: +0.03×0.10=+0.3%, so B goes up.
Both moves shrink the spread, and the wider the gap, the stronger the pull. This pulling force is the dog's leash.
This is exactly what we look for in trading. If BTC and ETH were cointegrated, their spread would have this mean-reverting property, and we could trade it: sell the spread when it is too wide, buy it back when it closes. Unfortunately, things don't go as expected.
2. Correlation in practice
Let's start with correlation again, and first look at how it evolves over time.
Daily closes (USDT), 2019-01-17 to 2026-10-11. Green = bull market, red = bear market (BTC cycle tops and bottoms).
Correlation is high, but not really stable over time, and it's even less stable for altcoins. Worse: correlation goes up in bear markets and down in bull markets. Diversification helps you in bull markets, but much less in bear markets, exactly when you need it most.
Pair
Bull
Bear
BTC/ETH
0.81
0.89
BTC/XRP
0.57
0.80
ETH/LINK
0.71
0.82
Correlation of daily returns in bull vs bear markets.
Here is the correlation matrix for a few cryptos. As you can see, Bitcoin explains a large part of these correlations. That's why, on the right, I removed the Bitcoin factor from the log returns (r−βrBTC), to focus on what is left.
Daily log returns, 2024-03-25 to 2026-10-11. Once the Bitcoin factor is removed, the average correlation between altcoins drops from 0.69 to 0.41.
3. Cointegration in practice
The tests
Before showing you some charts, I need to introduce the test we'll use: the ADF test (Dickey & Fuller, 1979), and its two-asset version, the Engle-Granger test.
BTC and ETH: correlated, not cointegrated
So, are BTC and ETH cointegrated?
Daily closes (USDT), 2017-08-18 to 2026-10-11, ETH regressed on BTC. The top and bottom panels use μ and β estimated on the whole period: fine to visualise, but it contains future information.
And the answer is no. First, the beta of the regression isn't stable over time, which is a big problem: our starting hypothesis, ln(ETH)=μ+βln(BTC)+noise with a constant β, simply doesn't hold.
Of course, the ADF test fails over the full period. Interestingly, with a rolling 365-day window, there are some phases where the test passes (p<5% about 6% of the time). Keep in mind that pure chance would already give about 5%: if two assets had no relation at all, the test would still pass 5% of the time. So 6% is no better than noise.
DOGE and SOL: too good to be true
Even though BTC and ETH fail, I found a pair with better results:
Daily closes (USDT), 2021-06-01 to 2026-10-11. Expanding window starting with 365 days; β and p-values recomputed every 7 days.
For DOGE/SOL, the good news is that after the warm-up period, beta is relatively stable, so our hypothesis ln(DOGE)=μ+βln(SOL)+noise is more realistic. The ADF test passes most of the time after the warm-up period, so it seems we could have an edge with this pair.
But it's not that simple:
Selection bias. I only kept the pair that worked, and that could be pure luck. Spoiler: it is. When I start the dataset in 2022 instead, the pair is cointegrated only 3% of the time, and beta isn't stable anymore.
No out-of-sample data. I studied the pair on data from 2021 to 2026, so I can't backtest the strategy on that same period. A real backtest must run on data that was never used in the analysis; otherwise the result is biased, because I already know how the pair behaved up to 2026.
The half-life is too long. The half-life is the average time it takes for a deviation to shrink by half. If it's too long, there aren't enough trades. Even if we backtested between 2022 and 2026 (which we shouldn't), we would get something like 5 trades, which isn't enough.
So here are our problems:
beta isn't constant over time;
the assets aren't cointegrated over the full period;
the half-life is too long.
Conclusion
Correlation is everywhere in crypto, while cointegration is almost nowhere: tokens move together day to day, but nothing ties their price levels together in the long run. When we thought we had found a cointegrated pair like DOGE/SOL, it was most likely just selection bias.
Could a rolling window fix this? I tried it on hourly data, and nothing held up out-of-sample. It also makes the model more and more complicated, and cointegration is already hard enough.
Real cointegration does exist when a mechanism forces it: 1 stETH can always be redeemed for 1 ETH, so their spread comes back within about an hour. But there, the gaps are smaller than the trading fees.