The Hash Ribbon
Charles Edwards's two-step miner-capitulation indicator. The 30-day vs 60-day hash-rate cross, plus the 10/20-day price-momentum confirmation most reproductions omit.
Chart data refreshed 01 May 2026 · 20:20 UTC
Ribbon state
Capitulation
30d below 60d
Spot BTC
$78,199.03
+3.2% 24h
Last upcross
2026-02-26
$67,947.39 spot
Spot vs last upcross
+15.1%
64 days since
TL;DR
- What it is
- Two moving averages of Bitcoin's network hash rate — a 30-day line and a 60-day line. Crossings flag when miners are under stress and when the worst of it is over. Edwards called it “perhaps the best performing long-term buy signal for Bitcoin”; we treat the line as marketing and the indicator as one lens among several.
- Where we are
- The ribbon currently reads Capitulation. The 30-day average sits below the 60-day — by the canonical definition, miners are under stress. Historically this is the patient phase; the recovery upcross has not yet fired. The last upcross fired on 2026-02-26 at $67,947.39; spot today is +15.1% from that print.
- Why it matters
- Edwards published a two-step buy signal — the 30/60 hash-rate cross plus a 10/20-day price-momentum confirmation. Almost every reproduction online drops the second step. Restoring the price-momentum filter eliminates the indicator's worst historical false positive — a step most public Hash Ribbon charts leave out.
- The catch
- Backtested across roughly fourteen historical signals, the published hit rate is around two-thirds — respectable, not infallible. Best read against hash rate, Puell, and MVRV‑Z, not on its own. The May–July 2021 China-ban window is the cleanest example of the indicator firing for a non-canonical reason.
What the chart shows
01The Hash Ribbon plots two simple moving averages of Bitcoin's network hash rate — a 30-day line in sage and a 60-day line in rust — on a logarithmic right-hand axis in exahashes per second. Pale-grey shading covers every day the 30-day sits below the 60-day; in Edwards's terms, that shading is the “miner capitulation” window. Accent dots mark days where the 30-day crosses back above the 60-day — the published recovery upcross. Bitcoin price runs muted on the left log axis behind the ribbon for cycle context.
Today the ribbon reads as Capitulation, with 26 recovery upcrosses since 2011. The most recent fired on 2026-02-26at $67,947.39 spot. The moving averages and ribbon state refresh overnight. Only the spot-price comparison in the reading row refreshes intraday; the ribbon itself does not.
How it is calculated
02One input drives the whole indicator: daily Bitcoin network hash rate in
gigahashes per second, converted to exahashes
(1 EH/s = 10⁹ GH/s) for legibility. Provenance
is documented on the data sources page; the canonical formula and the unit conversion are spelled out on methodology.
Two simple moving averages run over that series:
ma30(t) = mean(hashrate[t−29..t])
ma60(t) = mean(hashrate[t−59..t])
Edwards's original framing in Hash Ribbons & Bitcoin Bottoms describes the cross in plain English:
“When the 1-month SMA of Hash Rate crosses over the 2-month SMA of Hash Rate,
the worst of the miner capitulation is typically over, and the recovery has begun.”
A recovery upcross prints on day t when ma30(t−1) ≤ ma60(t−1) and ma30(t) > ma60(t). Capitulation begins when the inequality flips
the other way.
The piece almost every reproduction omits is Edwards's second step. In the same article, Edwards notes that buying on the bare hash-rate cross produced one bad print — the January 2015 false positive — and that most such drawdowns “can be eliminated by simply adding a price action indicator. Such an indicator could include the famous Bitcoin 10- and 20-day SMA cross over.” His buy signal, in his own words, is then defined as “Purchasing during miner capitulation, as the Hash Rates start to ‘recover’ and only once price momentum has gone positive (using the 10–20 SMA cross) yields the results below.” In other words: the 30/60 hash-rate cross marks the end of capitulation; the 10/20 price-SMA cross is what turns it into a buy.
btc oak plots every 30/60 hash-rate upcross. That choice matches the dated list circulating on Bitcoin Magazine and on Capriole's own TradingView script — which is what most readers come to the Hash Ribbon looking for. The cost: two or three of the historical upcrosses fire before, not after, the price-momentum confirmation Edwards specified. The full two-step is the more disciplined read; the bare cross is what gets published. We surface both — the chart plots the cross, the prose names the second step.
How to read it
03Three regimes, one transition. The grey-shaded capitulation window is patient territory — miners who can't cover power costs are switching off, the back of the queue is clearing, and the indicator does nothing but wait. The accent dots mark the cross when it comes. The unshaded stretch above the ribbon is the “normal” regime: no fresh information until the next capitulation prints. Pair the ribbon's state with the spot-price comparison in the reading row above; the contrarian read worth flagging is when the cross is days old and spot still trades near the signal-day print.
| Reading | Regime | What it has meant |
|---|---|---|
| 30d < 60d | Capitulation | Miners under stress. Patience phase; every cycle low since 2015 has been preceded by one. The indicator gives no fresh signal until the 30d crosses back above the 60d. |
| Fresh 30d→60d cross | Recovery | Edwards's recovery upcross. Roughly two-thirds of the historical fourteen prints have closed in profit at six months; the remaining third include the December 2019 and August 2022 false positives. |
| 30d ≥ 60d, no fresh cross | Normal | Above the ribbon. The chart carries no fresh signal — treat it as background until the next capitulation window. |
Historical readings
04Eight cycle-anchor windows show the indicator in profile. Each row pins a published Capriole-list upcross; the spot price and the 180-day forward return are computed inline from daily closes. Values drift slightly as new closes arrive — forward returns are rolling by definition.
| Date | Event | Spot at signal | 180-day forward return |
|---|---|---|---|
| 2019-05-23 | 2018–19 bear-end recovery | $7,665.80 | +7.0% 6m fwd |
| 2020-06-23 | Post-COVID recovery | $9,678.68 | +146.6% 6m fwd |
| 2020-12-02 | 2020 cycle ramp | $18,857.42 | +89.4% 6m fwd |
| 2021-08-07 | Post-China-ban rebuild — fired despite the geographic-relocation cause | $42,802.14 | −13.6% 6m fwd |
| 2022-07-04 | 2022 LUNA-crash recovery | $19,310.23 | −14.0% 6m fwd |
| 2023-01-14 | 2023 banking-crisis lead-in | $19,941.78 | +52.5% 6m fwd |
| 2024-06-17 | 2024 post-halving capitulation | $66,615.54 | +52.1% 6m fwd |
| 2025-12-01 | 2025 late-cycle leg | $90,406.28 | — |
The honest batting average
05Sample every published upcross since 2011 and read the 180-day forward return on each one. The picture is unflattering but honest. Of 23 upcrosses on record, 16 closed positive at six months — a hit rate of 69.6%. The winners averaged +52.9%; the losers averaged −14.2%. The biggest forward-six-month win in the sample sat at +146.6%; the worst loss at −21.8%.
Two caveats sit on top of the number. First, every 30/60 cross is counted as a
fresh signal, so consecutive crosses inside one cycle window are both sampled
independently — that double-counts cluster periods like the 2025 cycle. Second, the published Capriole hit rate of 64% turning a profit
over fourteen historical signals — widely reproduced; the stopsaving.com summary keeps the verbatim wording — uses Edwards's two-step filtered signal, not
the bare cross. Both numbers point at the same picture: the indicator works on
average, not on every fire.
The 2021 China-ban edge case
06The cleanest example of the ribbon firing for a non-canonical reason printed in mid-2021. Bitcoin's network hash rate fell roughly 50% in two months from the May 2021 peak as Chinese provinces, chiefly Inner Mongolia and then Sichuan, pushed local mining operations to shut down. The 30-day average collapsed under the 60-day, capitulation shading filled the chart, and the pipeline duly recorded a recovery upcross on 2021-08-07 at roughly $42,802.14 spot. Bitcoin then ran to ~$69k over the following three months.
The signal worked. The cause did not match the textbook. The Chinese hash drop was not unprofitable miners switching off — it was profitable miners boxing up rigs and shipping them to Texas, Kazakhstan, and Russia. The canonical mining-map record shows China's network share falling from roughly 46% in April 2021 to effectively zero by July, then climbing back over 20% by year-end as underground operations restarted. The ribbon measured a hash-rate dip; the dip measured ASIC logistics, not miner economics.
The honest framing is that the Hash Ribbon detects something correlated with cycle lows — reduced realized network throughput, broadly — without requiring the cause to be miner capitulation in the strict economic sense. That is a feature for a cycle-bottom hunter and a bug for anyone reading the indicator as a pure miner-stress proxy.
What this means for you
07For a dollar-cost-averaging investor. The capitulation shading is a useful overlay on a steady weekly buy — a visual reminder that Bitcoin's worst windows have looked structurally similar each cycle. The chart shouldn't change your cadence; over a multi-cycle horizon, the asymmetry of time-in-capitulation does the work on its own.
For a cycle-timing trader. The ribbon reads best as one of three cycle-bottom indicators, not a standalone trigger. Best paired with at least two of Puell Multiple, MVRV‑Z, and the 200-week moving average. For single-indicator discipline, Edwards's full two-step is the version to run: wait for the 30/60 hash-rate cross and for a 10-day-over-20-day price-SMA cross on the same window. The unfiltered upcross is what most charts plot; the filtered version is what removes the worst historical false positive.
For a researcher. The dated upcrosses, the parallel 30/60 moving-average lines, and the underlying daily series reproduce the chart line-for-line. The methodology page lists every choice — window length, EH/s conversion, warm-up cut-off — and flags the deviation from Edwards's two-step spec.
When it fails
08The bare cross has explicit false positives. Edwards flagged a January 2015 buy in his own article as the indicator's worst historical print — the cross fired before the cycle low and was followed by a substantial drawdown. A December 2019 cross “produced the lowest returns recorded” for the indicator before COVID compressed any recovery; Onesafe's review keeps the wording verbatim (Onesafe, 2024). An August 2022 cross fired weeks before the FTX collapse rather than after the cycle low. Edwards's full two-step would have excluded the 2015 print and softened the others; the bare cross plotted here catches all three.
The cause can be non-canonical. The May–July 2021 hash-rate collapse was a geographic relocation event, not miner economics. The recovery upcross still fired and the trade still worked, but the reason had nothing to do with marginal miners going broke. Treat the indicator as a cycle-low coincidence detector, not a strict miner-capitulation reading.
The data is modelled, not measured. Network hash rate is a back-out from realised difficulty and observed block intervals. A run of lucky or unlucky blocks can swing daily readings several percent without any change in real-world hashpower. Major dashboards document a daily back-out from realised block intervals and the difficulty target for exactly this reason; the ribbon's 30-day and 60-day averages absorb most of the noise but nothing eliminates it. Critics argue the indicator's relevance softens as institutional spot demand swamps miner-driven sell-pressure as a price input. That argument is paraphrased across the “hash ribbon” SERP, and on balance it lands.
Frequently asked
09Canonical questions from Google's “People also ask” block for hash ribbon, answered against the data on this page.
- What is the Hash Ribbon?
- The Hash Ribbon plots two moving averages of Bitcoin's network hash rate, one over thirty days and one over sixty. Charles Edwards introduced it in his 2019 Capriole essay Hash Ribbons & Bitcoin Bottoms as a miner-capitulation indicator: when the 30-day line crosses below the 60-day, miners are under stress; when it crosses back above, the worst is typically over. Edwards's full buy signal then waits for a price-momentum confirmation on top of the cross.
- What is the buy signal for the Hash Ribbon?
- Edwards's published spec is two-step. The 30-day SMA of hash rate must cross above the 60-day SMA — that marks the end of miner capitulation. Then a 10-day SMA of price must cross above its 20-day SMA on the same window — the price-momentum confirmation. The unfiltered hash-rate cross alone is what most live charts (and our chart on this page) plot, because it matches the Capriole-published dated buy-signal list. The full Edwards filter would have excluded the indicator's January 2015 false positive.
- Who created the Hash Ribbon?
- Charles Edwards of Capriole Investments first published the indicator on Medium in August 2019, and the canonical write-up — Hash Ribbons & Bitcoin Bottoms — followed in October 2019 with the full 30/60 plus 10/20 specification. The TradingView script at capriole_charles · Hash Ribbons is Edwards's own implementation and was last updated in February 2024.
- Has the Hash Ribbon ever flashed a false signal?
- Yes. A January 2015 buy signal preceded a 42% drawdown before the 2015 cycle low printed — Edwards flags it in his original article. A December 2019 signal produced what an Onesafe review called
the lowest returns recorded
for the indicator before COVID compressed any recovery. An August 2022 signal fired weeks before the FTX collapse rather than after the cycle low. The reported 64% hit rate over fourteen historical signals is the honest framing: works on average, not every time. - What does the Hash Ribbon say right now?
- The ribbon currently reads Capitulation. The most recent 30-over-60 upcross fired on 2026-02-26 with spot at $67,947.39; that was 64 days ago. The hash-rate moving averages refresh nightly; spot refreshes a few times a day in the browser.