Valuation · Bitcoin

Stock-to-Flow, explained

Bitcoin's most famous — and most argued-over — valuation model: existing supply divided by annual issuance, turned into a model price. How the model is built, why our risk score deliberately does not track the gap between price and that model price, and what happened when the model's own predictions missed.

By Menno van Ravels, Founder of Blockchain DecodedUpdated 25 July 20267 min readFree to read
Formula
Stock ÷ Flow

existing supply over annual issuance

Risk factor weights
45/25/20/10

price position / momentum / volatility / halving

Heatmeter weight
4%

one of 14 inputs, both Bitcoin & Ethereum

Next halving
~2028

reward falls to 1.5625 BTC (estimated)

deviationmodel price (from S2F)actual price2012 halving201620202024TIME →
Schematic — the shape of the staircase, not live data
01

What is the Stock-to-Flow model?

A scarcity-based valuation model for Bitcoin, popularized by the pseudonymous analyst PlanB in 2019. It divides existing circulating supply (the stock) by how much new supply enters the market per year (the flow). The higher the ratio, the smaller new issuance is relative to everything already mined — and unlike gold or silver, Bitcoin's flow drops on a fixed, publicly known schedule: roughly every four years, the block reward — and with it, new issuance — is cut in half.

That halving schedule is what makes the model tempting: it turns Bitcoin's supply side into a predictable staircase, and PlanB's original contribution was fitting a formula to past data that translated each step of that staircase into an implied market cap.

02

How does Blockchain Decoded calculate the S2F ratio and model price?

We don't count circulating supply on the chain directly. Instead we follow the issuance schedule forward from the date of Bitcoin's first block, in 210,000-block halving eras at an assumed 144 blocks per day, adding up the reward earned in each era until it reaches the date in question — capped at the 21,000,000 BTC hard cap. Annual issuance is simpler: the current era's block reward times 52,500 (an approximation of blocks mined per year). S2F is then just stock divided by flow: supply ÷ annual issuance.

Price history comes from CoinGecko, extended back with early 2010-era Bitcoin prices from before CoinGecko's own coverage begins, and plotted weekly.

03

What is PlanB's formula, and where do 14.6 and 3.3 come from?

Once we have the S2F ratio for a given date, the model price comes from the formula PlanB fitted in 2019: market cap = e^14.6 × S2F^3.3, divided by circulating supply to turn a market cap into a price per coin. Both numbers — 14.6 and 3.3 — are PlanB's own, the values he arrived at by fitting the formula to Bitcoin's historical market cap against its historical S2F ratio. We do not re-fit or update them; we apply the original published values exactly as they were.

The percentage gap between that model price and the actual price is the figure the chart calls the deviation. It's the number the model is famous for — and, as the next section explains, it is not the number that drives this page's risk score.

04

How do we turn Stock-to-Flow into a 0-100 risk score?

One thing to be clear about: the risk score on this page is not a measure of how far price has strayed from the S2F model price. It's a separate weighted blend of four factors that describe recent price behaviour, not scarcity valuation:

Cycle price position (45%) — where the current price sits within its own trailing 2-year range, from 0 (at the low) to 100 (at the high). Momentum (25%) — how fast price has moved over the last 30 periods, mapped onto a curve. Volatility (20%) — how widely price has swung over that same 30-period window. Halving cycle position (10%) — how far the current date sits within the four-year cycle since the last halving, scored on a curve that peaks around the three-quarter mark.

Those four scores are combined into a raw weighted average, then stretched to fill the full 0-100 range using the lowest and highest raw scores seen across the whole history (plus a small buffer either side), because a straight weighted average of these four factors rarely reaches the true extremes on its own.

05

Has the Stock-to-Flow model ever been wrong?

Yes, and unusually clearly for a valuation model. PlanB's original 2019 model projected a price floor for Bitcoin that actual price fell well below during the 2021-2022 drawdown — a miss that is widely documented across the industry and is a large part of why this model remains one of the most argued-over in crypto, rather than a quietly accepted classic.

The original model has already missed, publicly

PlanB's 2019 Stock-to-Flow model projected a price floor that Bitcoin fell well below during the 2021-2022 drawdown. That miss is widely documented and is the central reason this model is one of the most argued-over in the industry.

Our risk score doesn't measure the model's own gap

The S2F model price, and the gap between it and the actual price, are both worked out and shown. The 0-100 risk score is a separate thing: a blend of four factors — recent price position, momentum, volatility and halving timing — that does not use that gap at all. Section 04 sets out the weights.

Circulating supply is worked out from the schedule, not read off the chain

We follow Bitcoin's issuance schedule forward from its first day — 210,000-block halving eras at an average of 144 blocks a day — rather than counting coins on the chain live. It is a close approximation, because real block times drift a little either side of that average.

The 0-100 scale is stretched to fit its own history

