Modeling Bitcoin’s Price with a Decomposition of Stock-to-Flow

Decomposing the stock-to-flow into parts reveals growth that diminishes faster than predicted by time-based models.

Quantodian
Quantodian: Tracking Bitcoin
15 min readFeb 6, 2020

--

By Quantodian, a collaboration of InTheLoop and Harold Christopher Burger

How fast is bitcoin’s price going to increase in the long-term? A popular model using stock-to-flow as input forecasts non-diminishing returns of eight to ten-fold every four years. An alternative, more conservative model is based upon time as the predictor variable (see here and here), showing a continuing price growth for bitcoin as well, but at a rate diminishing with time. In this paper, we see if we can shed some light on this huge contrast in the future price trajectory of these two models.

Until today, both stock-to-flow and time have been shown to closely correlate with the historic price of bitcoin, but the two models differ wildly in their forecasts of bitcoin’s price. This difference is so pronounced that in the coming few years at least one of these models will be falsified, because the fit as dictated by that model will no longer apply. In this paper, we examine what is driving this difference. We decompose the input variable of the stock-to-flow model and see that only one of the resulting components generates non-diminishing price growth. We show that if this component is allowed to be weighted separately in order to best fit bitcoin’s realized price history, it steers price in the opposite direction than the other components. This confirms bitcoin’s observed diminishing returns. It also indicates that the conservative time-based model might be somewhat too bullish, and thus the stock-to-flow model seems much too bullish. This doesn’t say that bitcoin is not a great asset to invest in, because exceptional returns (compared to many other asset classes) are still supported for years to come. But it puts the non-diminishing exponential growth phase of the stock-to-flow model to question.

Time-based model

The motivation of a time-based model is that historic price versus time until now appears linear in a log-log plot. Price is modeled as:

The time-based price model for bitcoin.

where time refers to the time passed since a given event such as the genesis block. The variables a and b are found via linear regression as to best fit bitcoin’s realized price data.

Stock-to-flow model

The stock-to-flow model has been described in Modeling Bitcoin’s Value with Scarcity. Stock-to-flow is programmatically laid down in the bitcoin protocol and the paper proposes to use it as a measure of scarcity that drives price. Like the time-based model, the motivation of the stock-to-flow model is that the historic price versus stock-to-flow until now appears linear in a log-log plot. The model equation is:

Bitcoin’s stock-to-flow price model.

where S2F refers to the stock-to-flow value, and c and d are found via linear regression.

Comparing the models

Superficially, the two models look very similar: both predict the price of bitcoin based on the logarithm of the underlying variable. The difference in the models comes solely from the use of a different input variable, with the stock-to-flow model producing much more bullish forecasts than the time-based model as can be observed in this chart.

Bitcoin’s time-based price model and stock-to-flow model compared to bitcoin’s realized price.
Chart 1: The actual and the modeled price of bitcoin-based on 1. time, 2. theoretical S2F, plotted on logarithmic time and price axes.

Decomposing the stock-to-flow variable

Every ten minutes on average, a bitcoin block is mined, and a number of new bitcoins are put into circulation. The emission schedule has been defined ahead of time, such that the number of newly created bitcoins in each new block is cut in half every four years. The number of already existing coins is referred to as “stock”, whereas the flow of newly created coins is referred to as “flow”. The ratio of newly created coins over the total stock of existing coins is referred to as the stock-to-flow ratio, or S2F for short:

The stock-to-flow ratio is the ratio of already existing coins divided by the number of coins created per year.

Since the stock of existing coins keeps increasing, and the number of newly mined coins is divided in half every four years, S2F makes steep steps:

Time (in years) and bitcoin’s stock-to-flow in a log-log plot.
Chart 2: The scaled time signal and the theoretical stock-to-flow signal plotted on logarithmic time and value scales.

