Methodology: How the Bitcoin Bottom Score Works

The Bitcoin Bottom Score aggregates 25 on-chain and macro signals into a single daily probability score from 0–100%. This page explains every signal, its data source, how it is weighted, and how the composite score is calculated. Full transparency — no black box.

Scoring Model

Each signal is normalized to a score between −1.0 and +1.0 based on its historical distribution. A score of +1.0 means the signal is at the most extreme bottom-like reading in its history. A score of −1.0 means it is at the most extreme top-like reading.

Signals are then multiplied by their weight (0.35–0.96) and summed into a composite score. The composite is passed through a sigmoid function calibrated against every confirmed Bitcoin cycle bottom since 2017 to produce the final 0–100% probability output.

Weights were determined by backtesting each signal against the three confirmed cycle bottoms (December 2018, March 2020, November 2022) and measuring precision at each threshold. Higher-weighted signals had stronger predictive accuracy across all three events independently.

composite = Σ (signal_score × weight) / Σ weights
p_bottom = sigmoid(composite × calibration_factor) × 100

Score Interpretation

ScoreLabelInterpretation
80–100%All in BTCExtreme capitulation across all signal categories. Maximum conviction accumulation zone.
75–79%DCA HeavyMultiple high-weight signals firing simultaneously. Strong historical precedent for cycle low.
70–74%Start to DCAOn-chain conditions resembling early cycle bottom. Begin systematic accumulation.
45–69%Hold BTCMixed signals. No strong directional evidence. Hold existing position.
24–44%Sell SlowlyOn-chain conditions deteriorating. Gradually reduce exposure.
0–23%All in CashSignals indicate cycle top or high-risk environment. Move to cash.

The 25 Signals

Weights reflect each signal's historical predictive accuracy at confirmed cycle bottoms. Signals marked unavailable on any given day fall back to their last cached value or are excluded from the composite.

On-Chain
MVRV Ratio
weight: 0.96CoinMetrics

Market cap divided by realized cap. Values below 1.0 indicate the market is trading below aggregate cost basis — historically the most reliable cycle bottom signal.

Realized Price / CVDD
weight: 0.91CoinMetrics

The average price at which every coin last moved on-chain. When spot price approaches realized price, sellers are near exhaustion.

Reserve Risk
weight: 0.87CoinMetrics

Measures the risk/reward of investing relative to long-term holder conviction. Low values indicate strong holder conviction combined with low price — historically optimal entry zones.

Puell Multiple
weight: 0.85CoinMetrics

Daily miner issuance value divided by its 365-day moving average. Below 0.5 signals miner capitulation — forced selling near exhaustion.

NUPL (Net Unrealized Profit/Loss)
weight: 0.83CoinMetrics

Measures the aggregate unrealized profit/loss of all holders. Negative values (capitulation zone) have coincided with every confirmed cycle bottom.

aSOPR (Adjusted SOPR)
weight: 0.74CoinMetrics

Ratio of realized price to paid price for coins moved on-chain. Sustained readings below 1.0 indicate holders selling at a loss — a classic capitulation signal.

Hash Ribbon (Miner Capitulation)
weight: 0.65Mempool.space / CoinMetrics

Detects miner capitulation via hash rate moving average crossovers. A buy signal fires when the 30-day MA crosses above the 60-day after a decline.

STH/LTH Supply Dynamics
weight: 0.77CoinMetrics

Ratio of short-term holder supply to long-term holder supply. At bottoms, LTHs accumulate while STHs capitulate — a classic supply transfer pattern.

Exchange Netflow
weight: 0.70CoinMetrics

Net BTC flow to/from exchanges. Sustained outflows during price declines indicate accumulation by strong hands.

HODL Waves (1yr+ Supply)
weight: 0.66CoinMetrics

Percentage of supply unmoved for 1+ years. Rising HODL waves during bear markets indicate long-term holders refusing to sell at depressed prices.

Market & Macro
Global Net Liquidity / M2
weight: 0.93FRED (Federal Reserve)

Year-over-year change in global M2 money supply. Bitcoin historically leads M2 inflections by 8–12 weeks. Expanding liquidity is the macro tailwind for cycle recoveries.

Spot ETF Net Flows + EAEAP
weight: 0.89Farside Investors / Binance

Net daily institutional flows into Bitcoin spot ETFs combined with the ETF cost basis (EAEAP). Negative flows at low prices signal institutional accumulation.

Fed Funds Rate & Forward Curve
weight: 0.80FRED

The Fed's policy rate and market-implied forward expectations. Rate cuts historically precede Bitcoin cycle recoveries by 3–6 months.

Funding Rates (14d MA)
weight: 0.72CoinGlass / Binance