The raw weighted risk score is stretched to fill the full 0-100 range, using the lowest and highest raw scores seen across the whole history with a small buffer either side. That floor and ceiling move as new history arrives, so the same raw score can end up showing as a slightly different number once the range widens.

Stock-to-Flow measures scarcity with precision and predicts price with none. Our risk score doesn't pretend otherwise — it scores the price, not the model's claim about the price.

The deviation number is on the page. It just isn't what colours the score
06

How do you read the Stock-to-Flow chart?

Watch the staircase for scarcity, the price line for everything else. The S2F ratio only moves at halvings — it's a fact about supply, not a forecast. The model price derived from it moves in step with that staircase. Actual price does whatever demand does, independent of either.

Don't read the 0-100 risk score as "how overvalued vs. the model." As section 04 covers, it's a price-behaviour score — cycle position, momentum, volatility, halving timing — that happens to live on this page. If you want the actual model-price gap, that's the separate deviation figure on the live chart, not the risk gauge.

07

Where it fits

Stock-to-Flow is a supply-side indicator — it describes Bitcoin's issuance schedule with certainty and says nothing about demand, which is exactly the gap that produced its most public miss. On this platform it also contributes a price-behaviour reading through its risk score, which is a different thing from the scarcity model it's named after.

It appears in both the Bitcoin and Ethereum Heatmeters, at a weight of 4 out of 100 in each. On the Ethereum Heatmeter it is one of seven inputs that stand in for Bitcoin — there is no separate Ethereum issuance-scarcity model behind it, so it carries Bitcoin's halving-driven signal into the Ethereum composite rather than measuring anything Ethereum-native. In neither heatmeter does it decide the score alone — it's one voice, at a modest weight, among fourteen.

08

Common questions

What is the Stock-to-Flow model?

A scarcity-based valuation model, popularized by the pseudonymous analyst PlanB in 2019, that divides Bitcoin's existing circulating supply (the stock) by how much new supply is mined per year (the flow). A higher Stock-to-Flow ratio means new issuance is small relative to what already exists — Bitcoin's halvings cut the flow in half roughly every four years, which mechanically doubles the ratio each time, assuming supply otherwise holds steady.

How does Blockchain Decoded calculate the S2F ratio and model price?

We work out circulating supply by walking forward from Bitcoin's first block in 210,000-block halving eras (at roughly 144 blocks a day), rather than counting it on the chain live. Annual issuance is the current block reward times 52,500 (an approximation of the blocks mined in a year). S2F is supply divided by that issuance. The model price then applies the formula PlanB fitted to Bitcoin's own history — market cap = e^14.6 × S2F^3.3 — divided by circulating supply to give a price per coin.

Does Blockchain Decoded's risk score measure how far price has strayed from the S2F model price?

No. The model price and its percentage gap from the actual price are both worked out and shown, but the 0-100 risk score does not use that gap anywhere in its formula. It is a weighted blend of four unrelated factors: where price sits within its own trailing 2-year range (45%), how fast price has moved over the last 30 periods (25%), how widely it has swung over the same window (20%), and where the date sits in the 4-year halving cycle (10%). It's a price-behaviour score that happens to live on the Stock-to-Flow page, not a scarcity-valuation score.

Why is the Stock-to-Flow model controversial?

Because its central claim — that scarcity alone, expressed as a ratio, can predict Bitcoin's price through a single fixed formula — treats a supply schedule as if it were the only driver of value, with no role for demand. During the 2021-2022 drawdown, actual price fell well below the floor the original 2019 model had projected, which many analysts and PlanB's own critics point to as a real-world falsification of the model's predictive claims, not just a rough patch.

How does the risk score account for halvings, if not through the deviation?

Through one of the four weighted factors directly: position within the four-year halving cycle carries a 10% weight, scored on a curve that rises from 0 at the start of a cycle to 100 around the three-quarter mark, then falls back toward 30 as the next halving approaches. It is the smallest of the four weights — momentum and price position carry far more influence over the final number.

Is Stock-to-Flow part of the Bitcoin Heatmeter?

Yes — it's one of 14 weighted inputs in both the Bitcoin and Ethereum Heatmeter composites, at a weight of 4 out of 100 on each. On the Ethereum Heatmeter it stands in for Bitcoin rather than measuring anything Ethereum-native, since there's no separate Ethereum issuance-scarcity model behind it — the halving schedule this model runs on is Bitcoin's alone.

09

Related guides

Others in on-chain — What the blockchain itself says about holders, miners, and what people paid for their coins.

Every indicator we track — the full glossary.

See where it stands right now

Everything above is the model on its own terms. The live chart plots the scarcity model against actual price, so you can see the deviation between the two, with our price-behaviour risk score on top. That score is also one of the fourteen inputs behind the Bitcoin Heat Meter.