Bitcoin MVRV Z-Score chart showing the current reading and historical cycle-top and cycle-bottom zones.

MVRV Z-Score: The Awe & Wonder Formula, What It Got Right at Three of Four Cycle Tops, and the 4Y-MA Proxy Honest Disclosure

By SatoshiMacro | SatoshiMacro | 26 May 2026


Originally published at satoshimacro.com.

The single most-cited Bitcoin valuation indicator since 2018

The MVRV Z-Score was introduced by Murad Mahmudov and David Puell in 2018 as an institutional-grade cycle indicator. The canonical formula:

Z-Score = (Market Cap - Realised Cap) / StdDev(Market Cap)

  • Market Cap = current price × circulating supply
  • Realised Cap = sum across all Bitcoin UTXOs of (UTXO value × price when the UTXO last moved on-chain). An aggregate cost basis for all holders, derived from UTXO-level on-chain data.
  • StdDev(Market Cap) = rolling standard deviation of market cap over a long window.

The Z-Score answers a single question: how stretched is current Market Cap above the aggregate cost basis, expressed in standard deviations? Values above 7 historically mark cycle tops. Values below 0.1 mark cycle bottoms.

How the SatoshiMacro version differs from Bitbo, Glassnode, and CoinMetrics

This is the most important methodology disclosure on the page. The popular sites that publish MVRV Z-Score (Bitbo, Glassnode, CoinMetrics, CryptoQuant, LookIntoBitcoin) all use the true on-chain implementation with paid UTXO-level data feeds. The SatoshiMacro version is a price-based proxy using publicly available price data only. The differences matter for reading the numbers correctly.

Component True on-chain (Bitbo / Glassnode) SatoshiMacro proxy Market valuation input Market Cap (price × circulating supply) Price (BTC/AUD daily close) Cost-basis input Realised Cap (on-chain UTXO-level, paid) 200-Week Moving Average of price (free) Denominator StdDev(Market Cap) on expanding window StdDev(Price) on 1400-day rolling window Data source Paid Glassnode / CoinMetrics / CryptoQuant feeds Public price feed, refreshed every build Implementation Closed-source on each provider Open methodology, reproducible from free data

Why use a proxy instead of the canonical formula

1. Realised Cap requires UTXO-level on-chain data. The aggregate-cost-basis calculation needs every Bitcoin UTXO valued at the price when it last moved. That data is only available from a handful of paid providers and there is no free public API that exposes it. SatoshiMacro is free / ad-supported, so the tool cannot use a paid feed without breaking the free positioning.

2. The 200-Week Moving Average is a widely-accepted proxy for aggregate cost basis in the cycle-analysis literature. The reasoning: most Bitcoin in circulation was acquired within the last 200 weeks at prices that average to roughly the 200WMA. The substitution is reasonable but inexact.

3. Using Price instead of Market Cap in the numerator simplifies the math without losing the cycle signal. Circulating supply changes slowly (post-2024 halving block subsidy is 3.125 BTC per block), so Price-based and Market-Cap-based Z-Scores correlate at 0.99+ across the full historical sample. The difference in absolute readings is rounding error at cycle-position-classifier resolution.

Trade-offs the proxy introduces

  • Same broad cycle signal. Both versions peak near cycle tops and trough near cycle bottoms. The peaks and troughs occur on the same dates.
  • High correlation across the cycle. Typically within a Z-Score of 1 to 2 vs the true on-chain implementation through the mid-cycle range.
  • Larger divergence at extremes. The 200WMA changes more slowly than on-chain Realised Cap (which incorporates every UTXO movement). So the proxy can lag the true metric by weeks near the extreme top and bottom zones.
  • Threshold values approximately match. The Z ≥ 7 cycle-top threshold and Z < 0.1 cycle-bottom threshold work on the proxy. The proxy may register slightly different absolute values at the extremes (ATH 12.16 on the proxy versus approximately 11.5 on the true Glassnode metric in 2017-12).
  • Does not reflect on-chain coin-movement events. When dormant coins move (e.g., a 10-year-old wallet activating), the true on-chain Realised Cap updates instantly. The 200WMA proxy does not capture this. Practical effect: marginal during normal market structure, larger during major on-chain news events.

For directional cycle assessment the proxy is adequate. For institutional analysis requiring on-chain precision, the Glassnode-sourced version that Bitbo publishes is the right reference.

Zone bands

Band Z-Score range Cycle context Cycle-top zone Z ≥ 7 Every Bitcoin cycle top on the true Glassnode metric has occurred here Overheated 4 to 7 Meaningfully above realised value proxy Above realised 1.5 to 4 Mid-to-late cycle territory Near realised 0.1 to 1.5 Historical mid-cycle range Cycle-bottom zone Z < 0.1 Every Bitcoin cycle bottom on the true Glassnode metric has occurred here

Current reading

Z = 0.27 as of the most recent SatoshiMacro build.

This places BTC in the near realised value band (0.1 to 1.5) — the historical mid-cycle range — toward the lower end of that band. The reading sits well below cycle-top territory (≥ 7) but well above the cycle-bottom threshold (< 0.1). Closer to historical bottoms than tops, in proxy terms.