Michael P. Frank proposed to model stock-to-flow using an analytical formula which disregards the step shape, but otherwise approximates it well. He then decomposes this analytic S2F representation using a Taylor series expansion of time, the first component of which is time itself. We borrow his approach and call this approximation the analytical S2F.

Michael P. Frank’s “analytical stock-to-flow” compared to bitcoin’s theoretical stock-to-flow.
Chart 3: Same as Chart 2 with the analytical S2F signal added.

The “steps” variable

The analytical S2F approximates the S2F ratio well. The residual part of the S2F that is not explained by the analytical S2F we will call “steps”:

The “steps” variable: The part of the theoretical stock-to-flow that is not explained by the analytical stock-to-flow.

The S2F ratio is then exactly given by:

Bitcoin’s theoretical S2F is equal to the analytical S2F multiplied by the “steps” variable.
Bitcoin’s stock-to-flow, analytical stock-to-flow, and the “steps” variable.
Chart 4: Same as Chart 3 with the “steps” signal added.

Let’s take a closer look at Michael P. Frank ’s analytical S2F.

Analytical flow

The daily flow of new coins can be approximated by:

The flow of newly mined bitcoins can be approximated using an analytical expression.

where c1= 4*365 and c2 = 50 * 6* 24. The constant c1 comes from the fact that bitcoin halvings occur approximately every four years, whereas constant c2 comes from the fact that the original block reward was 50 new bitcoins per block (every ten minutes).

The analytical daily flow of new coins at day d=0 is:

The initial block reward is 50 bitcoins per block. The analytical expression for the flow concurs.

new bitcoins per day, which corresponds to 50 bitcoins mined every ten minutes, as expected. The daily flow then decreases, e.g. after four years:

The analytical expression for bitcoin’s flow halves the block reward every four years.

the flow is exactly halved, also as expected. The analytical flow is a smooth approximation of the theoretical flow, which behaves in a step-wise fashion.

Analytical Stock-to-flow

The stock, or total supply of coins on a given day after the genesis block can be found by integrating the daily flow over days:

The stock of bitcoins can be found by integrating the expression for bitcoin’s flow over time.

The analytical S2F is equal to the analytical stock divided by the analytical flow:

The analytical S2F is equal to the analytical stock divided by the analytical flow.

Simplifying:

The simplified expression for bitcoin’s analytical stock-to-flow.

We now have a smooth approximation of the S2F values, as already proposed by Michael P. Frank.

The analytical S2F can be decomposed using a Taylor series expansion:

The Taylor series approximation of bitcoin’s analytical stock-to-flow.

It is interesting that the first component of the Taylor series expansion is proportional to d (time in days), whereas the subsequent terms are proportional to higher powers of d. We will express the sum of the Taylor series components that have a higher power of d using a single variable, the “higher powers” variable:

The analytical S2F is equal to the sum of 1. time in years 2. an expression containing higher powers of time (in days).

The analytical S2F can therefore be expressed as the sum of time in years plus a “higher powers” variable that is proportional to higher powers of d.

The fact that time is the first component of the Taylor-series expansion of S2F means that time is a good initial approximation of S2F. The time-based and S2F-based price models are therefore inherently linked.

The “aggressive” variable

Alternatively, the analytical S2F can be expressed as the product of two terms: time, and a second variable which we will call “aggressive”.

The analytical S2F can be expressed as the product of 1. time in years, and 2. the “aggressive” variable.

where the aggressive variable is given by:

The “aggressive” variable expressed analytically.

At first, the analytical S2F is adequately approximated by the time variable, but the two variables diverge later on. This is expected since time is the first component of the Taylor series expansion of the analytical S2F. The divergence between time and the analytical S2F is due to the “aggressive” variable:

The analytical S2F is equal to the product of 1. time and 2. the “aggressive” variable.

Plugging the “aggressive” variable into the previous expression for S2F gives:

Bitcoin’s S2F is equal to the product of three components: 1. time, 2. the “aggressive” variable, 3. the “steps” variable.

