Research · Validation
Bitcoin Indicator Autopsy
Popular Bitcoin signals, tested. Pi Cycle Top, Stock-to-Flow, the 2-Year Moving Average Multiplier, the 200-Week Moving Average and LPPLS are evaluated using their stated rules. The page records every historical trigger, what followed, the sample size and the current condition. No signal is endorsed; each is examined against its own historical record.
Current readings
Computed from the daily public snapshot for 14 October 2026, published 2026-10-15 11:22 UTC. The charts and tables below are drawn in the browser from the same file; these figures are the ones they show.
| Valuation composite | 42.3 | reads as average |
|---|---|---|
| LPPL reading today | 0.00 | 8 windows |
| LPPL signal days | 561 | in 18 runs |
| LPPL hit rate vs baseline | 28.0% vs 35.0% | random-block p = 0.69 |
Price and the indicators
Pi Cycle Top
| Trigger | Price | 90d after | 365d after | Worst drawdown within 1y |
|---|---|---|---|---|
| Apr 7, 2013 | $144 | -52% | +219% | -53% |
| Dec 7, 2013 | $800 | -16% | -53% | -60% |
| Dec 17, 2017 | $19,280 | -57% | -83% | -83% |
| Apr 13, 2021 | $59,835 | -43% | -33% | -50% |
- Recordevery trigger preceded a drawdown of 50% or worse within a year; the median worst drawdown is severe
- The caveatsfour events; it fired twice in 2013 and the April 2013 signal was followed by +219% a year later; it did not fire at the November 2021 cycle top at all
- Fair readinga crossing this fast above trend has historically meant late-cycle heat, not a precision top tick
Stock-to-Flow
| Date | Model value (0.4 × S2F³) | Actual price | Actual / model |
|---|---|---|---|
| Dec 17, 2017 | $5,492 | $19,280 | 351% |
| Apr 13, 2021 | $56,423 | $59,835 | 106% |
| Jun 1, 2022 | $75,871 | $31,776 | 42% |
| Jan 1, 2025 | $306,507 | $93,407 | 30% |
| Oct 14, 2026 | $740,705 | $83,094 | 11% |
- Published specification todaythe model calls for $740,705; the deviation is -219 log points
- Even a full-sample refitexponent 2.57 (published ~3.3); average residual 14 pts before May 2021 vs -24 pts after — a structural break the refit cannot hide
- Fair readingthe published specification lost calibration after the 2020–21 cycle; the observed deviation is inconsistent with treating it as a stable valuation rule, which is what the co-integration critiques of 2020–22 argued
2-Year MA Multiplier
| Event | Date | Price | 365d after |
|---|---|---|---|
| entered sell zone (above 5×) | Mar 10, 2013 | $47 | +1264% |
| entered sell zone (above 5×) | Oct 30, 2013 | $216 | +55% |
| entered buy zone (below 2y MA) | Nov 2, 2014 | $325 | +0% |
| entered buy zone (below 2y MA) | Jan 16, 2016 | $364 | +125% |
| entered sell zone (above 5×) | Sep 2, 2017 | $4,908 | +47% |
| entered buy zone (below 2y MA) | Nov 20, 2018 | $4,849 | +67% |
| entered buy zone (below 2y MA) | Oct 24, 2019 | $7,470 | +74% |
| entered buy zone (below 2y MA) | Mar 13, 2020 | $4,830 | +1085% |
| entered buy zone (below 2y MA) | May 9, 2022 | $34,082 | -19% |
| entered buy zone (below 2y MA) | Jan 30, 2026 | $84,563 | – |
- Buy-zone recordmedian +71% one year after entering (n=6), against +70% after an eligible day on which it did not fire: indistinguishable from the baseline; the 2022 entry, at -19%, is the counterexample
- Sell-zone recordthe 5× band has not been touched since 2017 — diminishing cycles have moved the top inside it, so the sell half of the rule has been silent for two cycles
- Fair readingthe buy band has marked accumulations; whether it beat a random day is in the before the outcome was known table below; the fixed 5× sell band is calibrated to a market that no longer exists
200-Week Moving Average
| Crossed below | Price | 365d after |
|---|---|---|
| Jan 15, 2015 | $172 | +150% |
| Aug 19, 2015 | $222 | +157% |
| Mar 13, 2020 | $4,830 | +1085% |
| Jun 15, 2022 | $22,189 | +13% |
| Jun 6, 2023 | $25,747 | +174% |
| Oct 3, 2023 | $27,533 | +121% |
| Jun 6, 2026 | $61,039 | – |
- Recordmedian +153% one year after crossing below (n=6); price has spent only 8.5% of its history under this line
- The caveatthe most recent crossing is still inside its one-year window, so its row is blank by construction, not omission
- Fair readingthe strongest floor in the set, but a floor with a rising slope is partly a statement that Bitcoin has always recovered so far — survivorship in one line
Verdicts
| Signal | Triggers | What the record shows | Current condition |
|---|---|---|---|
| Pi Cycle Top | 4 | preceded a 50%+ drawdown every time; also fired mid-2013 before +219% and missed the Nov 2021 top | quiet (53% away) |
| Stock-to-Flow | — | published model off by -219 log points today (price is 0.11× the model); out of calibration since the 2020–21 cycle | model $740,705 |
| 2-Year MA Multiplier | 10 | buy band: median +71% a year after entry, level with the +70% after an eligible day that did not fire; the 5× sell band silent since 2017 | 0.93× the 2y MA |
| 200-Week MA | 7 | median +153% after crossing below, ahead of the +56% after an eligible day that did not fire; small sample | 1.25× the 200w MA |
What happened when the rule fired?
| Rule, as triggered | Triggers | 90 days: after the rule | after an eligible day that did not fire | difference | 1 year: after the rule | after an eligible day that did not fire | difference | Interval |
|---|---|---|---|---|---|---|---|---|
| Pi Cycle Top crosses (a top signal: negative is the rule working) | 4 | -47% | +12% | -59 pts | -43% | +95% | -138 pts | none: 4 triggers, fewer than twenty |
| 2-Year MA: price crosses below (buy band) | 7 | -10% | +10% | -20 pts | +71% | +70% | +1 pts | none: 7 triggers, fewer than twenty |
| 2-Year MA: price crosses above 5x (sell band) | 3 | +138% | +9% | +128 pts | +55% | +80% | -25 pts | none: 3 triggers, fewer than twenty |
| 200-week MA: close crosses below | 7 | +33% | +5% | +28 pts | +153% | +56% | +97 pts | none: 7 triggers, fewer than twenty |
Forward returns are simple price changes from the trigger close. The baseline is transition-matched: for each rule it is the median over the days on which that rule could have fired (its moving averages existed) but did not, excluding trigger days and the ninety days after each, with a completed forward window. So a rule is compared neither with days it could not see nor with its own aftermath, and the difference answers whether crossing the line added information over days the line existed and was not crossed. At one year that is 4,828 days for the Pi Cycle Top crosses, 4,538 days for the 2-Year MA, 3,598 days for the 200-week MA. Triggers within 90 days of one another are counted once, as in the tables above. With four to a dozen triggers per rule the difference column is a description of a handful of dates, which is why no interval is printed; the site's rule, from the Technical Signals page, is that fewer than twenty completed windows earns no interval and no verdict.
What the indicators showed before major declines
Of the 10 declines the rule finds since 2013, valuation read expensive or very expensive on the eve of 4 of the 5 cycle tops and 0 of the 4 sharp shocks. The shocks were not flagged: every one began from very cheap or average or cheap valuations. Today reads average. Ten columns across 10 events means some column will always appear to have caught any single event, and the "4 of 5" above is itself a column read on 5 events; the table is read by its columns, not mined for hits. Valuation composite from composite.json (2026-10-15).
| Date | Turned out to be | Price | Valuation | MVRV pct | Mayer price / 200-day | RSI | Pi Cycle | 2-yr MA | Fear & Greed | DVOL implied volatility | LPPL | Then: 30d low (selection for shocks) | 180d low (selection for tops) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Apr 10, 2013 | cycle top | $231 | before 2013 window | – | – | 98 | fired | 17.6× | – | – | 0.38 | -71% | -71% |
| Dec 5, 2013 | cycle top | $1,137 | very expensive 97 | 94 | 5.65 | 75 | -1% | 15.8× | – | – | 0.38 | -54% | -68% |
| Sep 5, 2014 | shock | $489 | very cheap 7 | 5 | 0.88 | 40 | -48% | 1.6× | – | – | 0.00 | -33% | -65% |
| Dec 17, 2017 | cycle top | $19,280 | very expensive 98 | 99 | 3.72 | 80 | fired | 9.8× | – | – | 0.63 | -35% | -67% |
| Oct 22, 2018 | shock | $6,505 | average 34 | 25 | 0.90 | 50 | -62% | 1.2× | 27 | – | 0.00 | -31% | -50% |
| Feb 12, 2020 | shock | $10,275 | average 53 | 59 | 1.16 | 70 | -49% | 1.4× | 61 | – | 0.00 | -53% | -53% |
| Apr 14, 2021 | cycle top | $63,554 | very expensive 92 | 96 | 1.97 | 67 | fired | 4.1× | 75 | – | 0.25 | -23% | -53% |
| Nov 9, 2021 | cycle top | $67,562 | expensive 83 | 88 | 1.48 | 68 | -43% | 2.6× | 84 | – | 0.13 | -27% | -48% |
| May 18, 2022 | shock | $30,407 | cheap 23 | 21 | 0.68 | 35 | -55% | 0.9× | 12 | – | 0.00 | -33% | -48% |
| Oct 7, 2025 | cycle top | $124,777 | average 66 | 79 | 1.18 | 73 | -43% | 1.6× | 70 | 39 | 0.00 | -19% | -50% |
| Today | — | $83,094 | average 42 | 41 | 1.15 | 52 | -53% | 0.9× | 62 | 39 | 0.00 | ? | ? |
- What a warning is worththe composite was in the expensive or very-expensive state on 41 separate occasions since 2013 (contiguous stretches, each counted once); a 30% fall within thirty days began during 6 of them (15%). Counted by days the rate would look different, and would be wrong: a state that persists for months is one observation, not a hundred
- The split that mattersthe very-expensive state, composite at 90 or above, occurred on 14 occasions; a 30% fall within thirty days began during 5 (36%). That band carries more of the record than the 70 to 90 band, which is where most expensive days sit
- The unconditional ratefor context, a 30% fall within thirty days began on 7% of all days since 2013; the before the outcome was known comparison of each rule with a randomly chosen eligible day is in the panel above, and the intervalled tests of the everyday indicators are on the Technical Signals page
- What the outcome columns do not showevents were selected by what followed, so the thirty-day column for shocks and the six-month column for tops restate the rule rather than test anything; only the other horizon in each row is a finding. The kind of event is likewise assigned with hindsight; the readings are not
- How stable the list isthe thresholds are round numbers fixed once, not searched, and the count moves with them: 25%/35% → 13 events; 30%/40% → 10 events; 35%/45% → 10 events. Declines within 180 days of one another are treated as one episode; that is a grouping convention, not an estimate, and under other conventions the count is: 90-day → 14; 180-day → 10; 365-day → 6. The membership of the list moves at the margin; whether it does so in a way that changes the reading above is for the reader to check against the table
- Pi Cycle, in the same termsthe Pi Cycle condition (111-day average above twice the 350-day) persisted across 4 separate episodes; a 30% fall within thirty days began during 4 (100%). The crossing itself, the rule as published, occurred 4 times and is scored in the before the outcome was known comparison above. The condition held on the eve of 2 of the 5 cycle tops and 0 of the 4 shocks. 4 episodes is not a rate, it is 4 dates
- The shocks in particularthe sharp declines that began Sep 5, 2014, Oct 22, 2018, Feb 12, 2020, May 18, 2022 started from very cheap or average or cheap valuations with relative strength between 35 and 70. Nothing on this page would have said so the day before, and the page is written to admit it
- Going forwardthe leverage series are now recorded daily; the next event will carry a record of funding, open interest, skew and CME positioning on its eve, which the past ones lack. Whether those would have helped is a question this table will eventually answer rather than assume
What this table cannot show yet: leverage. The sharp declines that were not preceded by an expensive valuation may have been visible in leverage rather than in price, but the series that describe leverage — funding, open interest, options skew, CME positioning — have only been recorded on this site since late 2025. They will appear here as columns once enough history exists to compare an event day against its own past. Until then the honest statement is that the family that might have shown fragility before those events is the one with no record of them. Prices are daily averages, so an intraday crash that recovered by the close — 10 October 2025 among them — registers here through the decline that followed it, not on the day itself.
LPPLS: testing for bubble-like price dynamics
lppls.json.Under the published filters the confidence reached 0.5 on 561 days since 2013, in 18 runs (median 9 days, longest 109). A fall of 40% or more within the following year came after 28% of those days, against 35% of all days; a doubling came after 64% of them against 53%. Against 10,000 random draws of day-blocks matching the signal runs, the chance of a hit rate at least this high is 0.69. On this record the model fires during the accelerating phase of advances, which mostly continue. Today it reads 0.00.
| Episode start, first qualifying reading (0.5 or above, 90-day grouping) | Price | Strict set | Estimated critical time | Then: 1-year low | 1-year high | Outcome |
|---|---|---|---|---|---|---|
| Feb 23, 2013 | $31 | 0.00 | 172 days out | -2% | +3625% | price more than doubled instead |
| Nov 28, 2013 | $965 | 0.00 | 368 days out | -66% | +18% | major decline followed |
| Jul 8, 2016 | $639 | 0.00 | 130 days out | -17% | +363% | price more than doubled instead |
| Jan 18, 2017 | $907 | 0.00 | 79 days out | -3% | +2027% | price more than doubled instead |
| Dec 4, 2020 | $19,455 | 0.00 | 12 days out | -7% | +247% | price more than doubled instead |
| Mar 7, 2024 | $66,102 | 0.00 | 67 days out | -18% | +61% | no decisive move |
Lead time, and what happened after the first signal
| First fired | Price | Run length | Highest daily-average price within 1y | Days to it | Rise to it | Fall from that high within 1y |
|---|---|---|---|---|---|---|
| Feb 23, 2013 | $31 | 36 days | $1,137 | 285 days | +3625% | -72% |
| May 24, 2013 | $127 | 54 days | $1,137 | 195 days | +797% | -72% |
| Aug 11, 2013 | $103 | 7 days | $1,137 | 116 days | +1004% | -72% |
| Nov 28, 2013 | $965 | 7 days | $1,137 | 7 days | +18% | -72% |
| Dec 16, 2013 | $863 | 6 days | $916 | 22 days | +6% | -71% |
| Jan 5, 2014 | $829 | 67 days | $916 | 2 days | +10% | -71% |
| Jul 8, 2016 | $639 | 14 days | $2,955 | 339 days | +363% | -35% |
| Jul 29, 2016 | $656 | 6 days | $2,955 | 318 days | +351% | -35% |
| Jan 18, 2017 | $907 | 69 days | $19,280 | 333 days | +2027% | -83% |
| Apr 13, 2017 | $1,212 | 51 days | $19,280 | 248 days | +1491% | -83% |
| Jun 12, 2017 | $2,955 | 116 days | $19,280 | 188 days | +552% | -83% |
| Nov 1, 2017 | $6,416 | 82 days | $19,280 | 46 days | +200% | -83% |
| Feb 6, 2018 | $6,925 | 1 day | $11,517 | 27 days | +66% | -72% |
| Dec 4, 2020 | $19,455 | 13 days | $67,562 | 340 days | +247% | -73% |
| Dec 29, 2020 | $27,037 | 8 days | $67,562 | 315 days | +150% | -73% |
| Feb 25, 2021 | $50,625 | 8 days | $67,562 | 257 days | +33% | -73% |
| Mar 17, 2021 | $56,872 | 4 days | $67,562 | 237 days | +19% | -73% |
| Mar 7, 2024 | $66,102 | 58 days | $106,158 | 321 days | +61% | -28% |
- Lead time, read from the tablein 2017 the condition first fired on Jan 18, 2017 at $907; the high came 333 days later at $19,280, 21.3× higher. A reader who treated the first firing as a sell signal left most of that year on the table. The condition describes the advance; it does not date its end
- Three denominators, kept apartthe tests below give the model three different scores and they should not be blended: the day-before table reports how many of the rule-defined tops and shocks carried a reading of 0.5 on their eve; the episode table above reports what followed each episode start under 90-day grouping; the verdict reports signal days against all days. A persistent signal looks different under each
- What it is foran endogenous bubble ending in a critical time. It is not designed to see liquidation cascades or macro shocks; the four sharp shocks in the table below read zero on it, consistent with that intended focus rather than as a validation of anything
- How often it says anythinga positive confidence of any size occurred on 43% of days and 0.5 or more on 11% under the published filters; under the strict sensitivity set, 0.5 or more on 0% of days
- The 2017 detectionthe confidence read 0.75 on the eve of the 17 December 2017 top and 0.75 a month earlier, the clearest reading in the record; it had also read 0.5 or more for most of the eleven months before that, from a price of about $1,100. The qualifying fits have small oscillation amplitude, so the detectable part of that bubble was the super-exponential component rather than the log-periodic component in the model's name; Pele and Mazurencu-Marinescu-Pele (2019) report the same on their own fits
- What could not be reproducedtheir published next-day critical time on a 700-observation window fitted to 11 December 2017. On that window a standard fit drifts to the exponent boundary with a critical time months out; the detection here is reproducible under the stated specification on the 120- to 450-day windows, and strongly window-dependent
- What the result is conditional ona fixed search (12 critical times spanning the full interval the primary filter permits, by 3 exponents by 3 frequencies, then Nelder-Mead) that is not the original authors' optimiser, daily-average prices rather than closes, and the published filter thresholds. The specification was fixed before evaluation and the strict set is shown for sensitivity, not chosen for effect
Method
Everything on this page is computed in your browser from the daily price and supply history in the public snapshot (Blockchain.com feed, 2010 to today). Moving averages are simple; the Pi Cycle crossing requires the previous day on the other side and crossings within 90 days of one another are counted once; stock-to-flow is circulating supply over the trailing 365-day change in supply; forward returns are simple price changes and the worst-drawdown column is the minimum close within a year of the trigger. Nothing is optimised, smoothed or excluded, and the current values of every line are printed in the strip above.
The stock-to-flow test uses PlanB's exponent with a price-scale coefficient that is not his (value = 0.4 × S2F³; his published regression is on market value, ln mktcap = 3.3 ln SF + 14.6, and 0.4 sits above both his forms) and, separately, a full-sample refit of ln price on ln S2F; the notes report both, because a refit quietly absorbs part of a model's failure and the honest test is the specification as published.
What this page tells you, and what it does not
Claimed: these are the exact historical records of each rule on this data, reproducible from the snapshot. Not claimed: that any signal works or fails going forward. The sample sizes are three to seven events per rule; that is not statistics, it is a handful of anecdotes with dates, and the verdict column says so. Signals built on halving-cycle structure inherit the diminishing-cycles problem visible in the 2-Year MA sell band, which has not been reached since 2017.
Sources: the Crypto Exponentials daily snapshot (Blockchain.com price and supply). Signal origins: Pi Cycle Top, Philip Swift, 2019; stock-to-flow, PlanB, "Modeling Bitcoin Value with Scarcity," 2019 (and the co-integration critiques of 2020–22); 2-Year MA Multiplier and 200-Week MA heatmap, Philip Swift / LookIntoBitcoin. Nothing here is investment advice.