How the Bitcoin cycle-top timing corridor is calculated
The model does not appoint one day. It estimates how long damped MVRV and NUPL velocity would need to approach overheating, adds Pi Cycle readiness, and caps the result at the next halving.
The lower date is weighted readiness; the upper date waits for the slowest signal
Each indicator is first translated into conditional months to a threshold. The lower boundary represents the first plausible maturation of the signal set. The upper boundary waits for the slowest key signal, but cannot extend past the disclosed next-halving ceiling.
Lraw = 0.45τMVRV,3.0 + 0.35τNUPL,0.65 + 0.20τPi
Uraw = max(τMVRV,3.7, τNUPL,0.75, τPi + 6)
H = max(6, daysUntilHalving / 30.44 − 1)
L = clip(Lraw, 3, H − 3)
U = clip(Uraw, L + 3, H)L and U are months from the current snapshot. Calendar months are rounded and the interface deliberately reports quarters rather than a false-precision date.
Turn a reading into time to threshold
MVRV and NUPL use their absolute 30-day change. A single month cannot be extended linearly without restraint, so the observed velocity is deliberately damped.
τ(x → x*) = (x* − x) / (Δx30d × k)k=0.35 for MVRV and k=0.25 for NUPL. Only 35% and 25% of the latest monthly velocity is therefore accepted. Smaller k means a more conservative, later estimate.
One strong month is not a persistent trend
MVRV and NUPL can jump with price and then stall. Without damping, one short rally could move the estimated top only two or three months away. The 0.35 and 0.25 coefficients are disclosed expert hyperparameters, not proven natural constants.
They should change only after formal backtesting, never to make the model follow a preferred market narrative.
3.0 for preparation, 3.7 for overheating
The lower boundary uses MVRV Z-Score 3.0: substantial valuation extension without requiring maximum historical heat. The upper boundary uses 3.7, the model's historical overheating guide.
τMVRV,3.0 = (3.0 − MVRV)/(ΔMVRV30d × 0.35)
τMVRV,3.7 = (3.7 − MVRV)/(ΔMVRV30d × 0.35)0.65 for strong profit, 0.75 for euphoria
NUPL 0.65 represents a mature profit regime and 0.75 an euphoria scenario. Neither threshold guarantees a reversal; a cycle can peak below it or remain hot longer.
τNUPL,0.65 = (0.65 − NUPL)/(ΔNUPL30d × 0.25)
τNUPL,0.75 = (0.75 − NUPL)/(ΔNUPL30d × 0.25)Proximity is used, not a promised crossover
Pi Ratio is 111DMA divided by 2×350DMA. A value of 1 means crossover. Readiness begins at 0.90 and the remaining gap is translated into conditional months, capped between zero and twelve.
πratio = 111DMA/(2 × 350DMA)
τPi = clip[(0.90 − πratio) × 12, 0, 12]This is a readiness penalty, not extrapolation of the moving averages themselves. Six additional months are added to the upper case because reaching 0.90 does not itself mark a top.
45% MVRV, 35% NUPL, 20% Pi Cycle
MVRV receives the largest weight as normalized valuation extension. NUPL receives 35% as the aggregate profit state. Pi Cycle receives 20% because it is derived from price and should not duplicate on-chain evidence at equal weight.
The weights apply to conditional time estimates, not raw indicator values. They sum to one and remain a first-version expert construction requiring future backtesting.
Why the maximum is used
The late edge must allow at least one essential signal to mature more slowly. If MVRV heats quickly but NUPL lags, the corridor stays open for NUPL. The same logic applies to Pi Cycle with its six-month buffer. A minimum three-month corridor prevents false calendar precision.
The next halving closes the current-cycle scenario
The model describes the current cycle. Its upper date is capped one month before the estimated next halving, with days converted using the average calendar month of 30.44 days.
H = max(6, daysUntilHalving/30.44 − 1)If the corridor collides with this cap, the cycle definition itself should be reconsidered; a top after the next halving belongs to a different structure.
Disclosed fallback horizons
If a reading is missing or its 30-day change is zero or negative, division is not performed. Fixed fallbacks are used: MVRV to 3.0 = 12 months; MVRV to 3.7 = 18; NUPL to 0.65 = 10; NUPL to 0.75 = 15; Pi Cycle = 8.
These values are not hidden data reconstruction. They are conservative defaults that allow a broad scenario under incomplete information.
How today's readings become calendar quarters
The table below is generated by the same shared module as the CycleScope card. There is no separate editorial date.
| Loading live inputs… |
Time is solved first; channel values are then sampled on those dates
After tlow and thigh are produced, the price model obtains the median and 65th-percentile power-law boundaries on those exact dates. Realized Price and NUPL-implied prices are projected to the same horizons. Moving the top window later therefore raises the dollar range through both the rising channel and cost basis.
| Loading current regression parameters… |
This is not a statistical confidence interval for the date
Weights and damping parameters are transparent expert hyperparameters, not estimates from a large independent sample: Bitcoin has too few completed macro cycles. Linear time-to-threshold based on one 30-day window cannot model acceleration, deceleration or reversal. Pi Cycle is itself price-derived and lagging. The next halving date is estimated. Read the output as a scenario-monitoring window, not a guaranteed interval.
If the signals reverse, the window must move
Falling MVRV or NUPL, deteriorating demand, long-term-holder distribution, a break of the 200-day structure or passage through the next halving require recalculation. The model must never defend an old date; it should expose the current consequence of current inputs.