Valuation

MVRV Z-Score

The same market-value-versus-average-cost comparison as MVRV, but normalized by its own recent volatility so very different eras become comparable with each other.

Why it matters

It normalizes MVRV so extremes are comparable across eras with very different volatility (2013 isn't 2024). Very high readings have clustered near cycle tops; very low ones (often negative) near cycle bottoms.

Build it yourself

The numerator is already a dollar difference; the denominator is its own recent volatility. Drag both to feel why normalizing matters.

Z = (Market cap − Realized cap) ÷ 365d stdev
MVRV Z-Score

Illustrative example numbers for practice — not real data.

How it's calculated, step by step

  1. The daily difference is computed: market cap − realized cap.
  2. The (population) standard deviation of that difference is taken over the trailing 365-day window.
  3. Z-Score = today's difference ÷ that standard deviation. There's no value until 365 days of history exist.
Coincident signal. Same caveat as MVRV: it measures where the cycle is, not exactly when it will turn. Accuracy note: this is the variant the project implements (verified against src/insights/metrics/mvrv.py) — it normalizes against the volatility of the difference itself over a 365-day window. Other widely-cited sources (e.g. Glassnode) publish a different variant that normalizes against the market cap's standard deviation accumulated since the start of the data; the two aren't interchangeable number for number. Cycle tops have clustered above Z≈7 and bottoms below Z≈0 in both variants, as a historical reference, not a guarantee.

Chart

This is real Bitcoin data, computed from the blockchain — not the illustrative example above.

Data last updated on 2026-09-09.

← All indicators