Simulation of Stock Price in Matlab

Matlab → Simulation → Brownian Motion → Stock Price

The stock price $S$ following geometric Brownian motion is given by

$dS=\mu Sdt+\sigma Sdz$

This is geometric Brownian motion stochastic differential equation, and the discrete-time version of the equation is

$\Delta S=\mu S\Delta t+\sigma S\varepsilon \sqrt{\Delta t}$

So, the change in stock price from time 0 to $t$ is given by

$S(t)-S(0)=\mu S\Delta t+\sigma S \sum_{i=1}^{i=n}\varepsilon_i \sqrt{\Delta t}$

Stock price simulation in Matlab
t=1; n=500; dt=t/n;
x=0:dt:t;
dz=sqrt(dt)*randn(1,n);
s=15; %Initial stock price
mu=0.1; sigma=0.3;
ds=mu*s*dt+sigma*s*dz;
st=s+cumsum(ds);
plot(x,[s,st])

In the next example, stock prices are simulated in Matlab with different $\mu$ and $\sigma$ when the stock prices are assumed to follow geometric Brownian motion stochastic differential equation.

Stock price simulation using different mu and sigma
t=1; n=500; dt=t/n;
x=0:dt:t;
dz=sqrt(dt)*randn(1,n);
s=20; %Initial stock price
mu1=0.1; sigma1=0.2;
mu2=0.2; sigma2=0.3;
mu3=0.3; sigma3=0.45;
ds1=mu1*s*dt+sigma1*s*dz;
ds2=mu2*s*dt+sigma2*s*dz;
ds3=mu3*s*dt+sigma3*s*dz;
st1=s+cumsum(ds1); st2=s+cumsum(ds2); st3=s+cumsum(ds3);
plot(x,[s,st1],'r',x,[s,st2],'g',x,[s,st3],'b')

Posted