In a log-log plot, the “aggressive” variable has an upward curvature. It grows slowly at first, and then faster and faster; it ramps up quickly.

Time, S2F, analytical S2F, the “aggressive” variable, and the “steps” variable.
Chart 5: Same as Chart 4 with the “aggressive” signal added.

Reformulating the S2F model

Using the above, the stock-to-flow price model:

Bitcoin’s stock-to-flow price model.

can be exactly rewritten as:

The S2F model for bitcoin rewritten using the decomposition of S2F into three components.

which in turn is exactly equivalent to:

The S2F model for bitcoin rewritten using the decomposition of S2F into three components.

or:

The S2F model for bitcoin rewritten using the decomposition of S2F into three components.

Reformulating the S2F model in this way illustrates the link between the S2F-based and time-based model (which is inherent due to the Taylor-series approximation). The two remaining components are:

  • “Aggressive”, describing S2F’s accelerating growth.
  • “Steps”, describing S2F’s step-like behavior.

S2F model variations

As an experiment, we will allow each component of S2F to receive a different weight, so that the original S2F price model:

The S2F model for bitcoin rewritten using the decomposition of S2F into three components.

becomes:

Bitcoin’s decomposed S2F model: Each of the three inputs can be weighted independently.

where d1, d2, and d3 are found by multiple linear regression and need not necessarily be equal to each other. We call this model the “decomposed S2F model”.

We will also consider a “decomposed S2F model without steps”:

Bitcoin’s decomposed S2F model without steps: The same as the decomposed S2F model, but the “steps” variable is omitted.

We now have five models to compare:

  1. the S2F model:
Bitcoin’s original stock-to-flow price model.

2. the analytical S2F model (AS2F):

Bitcoin’s “analytical” stock-to-flow price model.

3. the decomposed S2F model (DS2F):

Bitcoin’s decomposed stock-to-flow model.

4. the decomposed S2F model without steps (DS2F without steps):

Bitcoin’s decomposed stock-to-flow model without steps.

5. the time-based model:

Bitcoin’s time-based price model.

For each of these models, the parameters are found via ordinary least squares (OLS), using bitcoin’s price history since prices have been publicly listed by exchanges (17th of July 2010). Some anecdotal prices can be found for the year 2009, but these data points have not been used in our regressions.

Finding the estimated weights for the different input variables is performed using the expression:

where y is a vector containing the price history (one point per day), and X is a design matrix which has one column containing only 1s and the remaining columns contain the values of the input variables. We used Python/Numpy, but Matlab, Excel, or other tools with statistical capabilities can be used instead.

We obtain the following results:

  1. the S2F model:
The stock-to-flow model with parameter values found via regression.

2. the analytical S2F model (AS2F):

The analytical stock-to-flow model with parameter values found via regression.

3. the decomposed S2F model (DS2F):

The decomposed stock-to-flow model with parameter values found via regression.

4. the decomposed S2F model without steps (DS2F without steps):

The decomposed stock-to-flow model without steps with parameter values found via regression.

5. the time-based model:

The time-based model with parameter values found via regression.

Two things should be noted:

  • In the two decomposed S2F models, each component receives a different weight. This means that it is possible to obtain a better fit to the data by allowing each component of the S2F variable to be weighted differently.
  • The “aggressive” variable is negatively weighted in both decomposed S2F models. This is different from the S2F model, in which the “aggressive” component receives a positive weight (the same weight as for the other two S2F components).

The modeled price data of these five models along the realized price data on the same graph in log-log scale is:

Five different models for bitcoin’s price: one time-based model and four stock-to-flow models.
Chart 6: The actual and the modeled prices of bitcoin based on: 1. time, 2. theoretical S2F, 3. analytical S2F, 4. decomposed S2F without steps and 5. decomposed S2F, plotted on logarithmic time and price scales

The time-based model is a straight line in a log-log plot, as explained here.