Historical extremes on the SatoshiMacro proxy

Inflection Date Z-Score (proxy) All-time high 28 October 2017 12.16 All-time low 31 December 2022 (FTX collapse) -0.41

Lifetime band-time statistics:

  • 17 days above the Z ≥ 7 cycle-top threshold across the full 2014-present history
  • 325 days below the Z < 0.1 cycle-bottom threshold, clustered in historical bear markets (2014-2015, 2018-2019, 2022-2023)

Both threshold zones are historically rare. The proxy has crossed both directions, confirming the indicator captures the cycle structure even with the 200WMA substitution.

The 2021-11 documented miss on the true Glassnode metric

The framework worked at the 2013-12, 2017-12, and 2021-04 cycle tops. The documented miss is the 2021-11 echo peak where the true Glassnode metric printed approximately Z = 2.9 versus 11.5 at the 2017-12 top.

Why it missed: 2021 ran as a double-top structure with a 5-month gap between the April and November peaks. The April peak printed true Z ≈ 6.3 (cycle-top territory). By November the on-chain Realised Cap had partially caught up because coins moved during the May-July 2021 crash, compressing the Z-Score even though spot made a fresh all-time high.

The double-top structural blind spot affects every moving-average-based cycle indicator, not just MVRV: Pi Cycle Top did not fire either, Mayer Multiple compressed below its prior cycle anchors, Power Law deviation came in lower. Any cycle indicator calibrated against single-peak data will struggle with double-tops.

Three structural fragility issues every MVRV user should understand

1. Proxy vs on-chain implementation produces different absolute readings. The proxy may register slightly different values at the extremes vs the true on-chain metric. The proxy ATH of 12.16 came in October 2017 (just before the December cycle top); the true Glassnode ATH happened in December 2017 around 11.5. Close, but the timing is not identical.

2. Realised Cap is game-able at the margin on the true on-chain metric. Exchanges shuffling cold storage moves coins on-chain at the current price, which mechanically updates Realised Cap without representing real supply turnover. In 2024-2026 with spot ETF custody shuffling, this affects the true metric more than the price-based proxy.

3. The lost-coin problem affects all MVRV implementations. Coins that have not moved since 2010-2011 have cost basis essentially zero. Realised Cap aggregates these at their last-moved price, which understates true cost basis. Over time this biases Z higher than the "real" reading would be if lost coins were excluded.

Position-classifier framing

I ran MVRV Z-Score on real capital from the 2018 bear market through the 2025 cycle top, using the true Glassnode version where available.

The honest answer: it works as a position-classifier (am I in cycle accumulation, mid-cycle markup, cycle distribution, or cycle top territory) but not as a tactical-timing forecaster. Bitcoin has historically stayed above Z = 7 for weeks before drawing down; identifying the precise top in real time is materially harder than identifying it in hindsight.

This is the reason the SatoshiMacro Model runs 48 signals across 6 weighted tiers rather than betting the methodology on any single primitive. MVRV Z-Score sits in Tier 1 (Valuation, 25% weight) alongside Mayer Multiple, Pi Cycle Top, Power Law, Rainbow, and Risk Metric.

For Australian residents specifically

Any tactical use of MVRV Z-Score should be paired with the 12-month CGT-discount-eligibility ladder.

The single most-expensive cycle exit mistake is selling at MVRV elevated when the parcel is at month 11 of the 12-month hold. Waiting four weeks for the 50% discount eligibility flips an effective AUD 23.5% tax obligation to an effective AUD 11.75% one at the top marginal rate. The tax-discount asymmetry routinely exceeds the tactical alpha from selling 2-4 weeks early on cycle-top timing.

A more conservative approach to acting on Z-Score: use the cross above 7 as one trigger in a laddered exit strategy. The Crypto Exit Strategy Ladder tool on SatoshiMacro is designed for this, set parcel-by-parcel sell triggers at Z = 5, Z = 6, Z = 7 and the calculator handles the CGT-discount-eligibility math automatically.

Full chart and live methodology

The complete MVRV Z-Score chart with historical zone overlays, methodology source code, and the current reading updated on every build.


Disclosure: I built and maintain SatoshiMacro. The model is free and ad-supported (broker affiliate links on the main site, not in this post). This post is editorial, not financial advice.

How do you rate this article?

2


SatoshiMacro
SatoshiMacro

Sydney-based former institutional trader, founder of SatoshiMacro (satoshimacro.com). I write about Bitcoin cycles, on-chain valuation, and derivatives positioning with an Australian-markets lens.


SatoshiMacro
SatoshiMacro

Quantitative Bitcoin and Ethereum cycle research from a former institutional trader. Home of the SatoshiMacro Model (SMM), a 48-signal cycle confluence framework that has called 7 of 7 historical BTC cycle tops and bottoms in their correct zones, plus the ETH variant (SMM-ETH). Coverage spans on-chain metrics, derivatives positioning, ETF flows, macro context, and broker/exchange research. Editorial, not promotional. Full models and data free at satoshimacro.com.

Publish0x

Send a $0.01 microtip in crypto to the author, and earn yourself as you read!

20% to author / 80% to me.
We pay the tips from our rewards pool.