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=BTClists 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.
Related pages
- Indicator guidesWhat each indicator means and how to read it
- Metric catalogueEvery chart’s id, unit and method, as JSON
- API and spreadsheetsEvery chart in Google Sheets, Excel and Python
- MCP for AI assistantsLet an assistant or agent read our charts
- Liquidation map accuracyHow our liquidation levels hold up
- ETF flowsDaily US spot crypto ETF flows for every coin with one, fund by fund
- ExchangesReserves and net flows from the addresses exchanges publish
- PricingWhat Free, Plus, Pro and API & Team include
- About CryptoKeyholeWho runs the site and how it is paid for
- ContactQuestions, corrections, API and press
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.