EXPERIMENT E5 · VERDICT PUBLISHED

Stock-to-flow is a clock in disguise

It is the best known Bitcoin model and the one people search for by name. We tested whether adding it improved anything in our engine, wrote the verdict down before looking away, and it was no. Here is every number, including the test it won.

0.939
How much stock-to-flow correlates with the simple passage of time
−0.03
How much it correlates with the next 30 days of returns
+0.05
R² points it adds on top of a day counter, out of 100

Measured on 19 August 2026. Frozen figures, not a live reading: this page reports one dated experiment, not a number that moves.

THE MODEL

What it says, and why it sounds so convincing

Stock-to-flow divides what already exists by what is produced each year. Bitcoin halves its issuance roughly every four years, so the ratio climbs in steps and never falls. Plot it against price on a log chart over a decade and the two lines rise together beautifully. That picture is the whole reason the model is famous.

We had no excuse not to test it. Stock-to-flow needs no data provider: it comes straight out of the halving calendar, which is arithmetic. The question was narrow and honest, does adding it improve the line, the candles, the bets, the cone or the volatility?

TEST 1 OF 3

The test it won, and why that test is worthless

Fitting the log of price against the log of stock-to-flow gives an R² of 0.828. The power law our engine actually uses, fitted against the log of time, gives 0.787. Stock-to-flow wins. We are publishing that because it happened.

And it decides nothing. That is a regression on the levels of two series that both trend upwards for nine years, which is the textbook definition of a spurious regression. Any two things that rise together for long enough will correlate, related or not. A test that a bad model passes is not a test.

TEST 2 OF 3

Against what actually matters, there is nothing there

A model earns its place by saying something about what comes next. So we correlated stock-to-flow against future returns: −0.032 over the following 30 days, −0.078 over 90. With roughly 84 and 27 effective observations, the standard error of those correlations is about 0.11 and 0.19.

That puts both numbers three or four tenths of a standard error away from zero. In plain words: indistinguishable from noise. Stock-to-flow does not tell you where the price goes next.

TEST 3 OF 3

Where it almost passed, and how it gave itself away

Against future volatility the signal looked real and large: −0.470 at 30 days and −0.566 at 90, with the sign you would hope for. More scarcity, less volatility. Added to past volatility it lifted the fit by 8.6 points at 30 days and 19.2 at 90. This is the point where a less careful test would have said yes.

But stock-to-flow rises monotonically with time, and Bitcoin volatility has been falling for years as the asset matures. So we made them compete. A plain day counter since the genesis block does the job better, and once you have it, stock-to-flow adds five hundredths of a point out of a hundred.

Past volatility alone
21.4% of the variance explained at 30 days, 15.3% at 90. This is what the engine had.
Adding a time term
Jumps to 32.0% and 39.1%. A counter of days since genesis, nothing more.
Adding stock-to-flow instead
29.9% and 34.4%. Good, and worse than the day counter it was imitating.
Adding both together
32.0% and 39.2%. Stock-to-flow contributes +0.05 and +0.09 points over time alone.
VERDICT

No. And it is not coming back

Stock-to-flow does not enter the projection. What looked like scarcity driving price was the calendar driving both, and a day counter models the calendar better because that is all it is.

We are not re-litigating this without new data, and there is no new data to be had: the issuance schedule is deterministic to the last block, so stock-to-flow cannot stop being a function of time. The experiment did leave something valuable behind, though. That time term is real and our engine did not have it, because its variance comes from a GARCH that reverts to a constant long-run mean and carries no trend by construction. That became the next experiment.

WHAT WE DO INSTEAD

The difference is not the model, it is the scoring

Stock-to-flow made dated public predictions that missed, and there was never a scoreboard: the model was defended, then quietly dropped. We took the opposite bet. Every range is committed before the period it judges, stored, and compared against the real close afterwards, hits and misses alike.

And the range is not a target price. It is the interquartile band of thousands of simulated scenarios, so a well calibrated model contains the close about half the time, not always. A band that is right every time is simply a band that is too wide to mean anything.

See the public scoreboard →

FAQ

Common questions

Does BitPulse use stock-to-flow?
No. We tested it on 19 August 2026 and the verdict was no. It correlates 0.939 with the passage of time, and a plain day counter predicts volatility better than it does.
Is stock-to-flow a good Bitcoin model?
It fits the past well and says almost nothing about the future. Against the next 30 days of returns its correlation is −0.03, which with 84 effective observations is indistinguishable from zero.
Why does stock-to-flow look so accurate on a chart?
Because it is plotted as levels against price, and both series trend upwards for years. That is a spurious regression: two things that rise together will correlate whether or not one explains the other.
What does BitPulse use instead?
Four generators checked against each other, and a range published before the period it judges and scored against the real close afterwards. The band is the interquartile range, so containing the close about half the time is the expected result, not a failure.