Re: Simulate and plot geometric brownian motion
- To: mathgroup at smc.vnet.net
- Subject: [mg122791] Re: Simulate and plot geometric brownian motion
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Thu, 10 Nov 2011 06:55:48 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201111091122.GAA10781@smc.vnet.net>
Try this:
Manipulate[SeedRandom[rr];
BlockRandom[
Module[{dB, dt = N[T/steps]},
dB = RandomReal[NormalDistribution[0, Sqrt[dt]], {paths, steps}];
ListLinePlot[
Transpose[
FoldList[#1 + #1*( \[Mu] dt + \[Sigma] #2) &,
ConstantArray[S0, {paths}], Transpose[dB]]],
DataRange -> {0, T}]]], {{steps, 50, "steps"}, 10, 500,
1}, {{T, 1, "time to expiry"}, 0.3, 3}, {{\[Mu], 0.3, "drift"}, 0,
1}, {{\[Sigma], 0.3, "volatility"}, 0,
1}, {{paths, 10, "number of paths"}, 1, 100,
1}, {{S0, 100, "starting price"}, 80, 120}, {{rr, 0, ""},
Button["new sample", rr = RandomInteger[2^64 - 1]] &},
SaveDefinitions -> True]
On 9 Nov 2011, at 12:22, Priyan Fernando wrote:
> Hi
>
> Wonder if you could please help me simulate and plot geometric brownian
> motion (GBM)
>
> E.g. dS = mew * S dt + sigma * S *dX
>
> What I am trying to do is generate in Mathematica the process for a
> stock/share price based on GBM
>
> Therefore:
> dS is change in share price
> S is the share price (e.g. let S start from 100)
> dt is the time step (e.g. in discrete version we could have dt=1/52 so
> timestep is 1 week)
> mew is the drift (e.g. mew = 5%)
> sigma is the volatility (e.g. sigma = 10%)
> dX is brownian motion (e.g. in discrete version, dX = Sqrt(dt) * N(0,1))
>
> What I am trying to obtain is pairs (x,y) where x is the time step and y is
> the share price. And then to be able to plot this.
>
> Thanks for your help,
> Priyan.
- References:
- Simulate and plot geometric brownian motion
- From: Priyan Fernando <priyan.fernando@gmail.com>
- Simulate and plot geometric brownian motion