The S2F model at first grows slower than the time-based model, but then increases its growth rate much faster than the time-based model. Starting at the next (third) halving, the growth rate stays approximately constant at roughly ten-fold returns every four years. The precise numbers for the S2F model are somewhat different here to those reported elsewhere because we have used theoretical S2F values.

The analytical AS2F model displays the same properties as the S2F model, except that it does not contain steps. The AS2F model is curved upwards long-term, compared to the time-based model.

The two decomposed DS2F models are “bent” in the opposite direction of the S2F and AS2F models. This is due to the fact that the “aggressive” input variable is given a negative weight in the DS2F models, whereas it has a positive weight in the S2F and AS2F models.

The decomposed DS2F with steps model contains downward sloping periods. This is due to the “steps” input variable, which also contains downward sloping periods. Once the overall slope of the model decreases sufficiently, the “steps” variable starts to dominate, and the slope of the model price is locally negative.

On a semi-log scale, similar observations are made:

Bitcoin’s realized price and five price models in a semi-log plot.
Chart 7: Same as Chart 6 with a linear time-axis.

The time-based model has perpetually diminishing growth. The S2F and AS2F models at first have diminishing growth but then transition to non-diminishing growth. According to these models, growth should currently be non-diminishing:

Growth rates predicted by S2F and time-based models. AS2F predicts non-diminishing returns at the time of writing.
Chart 8: The growth rate of bitcoin price based on 1. time, 2. analytical S2F, 3. decomposed S2F without steps.

The decomposed DS2F models both have growth rates which are even more diminishing than those of the time-based model.

A final observation is that the early price data of 2009 is better fit by the models which have the growth which is the most diminishing, i.e. the decomposed DS2F models better fit the early price data than the S2F and AS2F models.

Let’s see what the models forecast even further in the future:

The decomposed S2F models forecast ultimately decreasing bitcoin prices.
Chart 9: Same as Chart 8 with the time-axis expanded further to the right.

The S2F, AS2F, and time-based models do not present any particular surprises. However, the two decomposed DS2F models forecast decreasing bitcoin prices. This is due to the negative weight assigned to the “aggressive” input variable.

We have seen that the “aggressive” variable at first grows slowly, but then ramps up quickly. This is due to its mathematical expression which contains an exponential:

The “aggressive” variable expressed analytically.

Exponential growth eventually overtakes any other form of growth. If the exponential input variable is given a negative weight, the projected price will at some point decrease (and finally reach 0). A similar but opposite effect occurs if the exponential growth component is given a positive weight: positive exponential growth is non-diminishing. This means that any model that contains a positive exponential growth component without brakes will eventually be dominated by this component. This is the reason the S2F and AS2F models forecast non-diminishing growth, which is quite unrealistic.

Understanding what happens when each input variable is allowed to be weighted independently provides novel insight into the likely trajectory of bitcoin’s price. If a component such as the “aggressive” variable is added to the time-based model, the regression uses this component in order to slow down, or to decelerate the growth of bitcoin’s price. In contrast, in the S2F price model, the “aggressive” variable, as an intrinsic part of the stock-to-flow measure, is used to accelerate the price growth of bitcoin compared to the time-based model.

How do the models evolve over time?

We have seen that the decomposed stock-to-flow models forecast growth that is slower than both the time-based model and the stock-to-flow model. Has this always been the case? To answer this question, we will play time-traveler and look at how the parameters produced by the regression method changed over time. We begin by fitting the model parameters at the beginning of bitcoin’s price history, and then add more and more price data.

The evolution of the parameters tells us about the general growth trend:

  • A positive weighting of the “aggressive” variable tells us that the price data appears to be growing faster than is possible with the time-based model.
  • A negative weighting of the “aggressive” variable tells us the opposite: growth appears to be slowing down compared to what the time-based model would predict.

Parameters of the decomposed DS2F model without steps

