How it's calculated
Everything on btcdata comes from free, public sources and is recomputed on every build. Nothing here is hand-entered.
Price
The headline price is the mean last trade across Coinbase, Kraken, Bitstamp and Binance (whichever answered). Daily history is the Coin Metrics reference rate since July 2010.
MVRV and MVRV Z-score
MVRV is market value divided by realized value, from Coin Metrics. Realized value prices each coin at the moment it last moved on chain, so it approximates the aggregate cost basis of holders. Realized cap is market cap divided by MVRV; realized price is realized cap divided by supply.
The Z-score is (market cap − realized cap) / σ(market cap), with the standard deviation taken over all history up to each day, so no point uses future data. Regimes: below 0 undervalued, 0–2 fair, 2–4 warm, 4–7 hot, 7 and above overheated. Below 0 has marked every cycle low and above 7 every cycle high so far.
Volume at price
The bars to the right of the price chart are a proxy for where coins last changed hands: Bitstamp daily USD volume binned by typical price, with a one year half-life so recent trading counts more. A true UTXO realized price distribution needs a full node and is planned for a later phase.
Funding rate
History is the Binance BTCUSDT perpetual, the daily mean of its three 8h prints, since September 2019. The current reading is weighted by open interest across Binance, Bybit and OKX.
Forecast ranges
All models forecast the distribution of the log return over 1, 7 and 30 days, centred on zero, so the median is the current price. They disagree only about width and tails, which is what is scored.
- EWMA volatility (baseline): RiskMetrics λ = 0.94, normal returns, variance scaled by horizon.
- Deribit implied vol: the DVOL index, the options market's 30 day implied volatility, converted to daily.
- GARCH(1,1), Student-t: fitted by maximum likelihood on the last 1,500 days, refitted every 30 days. Tails thin with horizon as daily shocks average out.
- Ensemble: the average of the members' quantiles.
Scoring is walk-forward and out of sample: at each past day, each model sees only data up to that day. Coverage is how often the realized price landed inside each band. CRPS rewards ranges that are both narrow and right; it is shown relative to the EWMA baseline. The scorecard shows the 30-day forecast issued on the 1st of each of the last twelve months next to the close 30 days later, misses included; a well-calibrated 80% range misses about one month in five.
Rewind
The rewind control on the Charts page shows every number as of a past day's close: price, MVRV Z, realized price, funding, DVOL and hashrate from that day, epoch progress by calendar time between halvings, and the forecast the ensemble issued at that close, rebuilt from the same walk-forward run (archived daily since January 2015). The path price then took is drawn over the cone, and the long-run hit rate counts every archived 30-day forecast whose window has closed. Live-only readings (exchange quotes, venues, blocks, mempool) have no past values and are left out.
Touch probabilities use the reflection principle for a driftless random walk: P = 2 · (1 − Φ(|ln(level / spot)| / σ)), with σ the ensemble's 30 day volatility.
Support and resistance
Levels are found in the bars on screen, at the chart's interval. A swing is a bar whose high (or low) is the highest (lowest) of the K bars on each side: K is 6 on 5-minute bars, 5 on hourly and daily, 3 on weekly and 2 on monthly. Swings within one typical bar range of each other (the median high/low range of the window's last 100 bars) form one zone; two swings at least make a level. Long-term levels run the same steps on weekly bars of all history, with K = 4.
- Held: each swing in the zone. A wick into the zone counts, as long as the bar was a swing there.
- Broken: a close beyond the zone's far edge by at least half the zone's width, after the last such close was on the other side. Wicks through the zone never count, nor do closes inside it or just past it. The margin filters noise; it moves the levels' hold rate and the random baseline's alike.
- Tests are holds plus breaks. Under 8 tests the count is shown greyed, not read as a rate.
- Baseline: the same rule run on 60 prices spaced evenly between the window's low and high, each with a zone of the same width. Their combined hold rate is what any price there would have "held"; a level set is only informative by how far it beats that. Levels need two swings to exist, so they start ahead of the baseline by construction.
- Role: below the last close a level is support, above it resistance, with price inside it a test. The role flips as price crosses; the level keeps its identity (its price), and S1 / R1 only number the levels outward from price.
Touch odds come from the forecast cone at the horizon shown, as the first-passage probability of a Brownian motion with the cone's drift and spread. The horizon follows the interval: 4 hours on 5-minute bars, 7 days on hourly, 30 days on daily, a year on weekly and monthly; long-term levels read at 30 days at least.
Entries at a level are the share of the entry-price profile (Bitstamp daily volume spread over each day's range, binned by price, its weight halving every year) that falls inside the level's zone, and how dense that is against the profile within ±30% of the price. With both layers on, each level's zone is carried across the profile, and hovering either one lights the other. It says how much supply last traded at a level, not how strong the level is. We tested whether it does: weekly since 2013, daily levels from the past year's bars only, each zone's entry density from a profile built only from days up to then, and the next retest scored as a hold (a close two zone widths back) or a break (a close half a width beyond). Of 968 retests, levels on the densest third of entries held 46.9% and those on the sparsest third 45.1%: +1.8 points, with a 95% interval of −11.9 to +16.1 (resampled by year), and the sign changes between periods. The correlation between density and holding is 0.00. Dense entries do not make a level stronger in this data, so the panel shows them as context only.
Hyperliquid whales
Every 10 minutes a scanner reads the 2,000 largest Hyperliquid accounts by account value (from the public leaderboard) and each one's open positions from the public info API, and keeps BTC perp positions of $1M or more. Liquidation prices, entries, leverage and unrealised PnL are the exchange's own, not estimates. A position with no liquidation price has margin deep enough that no nearby price liquidates it; it is listed but not drawn. Coverage is the mapped longs plus shorts as a share of all open BTC positions (twice the open interest, which counts one side), so it says how much of the market the lines describe; the rest is smaller positions and smaller accounts.
The 20 largest positions per side carry their wallet's track record, in dollars: perp PnL all time, over 30 and 7 days (Hyperliquid's portfolio history), and a win rate over closes, each a run of closing fills on one coin ended by an opening fill or an hour without another close, won if its realised PnL net of fees is above zero. The API returns only a wallet's latest 2,000 fills, a few hours for an active whale, so closes build up from the day tracking began; under 20 the win rate is not shown. Grades: NEW under 30 days of perp history; A at $20M or more all time with 20+ closes won at 60% or better; B at $5M or more; C at zero or more; D below zero. The proven-wallets split counts only A and B. These are first thresholds, to revisit with data. Positioning data, not a signal.
Carry and directional. A big position is not always a view. One at 5× or less, with its liquidation more than 50% away, held 3 days or more (or that has collected funding worth 0.25% of its size, which takes weeks), reads as a hedge or a funding farm: it is tagged carry and left out of the directional split. The tooltip shows what the tag rests on: leverage, distance to liquidation, how long the scanner has seen the position (a lower bound for one open before tracking began on 7 November 2026), funding received or paid since it opened, and how many other coins the account holds the same way. The tag cannot see a hedge held on another venue; it reads only what the position looks like.
Over time. Every scan appends one row to a public series (api/v1/whales/btc/series.json: the proven wallets' long and short dollars, their directional part, every mapped position, open interest and the mark price), every row kept for two weeks and one an hour after that. The pane under the price draws the proven wallets' directional net (long minus short) at each bar, with the net including carry dashed. Whether it leads price is a question for the data: the series is scored by the rank correlation between the directional tilt and the next 24 hours' and 7 days' return, against the same tilt shifted in time by a week or more, and nothing is read from it before 30 days of it exist.
Epoch and halving
The epoch is the block height divided by 210,000. The next halving date is estimated from blocks left and the mean block interval of the current difficulty period.