About · OnChainLab

A field lab for reading the chain like a scientist.

OnChainLab is a personal Bitcoin on-chain analytics project. It turns raw blockchain data into reproducible metrics, documents how each one is computed, and stays honest about what is measured versus estimated. Free, no accounts, no paywall.

01 · Why this exists
The chain doesn't lie, but it doesget misread. Most "analysis" is a chart with an arrow and a feeling. I'd rather build the pipeline in the open, show the method behind every number, and let the data — not the take — carry the argument.
— maintainer's note, onchainlab

What this project believes

P/01

Reproducible or it doesn't ship

Every metric on this site is computed from the public chain by a pipeline you could in principle re-run. If a number can't be traced back to the UTXO set and a block height, it doesn't belong on the dashboard.

P/02

Show the method, not just the line

Each metric page documents how it's derived. Estimated or interpolated quantities (like realized cap) are flagged as estimates, not presented as ground truth.

P/03

The median over the headline

One indicator screaming is noise. Where models are combined, the read leans on agreement across independent metrics rather than a single hot take — and projections are labelled as projections.

P/04

Analyst, not influencer

No moon emojis, no price targets sold as certainty, no accounts to sell you. The writing aims to be precise, hedged where it should be, and honest about uncertainty.

How a metric is born

Every number on this site runs the same path before it earns a place on the dashboard: from a full archive node, through storage, to a daily computation. No third-party data feeds, no curve-fitting to last cycle.

STAGE 01
Ingest
A full Bitcoin archive node is parsed into blocks, transactions, and the UTXO set — no third-party data feed, no proprietary sources.
STAGE 02
Store
Raw chain data lands in a DuckDB / Parquet store, the working substrate for every query and aggregation downstream.
STAGE 03
Compute
Daily metrics (realized cap, SOPR, MVRV, CDD, and more) are derived from the stored data and written to a single static CSV.
STAGE 04
Model & publish
Models read that CSV; the site renders it. The pipeline runs daily and the whole dashboard is a static read of the latest file.
136
on-chain metrics computed from the public blockchain
17yr
of daily history, reconstructed back to 2009
$0
cost to use — no accounts, no paywall, no tracking
1file
static CSV powers the entire dashboard

Figures describe this project's scope, not a trading track record.

Methodology notes

A few of the headline metrics and how they're defined. All are computed from Bitcoin's UTXO set and public blockchain data — there are no proprietary inputs.

Realized Cap Estimated via multi-seed interpolation of UTXO creation prices. Each UTXO is valued at the BTC price on the day it was created, then summed across all live UTXOs. Treated as an estimate, not an exact figure.

SOPR Spent Output Profit Ratio. Values above 1 indicate coins moved at a profit.

MVRV Market Value to Realized Value. High Z-scores signal potential overvaluation.

CDD Coin Days Destroyed. Measures the age of spent coins — a spike means long-dormant coins are moving.

aSOPR Adjusted SOPR. Filters out outputs younger than one hour to reduce noise from change outputs.

Who builds it

One maintainer. Quant-curious, opinion-light.

OnChainLab is a personal, single-maintainer project — not a company, a fund, or a research desk. There is no team, no investors, and nothing to sign up for.

It exists because running a full archive node and computing these metrics by hand is genuinely interesting, and because the resulting dashboard is more useful shared than kept private.

Plans for paid model tiers are aspirational and not live; today everything here is free and there is no billing of any kind.

Read the chain for yourself.

Start with the dashboard, or dig into how the cycle read is built. All of it is free.