Perpetual futures funding rates smoothed over 14 days. Deeply negative rates indicate maximum bearish positioning — historically resolved in sharp upward reversals.

Open Interest % Change
weight: 0.68CoinGlass

30-day change in perpetual futures open interest. Declining OI during price recovery signals short covering rather than leveraged speculation — healthier for sustained recovery.

DXY (US Dollar Index)
weight: 0.63FRED

The US Dollar Index. Bitcoin has a strong inverse correlation with DXY. Dollar weakness (DXY declining) historically coincides with Bitcoin cycle recoveries.

Real Yields (10Y TIPS)
weight: 0.45FRED

10-year Treasury inflation-protected yield. Falling real yields reduce the opportunity cost of holding non-yielding assets like Bitcoin.

ETF Investor Profitability
weight: 0.59Farside / Binance

Estimated percentage of ETF holders in profit based on flow-weighted average entry price (EAEAP). High underwater ETF exposure signals capitulation risk.

Sentiment & Cycle
Prediction Market Implied Probability
weight: 0.60Kalshi / Polymarket

Aggregated prediction market probabilities for Bitcoin price milestones. Extreme pessimism in prediction markets has historically preceded cycle reversals.

Halving Cycle Position
weight: 0.58Mempool.space

Days since last halving as a fraction of the expected 1,458-day cycle. Historical cycle analysis shows bottoms typically occur 12–18 months post-halving.

Fear & Greed Index
weight: 0.48Alternative.me

Composite sentiment index (0–100). Readings below 15 represent maximum market despair — historically the highest-conviction long-term entry windows.

Stablecoin Supply Ratio (SSR)
weight: 0.55CoinMetrics

Bitcoin market cap divided by total stablecoin supply. Low SSR means stablecoins represent significant purchasing power relative to Bitcoin — potential dry powder for a rally.

Google Trends 'Bitcoin'
weight: 0.50Google Trends (pytrends)

Normalized search interest for 'Bitcoin'. Cycle bottoms coincide with multi-year lows in search volume — retail has fully capitulated and lost interest.

RSI (14w) + 200-Day MA
weight: 0.40Binance (computed)

Weekly RSI below 30 and price below the 200-day moving average confirm the technical picture consistent with cycle bottom conditions.

ATH Drawdown %
weight: 0.42Binance (computed)

Current drawdown from all-time high. Historical cycle bottoms have occurred at drawdowns of 70–85% from ATH. Deep drawdowns combined with on-chain capitulation signals are high-conviction.

Data Sources

CoinMetrics Community API
On-chain signals: MVRV, NUPL, aSOPR, realized price, exchange flows, hash rate, supply metrics
FRED (Federal Reserve)
Macro signals: M2 money supply, DXY, Fed Funds Rate, real yields (10Y TIPS), Fed balance sheet
CoinGlass
Derivatives: funding rates, open interest, liquidation data
Binance Public API
Price data: daily closes, OHLCV — used for technical signals (RSI, 200d MA, ATH drawdown)
Farside Investors
Bitcoin ETF daily net flows (institutional data)
Alternative.me
Fear & Greed Index (composite sentiment)
Mempool.space
Hash rate, difficulty, halving cycle position
Google Trends (pytrends)
Search interest for 'Bitcoin' — retail sentiment proxy
Kalshi / Polymarket
Prediction market implied probabilities for Bitcoin price milestones

Update Schedule

The score refreshes twice daily at 00:05 UTC and 12:05 UTC.

On-chain data from CoinMetrics carries a 24-hour reporting lag — each update reflects the prior day's confirmed blockchain data. Macro data (FRED, DXY, yields) updates on US business days. Derivatives data (funding rates, open interest) is near real-time via CoinGlass and Binance.

If a data source is unavailable on a given day, the signal falls back to its last cached value (up to 48 hours old) before being excluded from the composite entirely.

Limitations & Disclaimers

The model is calibrated on three confirmed cycle bottoms(Dec 2018, Mar 2020, Nov 2022). Three data points is a small sample. The model may not generalize to novel macroeconomic regimes, structural changes to Bitcoin's market (e.g., significantly higher ETF penetration), or black swan events.

Past signal accuracy does not guarantee future performance. This tool provides probabilistic analysis based on historical on-chain patterns — it is not financial advice. Always conduct independent research and consider your personal risk tolerance before making investment decisions.

This tool is operated independently. It has no affiliation with Glassnode, CoinMetrics, or any data provider listed above.

About This Tool

bitcoinbottom.app was built by a Bitcoin analyst frustrated with having to check 10+ separate tools to get a complete picture of cycle conditions. The goal is simple: one number, updated daily, that aggregates the signals that have historically mattered most at cycle bottoms. Free, no account required, no paywall.