Skip to content
All library documents

Choosing Price Models for Bitcoin from Return Distribution and Volatility

Article Quant Q&A · Author: clbj23

Summary

The document outlines a diagnostic approach to selecting a model for Bitcoin price paths. It recommends first examining historical returns with a histogram and looking for heavy tails, which may indicate jumps or volatility that changes over time. It then suggests checking how volatility varies with the underlying price: volatility proportional to price supports considering geometric Brownian motion, while other patterns may call for a different process or added features.

For heavy-tailed returns, the response proposes adding jumps or allowing volatility to vary. It also recommends checking whether prices tend to revert toward a possibly changing mean; if so, an Ornstein–Uhlenbeck process may be worth considering. These are candidate-model selection heuristics, not a demonstrated fit or forecast. The document provides no comparative tests, parameter estimates, or evidence that a particular process describes Bitcoin over the stated sample. Model choice should therefore be treated as empirical and conditional on the historical diagnostics.

Key ideas

  • Inspect the historical return distribution before choosing a price process.
  • Heavy tails can motivate models with jumps or time-varying volatility.
  • Geometric Brownian motion may fit when volatility scales with the underlying price.
  • Mean-reverting price behavior may motivate an Ornstein–Uhlenbeck process.
  • The proposed diagnostics guide model selection but do not validate a model or forecast accuracy.

Tags

Full text
# Bitcoin dynamics - C++ Simulation


# Bitcoin dynamics - C++ Simulation












I would like perform a simulation of Bitcoin future prices given a sample of the 4 past years (2014-2018). My problem is that I do not know what model to use! For common stocks I used the geometric Brownian motion dynamics which I implemented in C++, but I am not sure if this model also applies for assets like Bitcoin. Does anybody know how to model this kind of asset and how to implement it in C++ ?

Every contribution highly appreciated! Thank in advance!

## Answer by Magic is in the chain (score 3, accepted)

https://quant.stackexchange.com/a/45256

It is a big topic but here is a simplistic recipe! The starting point would be to check the distribution of the historical returns. Histogram would give an idea of how the shifts are distributed. Have a look at the tails, if the tails are fat or don’t ‘tail-off’ then that would be indicative of jumps or non constant volatility.

If you decide that a simple arithmetic or geometric Brownian motion is sufficient, then you can analyse the volatility by the level of underlying. If the volatility happened to be proportional to the level of the underlying then geometric brownian would be more appropriate. And if you are worried about fat tails then you can add Jump to the dynamics or introduce non-constant volatility.

You can also have a look at the historical price series to see if the series is mean reverting, meaning if the price frequently reverts back to some mean which could be non constant, then it would be better to model it as Ornstein Uhlenbeck process.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.