Skip to the guide

Methodology

Where CryptoKeyhole’s data comes from, how it is calculated and checked, when a figure is current and final, and how to cite it. Each chart’s own method is set out beneath the chart.

Last reviewed

Where the data comes from

Our data comes from the sources below, and each chart’s information names the ones it uses. We read public sources within their published rate limits and robots rules, and we do not work around a site that refuses automated reads.

Our own nodes

Bitcoin
Bitcoin Core, a full node holding every block since the genesis block of 3 January 2009, with the full set of unspent outputs and the mempool.
Ethereum
An Erigon archive node with the Lighthouse consensus client: every block since 30 July 2015 and the chain’s state at each of them, and the validator registry and balances.
Litecoin
Litecoin Core: every block since 7 October 2011.
Dogecoin
Dogecoin Core: every block since 6 December 2013.
Bitcoin Cash
Bitcoin Cash Node: every block since 3 January 2009; its history is Bitcoin’s until the split at block 478,558 on 1 August 2017.
Lightning
An unfunded Core Lightning node that routes no payments. It reads the public channel graph from its peers and checks it against our Bitcoin node.

Market data we collect

Spot prices, volume and trades, order books, perpetual and dated futures, funding rates, open interest, liquidations and options, gathered by our own collectors from the public APIs of the exchanges we cover. They include Binance, Bybit, OKX, Deribit, Coinbase, Kraken, Bitget, KuCoin, Gate, HTX, Hyperliquid, Crypto.com, Bitfinex, Bitstamp and Gemini. Each chart names the venues it uses. History starts when our collection began, or earlier where a venue publishes its own.

Prices

Each coin’s price is our own hourly index of the public markets we collect; for bitcoin and ether it is the volume-weighted median hourly close of their USD, USDT and USDC markets. Bitcoin’s long-history on-chain charts value coins with daily BTC/USD closes from The Bitcoin Time Machine (CC BY 4.0) and, since 3 October 2026, with quotes from a public price API that we record as each day closes. Each chart’s information names its price source.

Published files, filings and other public data

US spot ETFs
Each fund’s own daily holdings and net asset value files, read from the issuer’s website. A fund whose issuer’s site refuses automated reads is listed without figures, with the reason.
Company treasuries
Companies’ and funds’ own filings with the US Securities and Exchange Commission on EDGAR: their 10-Q and 10-K reports and, where they state the number, 8-K announcements.
Futures positioning
The US Commodity Futures Trading Commission’s weekly Commitments of Traders reports for CME bitcoin futures.
Developer activity
Our own mirrors of public code repositories, with commits by automation accounts left out.
Attention
Wikimedia page views (CC0), counting views by people only.
Mining pools
Open-source pool definitions (MIT licence), matched against coinbase tags and payout addresses.
Bitcoin network
Our own crawler of reachable Bitcoin nodes.
Economic data
Official statistics from the Federal Reserve, the US Treasury, the Bureau of Economic Analysis, the Bureau of Labor Statistics, the Energy Information Administration, the European Central Bank, Eurostat and the Deutsche Bundesbank, as each publisher reports them.

How on-chain measures are calculated

On-chain charts are calculated by reading each chain, block by block, on our own nodes.

Unspent outputs and coin age

Bitcoin, Litecoin, Dogecoin and Bitcoin Cash hold coins as unspent transaction outputs. We keep every unspent output with the time of the block that created it, so each coin’s age, the time since it last moved, is known, and so is the price when it moved.

Realized value, profit and loss

Realized value counts each coin at the price when it last moved rather than today’s. Summed over all coins it is the realized cap; divided by the supply it is the realized price, the average price at which coins last moved. MVRV compares market value with realized value, NUPL is the unrealised profit or loss the supply holds, and SOPR the profit or loss taken when coins are spent.

Long-term and short-term holders

Coins aged 155 days or more count as long-term holders’ coins, younger ones as short-term holders’. The age bands of the HODL waves are measured the same way, from the block that created each output.

Exchanges, entities and labels

Exchange reserves are the balances of the addresses each exchange publishes as its own, such as its proof-of-reserves lists, read on our nodes. An exchange that publishes no addresses is not covered, and coins on chains we do not run are not counted.

Entity-adjusted charts group addresses with our own conservative clustering: addresses join one cluster only when 3 to 20 of them are spent together into a single output, and no cluster grows past 10,000 addresses. A cluster is an anonymous group of addresses, never an identified owner.

Labels name organisations only, such as exchanges, funds, miners and companies, and come from public sources: the addresses they publish themselves, their filings and open-source mining-pool definitions. We do not track or profile any individual’s wallet.

Ethereum and its tokens

Ethereum charts read balances, contract storage and every token transfer from our archive node, and staking from our consensus node’s own state, counting finalized blocks only. Token values use our hourly price index for that token.

How market data is collected and checked

Collected directly from each venue

Our collectors read each venue’s public websocket feeds and REST endpoints. Prices are stored per single coin and quantities in coins, whatever a venue’s contract size, so venues can be added together.

Each trade counted once

Trades are kept by the venue’s own trade id, so a feed that repeats itself after a reconnection is not counted twice. For several venues in the trade-by-trade charts (size flow and footprint), each closed minute is also checked against the venue’s own REST trade history, and a trade the live feed missed is added from it.

Checked against the venues’ own records