Let us use the decomposed DS2F model without steps first and examine the evolution of the weightings of the “time” and the “aggressive” variables:

The ”aggressive” variable has been negative during most of bitcoin’s history.
Chart 10: The weighting factors of the components of the ‘decomposed S2F without steps’ model.
  • There was a period at the beginning of bitcoin’s price history, lasting from about the end of 2010 to the end of 2011 during which the price grew faster than adequately explained by the time-based model. The “aggressive” component therefore got a positive weighting.
  • During the year 2014, the same seemed to be the case. Price growth appeared faster than could be explained by the diminishing returns of the time-based model, hence the “aggressive” component got a positive weighting.
  • During the rest of bitcoin’s price history, the opposite has been the case: price growth appears to be slower than described by the diminishing returns of the time-based model.
Since early 2015, the “aggressive” variable is negative.
Chart 11: Same as Chart 10 with the y-axis expanded.

This situation has remained unchanged since the beginning of the year 2015, in spite of a major bull market in the year 2017.

This experiment reinforces our conclusion that the time-based model appears to be somewhat too bullish. The price data is better described using a component that slows down the growth of the time-based model.

Parameters of the decomposed DS2F model (with steps)

Let’s repeat the above experiment for the fully decomposed DS2F model with steps. We now have a third parameter value to plot: the weighting of the “steps” component. The “steps” variable starts out at 1 and gradually decreases until the first halving (around the end of 2012) at which point it suddenly gets a value above 1.

The parameter values of the time, “aggressive”, and “steps” variable change over time.
Chart 12: The weighing factors of the components of the ‘decomposed S2F’ model.
  • The “steps” variable is given a positive weight starting in 2013, indicating that it is indeed useful in modeling the price. The “steps” variable helps to fit the bull markets, and it might be causing the co-integration that is so heavily studied for the stock-to-flow model.
  • For the weighting of the “aggressive” variable we observe virtually the same effect as in the decomposed DS2F model without steps. The weighting is negative, with the same exceptions.
The “aggressive” variable is negative since the beginning of 2015. The “steps” variable has been mostly positive.
Chart 13: Same as Chart 12 with the y-axis expanded.

These two experiments show that the price not only has diminishing growth, but that the price fits better with a model that has growth that diminishes faster than with the time-based model. This observation has remained unchanged since the beginning of 2015.

Conclusion

These experiments indicate that bitcoin’s price growth diminishes faster than indicated by the time-based power model and much faster than indicated by the stock-to-flow ratio based power model. This is in line with other findings of diminishing returns, which have been observed in all of bitcoin’s history.

The reason for the unleashed price growth of the S2F model seems to be due to the presence of the “aggressive” component of the S2F variable itself. Exponentials are dangerous when used without brakes, because exponentials ultimately catch up with any other kind of growth or shrinkage.

By allowing a separate weight to each of the components of S2F, we gave our decomposed models the freedom to grow at any rate, from slower than the time-based model to faster than the stock-to-flow based model. From all these possibilities and based on price history alone, the objective multiple regression method selected its parameters such that price growth towards the future is slower than both models (time and stock-to-flow) predict.

You might say that it is a crazy idea to pull S2F apart in the way that we did. In fact, we agree with you. But crazy ideas often lead to new insights. The main insight that we got from this exercise is that the aggressive part of the S2F signal causes bitcoin’s price to explode in the not-so-distant future, which we seriously think will not happen. If you read this far, you might agree with us that the current data doesn’t support that. The decomposition gives us handles to identify bitcoin’s price evolution better, instead of rigidly believing the popular narrative that ‘scarcity drives price’.

We will keep a close eye on bitcoin’s price in the coming months and years, and we will keep running these and other models on the then actual price history to see if our conclusions remain intact in the future.

Acknowledgments

We thank Michael P. Frank for his work on deriving analytical stock-to-flow, Giovanni Santostasi and BitcoinEconomics for initial discussions, and we thank you for reading.

--

--