Cryptolean
// Methodology · cycle

Cycle and ROI comparison.

Current definition cycle-v5. Charts stamped with it were computed by src/metrics/cycles.py, and every value plotted for a past date could have been computed on that date.

Definition and failure modes

Align cycles to a common anchor and overlay them. This is where diminishing returns become visible, which is the core thesis of the whole product.

Every chart built on this embeds one assumption: that cycles continue in roughly the shape they have so far. That assumption is stated on every page that uses it, because nothing here can tell you when it stops holding.

Version history

Newest first. Each entry says what changed and whether values that had already been published moved with it, followed by the sentence from the module that decided the verdict.

  1. cycle-v52026-08-06AdditiveCurrent

    seasonal cohorts and the mean +/- n*sigma envelope the payload's standard-deviation: cohort control needs. seasonal_envelope() gains columns; nothing it already returned changed, so no drawn series moves.

    Output was added. Nothing already published changed, so every chart drawn under the previous version still reads the same.

    • unchangedseasonal cohorts and the mean +/- n*sigma envelope the payload's standard-deviation: cohort control needs. seasonal_envelope() gains columns; nothing it already returned changed, so no drawn series moves.
  2. cycle-v42026-08-06Additive

    drawdown_episodes(): peak, trough, depth and recovery time, DERIVED per asset instead of hand-dated. Additive; the hand-dated CYCLE_BOTTOMS are untouched and every chart built on them is unchanged.

    Output was added. Nothing already published changed, so every chart drawn under the previous version still reads the same.

    • unchangedAdditive; the hand-dated CYCLE_BOTTOMS are untouched and every chart built on them is unchanged.
  3. cycle-v32026-08-06Additive

    seasonal_ytd() and milestones(). Additive again — every v1 and v2 series is unchanged and only the stamp moves.

    Output was added. Nothing already published changed, so every chart drawn under the previous version still reads the same.

    • unchangedAdditive again — every v1 and v2 series is unchanged and only the stamp moves.
  4. cycle-v22026-08-05Additive

    calendar-year returns, rolling ROI, run streaks, days since a decline, DCA-by-weekday. cycle-v1's series are untouched: no existing chart moves.

    Output was added. Nothing already published changed, so every chart drawn under the previous version still reads the same.

    • unchangedcalendar-year returns, rolling ROI, run streaks, days since a decline, DCA-by-weekday. cycle-v1's series are untouched: no existing chart moves.
  5. cycle-v12026-08-05Initial

    drawdown, anchored ROI, monthly return grid.

    The first version of this metric. There is no earlier definition to restate.

Charts drawn with it

115 charts name this metric in their readout line.

cycles

