# Quick guide

## 0. Geometric Brownian motion (GBM)

Formulas: $$$$\Delta S = \mu S \Delta t + \sigma S \epsilon \sqrt{\Delta t}$$$$
$$$$S_{t + \Delta t} = S_t \exp \left[ \left( \mu - \frac{\sigma^2}{2} \right) \Delta t + \sigma \epsilon \sqrt{\Delta t} \right]$$$$

## 1. the VBA code

### 1.1 Generate epsilon

Write values to WS, column Eps

Code 1: Sub GenerateEpsilon random drawings from N(0,1) distribution
Option Explicit
Const Num As Long = 100

Sub GenerateEpsilon()
Dim i As Long
Dim App As Application: Set App = Application

VBA.Randomize

With Range("Eps")
For i = 0 To Num
.Offset(i, 0).Value = App.Norm_S_Inv(Rnd)
Next i
.Resize(Num + 1, 1).NumberFormat = "0.000000"
End With

End Sub
'


### 1.2 Generate GBM trajectories

Write values to WS, columns GBM.1, and GBM.2

Code 2: Sub demoGBM generate GBM from equations 1 and 2
Sub demoGBM()
Dim i As Long
Dim Mu As Double
Dim Sigma As Double
Dim Dt As Double

Mu = 0.05
Sigma = 0.2
Dt = 1 / CDbl(Num)

' equation 1
[GBM.1].Offset(0, 0) = 20
For i = 1 To Num
[GBM.1].Offset(i, 0) = [GBM.1].Offset(i - 1, 0) + _
Mu * [GBM.1].Offset(i - 1, 0) * Dt + _
Sigma * [GBM.1].Offset(i - 1, 0) * [Eps].Offset(i, 0) * (Dt ^ 0.5)
Next i
[GBM.1].Resize(Num + 1, 1).NumberFormat = "0.000000"

' equation 2
[GBM.2].Offset(0, 0) = 20
For i = 1 To Num
[GBM.2].Offset(i, 0) = [GBM.2].Offset(i - 1, 0) * VBA.Exp( _
(Mu - (Sigma ^ 2) / 2) * Dt + _
Sigma * [Eps].Offset(i, 0) * (Dt ^ 0.5) _
)
Next i
[GBM.2].Resize(Num + 1, 1).NumberFormat = "0.000000"

End Sub