Take a quadratic regression of time as a function of bitcoin’s daily closing price since July 7, 2010 (Mt Gox and Bitstamp concatenated):

Solve the quadratic and invert the axes, putting yourself back in the time domain:

Divide by 2.5; call this bitcoin’s historic price floor:

Manipulate the price floor to fit the halving cycles by superposing a cyclical function on the monotonic trend:

The yellow trace extrapolates an ad hoc curve-fitting of the halving cycles. The curve can be squeezed into different shapes by changing its parameters.