Cardano — Days Since a DeclineAvalanche — Days Since a DeclineBitcoin Cash — Days Since a DeclinePolkadot — Days Since a DeclineEthereum — Days Since a DeclineGold — Days Since a DeclineChainlink — Days Since a DeclineLitecoin — Days Since a DeclinePolygon — Days Since a DeclineSilver — Days Since a DeclineSolana — Days Since a DeclineS&P 500 — Days Since a DeclineXRP — Days Since a DeclineBitcoin — Days Since a DeclineBitcoin — Best Day of the Week to BuyCardano — Best Day of the Week to BuyAvalanche — Best Day of the Week to BuyBitcoin Cash — Best Day of the Week to BuyPolkadot — Best Day of the Week to BuyEthereum — Best Day of the Week to BuyGold — Best Day of the Week to BuyChainlink — Best Day of the Week to BuyLitecoin — Best Day of the Week to BuyPolygon — Best Day of the Week to BuySilver — Best Day of the Week to BuySolana — Best Day of the Week to BuyS&P 500 — Best Day of the Week to BuyXRP — Best Day of the Week to BuyCardano — Drawdown from All-Time HighAvalanche — Drawdown from All-Time HighBitcoin Cash — Drawdown from All-Time HighBitcoin — Drawdown from All-Time HighPolkadot — Drawdown from All-Time HighEthereum — Drawdown from All-Time HighGold — Drawdown from All-Time HighChainlink — Drawdown from All-Time HighLitecoin — Drawdown from All-Time HighPolygon — Drawdown from All-Time HighSilver — Drawdown from All-Time HighSolana — Drawdown from All-Time HighS&P 500 — Drawdown from All-Time HighXRP — Drawdown from All-Time HighBitcoin — Monthly ReturnsCardano — Monthly ReturnsAvalanche — Monthly ReturnsBitcoin Cash — Monthly ReturnsPolkadot — Monthly ReturnsEthereum — Monthly ReturnsGold — Monthly ReturnsChainlink — Monthly ReturnsLitecoin — Monthly ReturnsPolygon — Monthly ReturnsSilver — Monthly ReturnsSolana — Monthly ReturnsS&P 500 — Monthly ReturnsXRP — Monthly ReturnsCardano — Consecutive Up and Down ClosesAvalanche — Consecutive Up and Down ClosesBitcoin Cash — Consecutive Up and Down ClosesPolkadot — Consecutive Up and Down ClosesEthereum — Consecutive Up and Down ClosesGold — Consecutive Up and Down ClosesChainlink — Consecutive Up and Down ClosesLitecoin — Consecutive Up and Down ClosesPolygon — Consecutive Up and Down ClosesSilver — Consecutive Up and Down ClosesSolana — Consecutive Up and Down ClosesS&P 500 — Consecutive Up and Down ClosesXRP — Consecutive Up and Down ClosesBitcoin — Return After Each Cycle BottomBitcoin — Return After Each HalvingBitcoin — Return After Each Cycle PeakBitcoin — Rolling Holding-Period ReturnsCardano — Rolling Holding-Period ReturnsAvalanche — Rolling Holding-Period ReturnsBitcoin Cash — Rolling Holding-Period ReturnsPolkadot — Rolling Holding-Period ReturnsEthereum — Rolling Holding-Period ReturnsGold — Rolling Holding-Period ReturnsChainlink — Rolling Holding-Period ReturnsLitecoin — Rolling Holding-Period ReturnsPolygon — Rolling Holding-Period ReturnsSilver — Rolling Holding-Period ReturnsSolana — Rolling Holding-Period ReturnsS&P 500 — Rolling Holding-Period ReturnsXRP — Rolling Holding-Period ReturnsCardano — Year-to-Date by MonthAvalanche — Year-to-Date by MonthBitcoin Cash — Year-to-Date by MonthBitcoin — Year-to-Date by MonthPolkadot — Year-to-Date by MonthEthereum — Year-to-Date by MonthGold — Year-to-Date by MonthChainlink — Year-to-Date by MonthLitecoin — Year-to-Date by MonthPolygon — Year-to-Date by MonthSilver — Year-to-Date by MonthSolana — Year-to-Date by MonthS&P 500 — Year-to-Date by MonthXRP — Year-to-Date by MonthBitcoin — Consecutive Up and Down ClosesBitcoin — Returns by Calendar YearCardano — Returns by Calendar YearAvalanche — Returns by Calendar YearBitcoin Cash — Returns by Calendar YearPolkadot — Returns by Calendar YearEthereum — Returns by Calendar YearGold — Returns by Calendar YearChainlink — Returns by Calendar YearLitecoin — Returns by Calendar YearPolygon — Returns by Calendar YearSilver — Returns by Calendar YearSolana — Returns by Calendar YearS&P 500 — Returns by Calendar YearXRP — Returns by Calendar Year
Current version
cycle-v5
Versions on record
5
First dated
2026-08-05
Restatement policy
Never moved
Never restated. Every bump on record added output without redefining what was already there.
Charts
115
Source
src/metrics/cycles.py
Public functions
anchored_roi, cohort_years, compute, days_since_decline, dca_by_weekday, drawdown, drawdown_episodes, milestones, monthly_returns, rolling_cagr, rolling_roi, seasonal_envelope, seasonal_ytd, streaks, time_since, troughs, yearly_returns
Machine-readable
catalog.json · llms.txt