Backtesting Arena

Backtesting Arena

Back to blog

Bitcoin's Liquidity Fair Value: Why the Model Fails the Test

The Bitcoin liquidity fair value chart shows R²=0.85 — and claims BTC is "348% above fair value". We ran the cointegration test. It fails.

Backtesting Arena·July 20, 2026·6 min read·1 views
Bitcoin's Liquidity Fair Value: Why the Model Fails the Test

The Bitcoin liquidity fair value chart is one of the most shared graphics in crypto-macro: overlay the Bitcoin price on global money supply (Global M2) or central-bank balance sheets, fit a regression line, and read off whether BTC trades "above" or "below" its liquidity-implied fair value. The R² is often 0.85 or higher — impressive. The catch: a high R² between two series that both rise for years says almost nothing about a real relationship. We rebuilt the model, put it through the standard statistical test — and it fails. This post shows where, and what actually holds up.

The popular model in one sentence

You estimate log(BTC) = α + β · log(liquidity), call exp(α + β · log(liquidity)) the fair value, and treat the price's percentage deviation from it as an "over/undervaluation" signal. Sounds clean. The problem isn't the formula — it's four things that vanish inside the pretty chart.

Trap 1: The levels R² is usually spurious

Two exponentially rising series — log Bitcoin price and log liquidity — will almost inevitably correlate highly, causal or not. An R² of 0.85 on the levels is the default for co-trending data, not evidence of an equilibrium relationship.

The test that decides this is cointegration: only if a linear combination of the two series is stationary — i.e. the deviation keeps reverting to a mean instead of drifting away freely — do they share a genuine long-run equilibrium. Only then is a "fair value" interpretable at all. The standard route is the Engle-Granger test: run the regression, then check the residuals for stationarity with an Augmented Dickey-Fuller test.

Our result (as of 2026-07, 193 months since 2010, against G3 central-bank liquidity from the Fed, ECB and Bank of Japan):

MetricValueReading
R² (levels)0.854high — looks convincing
R² (returns, Δlog)0.011~0 — no relationship in the changes
ADF statistic (residuals)−1.84above the 10% critical value (−3.05)
ADF p-value (approx.)≈ 0.999unit root not rejected
Durbin-Watson (residuals)0.06extreme — residuals drift like a random walk
Cointegrated?nono statistically valid fair value

The contrast between the levels R² (0.85) and the returns R² (0.01) is the actual verdict: seemingly 85% "explained" in levels, essentially zero in the real moves. A Durbin-Watson near 0 confirms it — the residuals are themselves non-stationary, so the "fair-value band" has no floor.

Trap 2: Look-ahead in β and the Z-score

Estimating β and the Z-score's mean/std over the full history uses future data. A model in 2015 knew neither the β nor the dispersion of 2025. The clean way is walk-forward: β and normalisation at each point use only the history known up to then (expanding window). We do exactly that — and even then the verdict stays negative.

Trap 3: Overlapping forward windows

Many of these charts shade the zones with "forward-return stats" — e.g. "in this zone BTC rose X% over 6 months". On daily data, 6-month windows overlap ~125-fold; the apparent hundreds of observations are often 3–5 independent episodes. We count the independent episodes per zone — and stay below 30 throughout. That triggers our hard rule: under 30 independent observations it's an anecdote, not evidence. We show the numbers, but we don't sell them as a signal.

Trap 4: "Global M2" is itself a black box

And here it got uncomfortable mid-build: the obvious country-level M2 series in the Fed's database (FRED) for the euro area, Japan, China and the UK are discontinued — their last values sit between 2013 and 2019. A current "Global M2" simply can't be built from them. Anyone showing a smooth, up-to-date "Global M2" line is mixing sources, interpolating, or omitting the gap.

We switched to what is current and reproducible: the balance-sheet totals of the G3 central banks (Fed, ECB, Bank of Japan), each in local currency, converted to US dollars at the spot rate and summed — around 17.7 trillion dollars as of 2026-06. That's a different construct than M2 (base money rather than broad money), but the common "global liquidity" definition. One gap we state openly: China is not included, because the PBoC balance sheet isn't freely and currently available. So it's G3, not literally global — precisely the kind of footnote missing from the pretty chart.

What the model says across periods

The finding isn't tied to a convenient window:

PeriodMonthsR² (levels)R² (returns)Cointegrated?
from 20101930.8540.011no
from 20131630.8280.003no
from 20151390.7500.005no

Every slice tells the same story: high levels R², returns R² near zero, cointegration failed. The explanation is real too — from 2022 to 2024 central banks shrank their balance sheets (quantitative tightening) while Bitcoin recovered and made new highs. That is exactly when the "liquidity drives the price" narrative decoupled from the data.

The sober takeaway

At the cut-off date our walk-forward model implies a fair value around 14,000 dollars, marking BTC as "+348% above" it. That number is here only as a warning: it is not interpretable, because the precondition — cointegration — isn't met. A different, "tuned" model reports a different number. Both are equally unreliable as long as the test fails.

This doesn't mean liquidity is meaningless for Bitcoin. It means liquidity is context, not a price anchor. It helps frame the macro backdrop; it does not work as a "BTC is X% too expensive/cheap" calculator. The difference between a pretty R² and a reliable model is exactly one test — and it's worth running before writing a number onto the chart.

FAQ

What is a liquidity fair value for Bitcoin? A regression model that "explains" the Bitcoin price from global liquidity (Global M2 or central-bank balance sheets) and derives a reference value plus a percentage deviation. It's a model, not a measurement — and only interpretable if price and liquidity are cointegrated.

Why isn't an R² of 0.85 enough? Because two series that both rise for years almost always correlate highly without sharing a real relationship (spurious correlation). The tell is that the R² on the changes (returns) collapses toward zero and the cointegration test fails.

What is cointegration, simply put? Two trending series are cointegrated if their deviation from each other is stationary — i.e. it keeps reverting to a mean instead of drifting away. Only then is there a long-run equilibrium for a "fair value" to oscillate around.

So is Bitcoin not overvalued versus liquidity? The honest answer: this model can't answer that. Because BTC and G3 liquidity aren't cointegrated, any "X% above/below fair value" figure isn't statistically defensible.

Why G3 balance sheets instead of Global M2? Because the freely available country-level M2 series for the euro area, Japan, China and the UK were discontinued (last values 2013–2019). The Fed, ECB and BoJ balance sheets are current and reproducible. China is missing for lack of a free, current source — so the model is G3, not literally global.

Could the result change with more data? Possible, but unlikely for this pairing: the finding is stable across the periods from 2010, 2013 and 2015. Should a cointegrated relationship emerge in future, our model would flag it — it's built to report either outcome.

What Backtesting Arena contributes

We ship the model as a versioned, auditable knowledge object: the walk-forward regression, the cointegration test, the diagnostics (levels- vs. returns-R², Durbin-Watson) and the data provenance — including open points like the China gap. For the macro framing, see the structured macro regime dashboard; the liquidity model itself lives as the Bitcoin liquidity fair value knowledge object with every metric and caveat attached. No price target, no recommendation — a test that says honestly what it supports and what it doesn't.

Try it yourself

Run the backtest with your own parameters and time ranges.

Run backtest →
📬

Don't miss new blog posts

One short email per new post — strategies, backtests, market analysis. No spam, unsubscribe with one click anytime.

By subscribing you accept our privacy policy. We use Resend for delivery. Double opt-in confirmation required.

Comments (0)

Join free to post comments.

Sign up →

No comments yet. Be the first!