When we add a venue, its funding, candles and trades are recounted against the history the venue publishes before its figures are used.

Like for like across venues

Funding is compared at an annual rate after converting each venue’s 1-, 4- or 8-hour interval. Liquidations are those each venue reports in its own feed, so a venue that publishes none adds none.

Large accounts only in aggregate

Hyperliquid positioning comes from its public account data, collected every ten minutes and published only as totals; no account is shown.

Gaps stay gaps, and models say so

If a venue’s feed or one of our collectors stops, the missing period is left empty, never filled with zeros or estimates. Charts that are models, such as the estimated liquidation levels, say so, and the liquidation map accuracy page measures how they hold up against the liquidations the venues later report.

Freshness, finality and delays

The latest completed hour

A live chart is current when it shows the latest completed UTC hour, published within the hour that follows.

The open day

Daily charts show the open UTC day as a labelled partial, updated at least every hour, and replace it with the final value once the day has closed.

When a period becomes final

A period is final once enough blocks follow it: six on Bitcoin and Bitcoin Cash, 24 on Litecoin and 60 on Dogecoin. Ethereum charts count finalized blocks only. Until then a reorganisation of the chain could still change a period, so it is shown as partial or provisional.

Delays and holds are labelled

When a source is late, such as a node catching up, an issuer that has not yet published or a feed that has stopped, the chart shows its latest complete period and says it is delayed, with the reason. A chart whose inputs fail a check is held. Neither is shown as current, and a page that passes its deadline drops its claim to be current.

Three separate clocks

Each value is dated by the period it describes, kept apart from when we observed it and when we published it, so a figure that arrives late is still dated correctly and its delay is visible.

Corrections

If you think a figure is wrong, email [email protected] with the chart’s address, the date and UTC hour of the value, and what you expected and why.

We fix an error at its source, in the calculation or its input, and recalculate the history it touched, so the affected periods and the charts calculated from them change together. The corrected series is published under a new revision, shown in the chart’s information.

When a correction or a change of method alters figures already published, the chart’s information says what changed and from which date. Where a source restates its own figures, as an ETF issuer can, the restated figure replaces the original and both are kept.

What the plans change

Plans change how much of the data you can reach, never how it is calculated. Every chart is calculated the same way for every plan, and its method, sources and coverage are public on all of them, Free included.

Free
Core charts at daily, weekly and monthly resolution with their full history, and the open day as a labelled partial. A free account adds the full daily history and today’s value of eight classic Bitcoin indicators. Other premium charts open as a fixed sample from 2019 to 2022 (a newer chart shows its first week or quarter once it is old enough), never a recent reading.
Plus
Hourly resolution to the latest completed hour, today’s readings and full history on Plus charts, CSV and JSON downloads, more alerts and API keys.
Pro
Ten-minute resolution where a chart offers it, today’s readings on every chart, and full exact-history downloads.
API & Team
Commercial use of CryptoKeyhole’s derived series, and unmetered API access.

Pricing compares the plans in full.

Where each chart’s method lives

Beneath the chart
Each chart’s information gives its definition, why it matters and how to read it, its latest values, and the assets and resolutions it comes in. Under “Calculation, sources & coverage” are the calculation, the source and its licence, the unit, the available history, the current revision and how fresh the latest value is.
In the catalogue
/api/v1/catalog?asset=BTC lists every Bitcoin chart’s id, name, unit, resolutions, status and method as JSON; change the asset code for other coins, such as ETH or LINK.
In the guides
The indicator guides explain the best-known measures in plain English, with their history and, where the chart is Free, today’s reading.
As data
Charts can also be read through the API, Google Sheets, Excel and Python, and by AI assistants over MCP, within each plan’s limits.

How to cite CryptoKeyhole

Name CryptoKeyhole, the chart, its address and the date you read it. Copy the address from your browser: it carries the chart’s id (?metric=), so it keeps pointing to the same chart. For example:

CryptoKeyhole, “Bitcoin MVRV Z-Score”, https://cryptokeyhole.com/charts/btc/?metric=ckh.MVRVZScoreKnownBasisPriced (accessed 26 October 2026).

When you quote a value, give the UTC date it refers to, and the hour for hourly data: the latest period may still be a labelled partial, and history can be corrected as described above.

To cite this page: CryptoKeyhole, “Methodology”, https://cryptokeyhole.com/methodology/, with the date you read it. What you may reuse, and how to credit it, is set out below.

Licence and reuse

CryptoKeyhole’s charts and data that you can see in full without a paid plan are licensed under the Creative Commons Attribution 4.0 licence (CC BY 4.0). That covers the free charts, the free API, the Fear & Greed API and the free tool pages: you may copy, republish and adapt them for any purpose, including commercial use.

Credit CryptoKeyhole with a link to the chart or page you used, for example:

Source: CryptoKeyhole, https://cryptokeyhole.com/charts/btc/?metric=ckh.MayerMultiple

The licence covers our own charts and series, not raw exchange data or other third-party data, which are not ours to license. Plus and Pro data, including the fixed samples of their charts, stays under the terms of service: subscribers use it for their own research and decisions, and republishing it, using it in a product or redistributing it in bulk needs API & Team.

A chart’s own information is the current statement of its method; where it is more specific than this page, it applies. Nothing on CryptoKeyhole is investment advice.