Bitcoin CAGR Dashboard
Rolling compound annual growth rate for Bitcoin across 1, 2, 3, 4, and 5-year windows — benchmarked against gold, the S&P 500, and long-dated Treasuries.
Annual returns, percentile outcomes, Sharpe and Sortino, drawdown and rolling correlations, price and market-cap level histories, and a symmetric 4-year forecast model.
| Year | Bitcoin | Gold (GLD) | S&P 500 | TLT |
|---|
| Percentile | 1-Year CAGR | 2-Year CAGR | 3-Year CAGR | 4-Year CAGR | 5-Year CAGR |
|---|
| Asset | Annualized Return | Annualized Vol | Sharpe | Sortino | Max Drawdown |
|---|
| Date | BTC Close | Return to Today | Annualized |
|---|
| Level | First Date Crossed | Days Above | Days Below | % Above |
|---|
| Level | First Date Crossed | Days Above | Days Below | % Above |
|---|
Disclaimer: CAGR values, annual returns, percentile distributions, Sharpe/Sortino ratios, drawdown statistics, correlations, and price/market-cap level counts shown on this page are historical calculations from daily closing prices and are for informational and educational purposes only. The forecast panel is a mechanical projection based on a user-selected target price, not a prediction of future Bitcoin prices. Past performance does not guarantee future results. Nothing on this page constitutes investment advice, a recommendation, or a solicitation to buy or sell any security. Always consult a qualified financial advisor before making investment decisions.
Methodology
Rolling CAGR
For each day in the dataset the dashboard looks up the BTC closing price exactly N years earlier and computes
(endPrice / startPrice) ^ (1 / N) − 1, expressed as a percentage. A ±5-day tolerance handles weekend and holiday gaps in the underlying series. The full rolling series is precomputed once per horizon on page load and reused across the KPI bar, main chart, and percentile table.
Annual return table
For each calendar year we take the asset's earliest close in that year and its latest close, then report
(lastClose / firstClose) − 1. Years with fewer than 20 trading days are labelled as partial. Trailing 3/5/10-year rollups use CAGR between the period-start first close and the period-end last close on a common-date basis. Assets do not trade every day, so cross-asset comparisons use each asset's own first/last observation inside the period.
Percentile outcomes
For each holding horizon (1–5 years) we take every valid rolling-CAGR observation across the full history, sort ascending, and report nine percentile cuts: 0.4%, 5%, 10%, 25%, 50% (median), 75%, 90%, 95%, 99.6%. The count of observations is shown in the first row; samples are not independent (overlapping windows) but the empirical distribution is a useful descriptor of the outcome range.
Annualized return, Sharpe, Sortino, and drawdown
Annualized return is geometric (CAGR-equivalent):
exp(mean(daily log returns) × N) − 1, with
N = 365 for Bitcoin (trades every day) and
N = 252 for equity and bond benchmarks. Comparable across assets by construction.
Volatility is the sample standard deviation of daily log returns, scaled by √N.
Sharpe = (annualized return − annualized Rf) / annualized volatility.
Sortino uses downside deviation against a 0% MAR on daily returns, following the Sortino (1994) / CFA / Morningstar convention:
sqrt(Σ min(r_i − MAR, 0)² / N_total). The denominator is the full sample size — positive-excess returns contribute zero to the sum. Annualized the same way (× √N).
Risk-free rate is the rolling average of the 13-week T-bill yield over the selected window, used as-is (quoted annualized percent → decimal). Max drawdown is the largest peak-to-trough decline on a closing-price basis across the window.
Rolling correlation
Pearson correlation of daily log returns between Bitcoin and each benchmark over 30-day, 90-day, and 365-day trailing windows. The return series is the intersection of business days where both assets traded (Bitcoin weekend prints are excluded for correlation math only — they remain in the CAGR and volatility series). Headline matrix values are the most recent point of each series; the trend chart shows the 90-day rolling value for all three benchmarks across the full common history.
Forecast model — base / bull / bear
The target-price slider sets a linear ramp from the latest BTC close to the chosen price over the chosen horizon (months × 30.44 days/month). Scenarios are defined as symmetric intensity multipliers on the base move:
bullTarget = target + 0.5 × |target − spot|— overshoots the user's target by 50% of the move's magnitude.bearTarget = target − 0.5 × |target − spot|— undershoots by the same amount.- Guarantees
bull ≥ base ≥ bearfor every target, and applies a 1% floor on the bear price to keep CAGR math finite.
For each day along each ramp the dashboard computes the 4-year CAGR using the projected future close and the actual historical close 4 years prior to that day. Line segments turn red below 0% CAGR and green above.
BTC inflation rate
Deterministic from the block-reward schedule:
annualized_issuance = block_reward × 144 × 365.25 and
inflation = annualized_issuance / current_supply. The current reward (3.125 BTC/block after the April 2024 halving) is hard-coded against the halving schedule; the supply denominator is read from the ledger-derived series on this page.
Price and market-cap level tables
Thresholds are checked against each daily close. "First date crossed" is the earliest day the close reached the threshold. "Days above/below" counts closing observations. "% above" is days above / total observations. Market cap uses
close × supplyOnThatDay, with supply drawn from the primary-source BTC historical dataset (ledger-derived daily circulating supply) for dates back to July 18, 2010.
Data sources
- BTC price (pre-2014): primary-source BTC historical dataset — daily USD close back to 2010-07-18, sourced via the daily pipeline.
- BTC price (2014+): daily BTC/USD close aggregates from public market data feeds, same pipeline that powers the rest of True North's dashboards.
- BTC circulating supply: primary-source BTC historical dataset — ledger-derived daily supply.
- S&P 500, SPDR Gold (GLD), iShares 20+ Year Treasury (TLT): public market data feeds, adjusted daily close.
- Risk-free rate: 13-week T-bill yield (public market data feed), percent, daily.
- Refresh cadence: All series are pulled by the automated daily pipeline — no browser-side vendor calls.
Assumptions and caveats
- Pre-2014 daily closes predate the existence of any single canonical BTC/USD exchange — the primary-source historical dataset blends across the early exchange tape, using the upstream provider's published methodology. True North does not republish the vendor name on this page; the source is disclosed in the release notes accompanying the data pipeline.
- The all-time max drawdown includes Bitcoin's 2011 collapse (−94% peak-to-trough on the early exchange tape). The magnitude is primary-source and internally consistent, but it rests on a single stitched pre-exchange-era price series — institutional readers who require multi-vendor corroboration of pre-2013 lows should treat the figure as indicative, not definitive. Post-2013 drawdown math is corroborated across all standard sources.
- Correlation math runs on the intersection of business days where both assets traded. Bitcoin weekend prints are excluded for correlation only; they remain in the CAGR, percentile, and volatility series.
- GLD is used as a public exchange-traded proxy for gold spot. Tracking error versus LBMA PM gold fix is documented at ≤0.10% across the BTC era.
- TLT is a total-return ETF representation of long-dated Treasuries. A yield-only secondary source is available if the ETF probe fails, but yield and total-return paths are not interchangeable for Sharpe/drawdown math and are not swapped silently.
- Rolling percentile observations overlap, so the percentile table describes the empirical distribution of outcomes, not independent samples.
- Annual-return rollups use each asset's own trading calendar for period-start and period-end closes.
Why the Four-Year Window Matters
Bitcoin's supply issuance halves approximately every four years, and post-halving cycles have historically shown distinct accumulation, markup, distribution, and markdown phases. Showing 1, 2, 3, 4, and 5-year rolling CAGRs on the same chart makes those cycles visible: the 1-year line is the most volatile, the 5-year line the smoothest, and the spread between them is a rough measure of where in a cycle Bitcoin is trading.
The 4-year window is the most referenced one in Bitcoin discourse because it is the longest horizon where a single halving cycle dominates the return. The forecast panel uses the 4-year CAGR specifically: it answers "if Bitcoin were at this price N months from now, what would the trailing 4 years of annualized return look like?"