Geometric Brownian Motion models | Vose Software

Geometric Brownian Motion models

See also: Time series introduction, Time series modeling in finance, Autoregressive models, Markov Chain models, Birth and death models, Time series in ModelRisk

Geometric Brownian Motion time series are the most simple and commonly used for modeling in finance.

Consider the formula:

It says that the variable's value changes in one unit of time by an amount that is Normally distributed with mean m and variance s2. The Normal distribution is a good first choice for a lot of variables because we can think of the model as saying (from Central Limit Theorem) that the variable x is being affected additively by many independent random variables. We can iterate the equation to give us the relationship between xt and xt+2:

and generalise to any time interval T:

This is a rather convenient equation because a) we keep using Normal distributions, and b) we can make a predictions between any time intervals we choose. The above equation deals with discrete units of time but can be written in a continuous time form, where we consider any small time interval Dt:

The Stochastic Differential Equation (SDE) equivalent is:


where dz is called a generalised Wiener process called variously the 'perturbation', innovation', or 'error', and e is a Normal(0,1) distribution. The notation might seem to be a rather unnecessary complication, but when you get used to the SDEs they give us the most succinct description of a stochastic time series. A more general version of the above equations is:


where g and f are two functions. It is really just shorthand for writing:


The equation allows the variable x to take any real value, including negative values, so it would not be much good at modelling a stock price, interest rate or exchange rate for example. However, it has the desirable property of being memoryless, i.e. to make a prediction of the value of x some time T from now we only need to know the value of x now, not anything about the path it took to get to the present value. We can model the return of a stock:




There is an identity known as Itô's lemma which says that for a function F of a stochastic variable X:


Since dS/S = d(log[S]) we can rewrite, using F(S) = log[S]:


Integrating over time T we get the relationship between some initial value St and some later value  St+T:

where rT is the return of the stock over the period T. The Exp[ ...] term in this equation means that S is always >0 so we still retain the memoryless property which corresponds to some financial thinking that a stock's value encompasses all information available about a stock at the time so there should be no memory in the system.

The return r of a stock S is the log of the fractional change in the stock's value. For stocks this is a more interesting value than the stock's actual price because it would be more profitable to own 10 shares in a $1 stock that increased by 6% over a year than 1 share in a $10 stock that increased by 4%, for example.

This last equation is what we call the GBM model: 'the 'geometric' part comes because we are effectively multiplying lots of distributions together (adding them in log space). From the definition of a Lognormal random variable, if ln[S] is Normally distributed then S is Lognormally distributed, so Equation for St+T is modelling it as a Lognormal random variable. From the LognormalE equations you can see that St+T has a mean given by:


hence m is also called the exponential growth rate, and a variance given by:


To forecast from a GBM time series use the VoseTimeGBM function. You can optionally provide an array with timestamps allowing you to forecast with unequal time increments.

To forecast with a GBM time series fitted to data, use VoseTimeGBMFit.

You can also just obtain the best fitting parameters m and s of a GBM model from spreadsheet data, for this ModelRisk has the VoseTimeGBMFitP array function.

The spread of possible values in a GBM increases rapidly with time. For example, the following plot shows 50 possible forecasts with S0 = 1, m = 0.001 and s = 0.02:


Plot of 50 possible scenarios with a GBM(m=0.001, s= 0.02) model with starting value of 1.

Mean reversion, discussed next, is a modification to GBM that progressively encourages the series to move back towards a mean the further it strays away. Jump Diffusion, discussed after that, acknowledges that there may be shocks to the variable resulting in large discrete jumps. ModelRisk has functions for fitting and projecting GBM and GBM + Mean Reversion and/or Jump Diffusion. The functions work with both returns r and stock prices S.

GBM with mean reversion

The long-run time-series properties of equity prices (amongst other variables) is, of course, of particular interest to financial analysts. There is a strong interest in determining whether stock prices can be characterised as random walk or mean reverting processes because this has an important effect on an asset's value. A stock price follows a mean reverting process if it has a tendency to return to some average value over time, which means that investors may be able to forecast future returns better by using information on past returns to determine the level of reversion to the long-term trend path. A random walk has no memory, which means that any large move in a stock price following a random walk process is permanent and there is no tendency for the price level to return to a trend path over time. The random walk property also implies that the volatility of stock price can grow without bound in the long run: increased volatility lowers a stock's value, so a reduction in volatility due to mean reversion would increase a stock's value.

For a variable x following a Brownian motion random walk, we have the SDE encountered before:

For mean reversion this equation can be modified as follows:

where a > 0 is the speed of reversion. The effect of the dt coefficient is to produce an expectation of moving downwards if x is currently above m and vice versa.  Mean reversion models are produced in terms of S or r:

known as the Ornstein-Uhlenbeck process, and this was one of the first models used to describe short term interest rates where it is called the Vasicek model.  The problem with the equation is that we can get negative stock prices; modelling in terms of r however:

keeps the stock price positive. Integrating this last equation over time gives:

which is very easy to simulate. The plots on the right show some typical behaviour for rt. Typical values of a would be in the range of 0.1 to 0.3.

of sample GBM series with mean reversion for different values of alpha (m = 0, s = 0.001)

A slight modification to this is called the Cox-Ingersoll-Ross or CIR model (Cox et al, 1985), again used for short-term interest rates, and has the useful property of not allowing negative values (so we can use it to model the variable S) because the volatility goes to zero as S approaches zero:


 Integrating over time we get:


and Y is a non-central Chi-Squared distribution with  degrees of freedom and non-centrality parameter . This is a little harder to simulate since you need the uncommon non-central Chi-squared distribution in your simulation software, but it has the attraction of being tractable (we can precisely determine the form of the distribution for the variable St+T) which makes it easier to determine its parameters using maximum likelihood methods.

GBM with jump diffusion

Jump diffusion refers to sudden shocks to the variable that occur randomly in time. The idea is to recognise that beyond the usual background randomness of a time series variable there will be events that have a much larger impact on the variable, e.g. a CEO resigns, a terrorist attack takes place, a drug gets FDA approval. The frequency of the jumps is usually modelled as a Poisson distribution with intensity l so that in some time increment T there will be Poisson(lT) jumps. The jump size for r is usually modelled as Normal(mJ, sJ) for mathematical convenience and ease of estimating the parameters. Adding jump diffusion to the discrete time GBM equation for one period we get the following:

If we define k = Poisson(l), this reduces to:

or for T periods we have:


which is easy to model with Monte Carlo simulation and easy to estimate parameters for by matching moments, although one must be careful to ensure that the l estimate isn't too high (e.g. > 0.2) because the Poisson jumps are meant to be rare events, not form part of each period's volatility. The following plot shows a typical jump diffusion model giving both r and S values and with jumps marked as circles:


Sample of a GBM with Jump Diffusion with parameters m = 0, s = 0.01, mJ = 0.04, sJ = 0.2, and l = 0.02.

GBM with jump diffusion and mean reversion

You can imagine that if the return r has just received a large shock there might well be a 'correction' over time which brings it back to the expected return m of the series. Combining mean reversion with jump diffusion will allow us to model these characteristics quite well and with few parameters. However, the GBM with jump diffusion model

for mean and variance no longer applies, particularly when the reversion speed is large because one needs to model when within the period the jump took place: if it was at the beginning of the period, it may well have already strongly reverted before one observes the value at the period's end.

The most practical solution, called Euler's method, is to split up a time period into many small increments. The number of increments will be sufficient when the model produces the same output for decision purposes as any greater number of increments.

ModelRisk implements the GBM with both jump diffusion and mean reversion in the VoseTimeGBMJDMR function.

Read on: Autoregressive models