# Sample path simulation using two random variables

I was wondering if there is a way of generating a sample path of a Geometric Brownian Motion using two independent standard normal random variables instead of just one.

The exact scheme that uses one standard normal random variable

$$\hat{S}_{t_{i+1}}= \hat{S}_{t_{i}} \text{exp}\left( (r- \frac{\sigma^2}{2})(t_{i+1}-t_i)+ \sigma \sqrt{t_{i+1}-t_i} Z \right), \ i=0, \dots, n-1$$.

I want to know if there is an exact scheme that uses multiple independent normal random variables. I am asking this specifically for a barrier-forward start type option which has a "barrier check" at say a time $$t$$.

The idea I had for this case is to have $$Z_1$$ simulate $$S_{t}$$ and then have an independent $$Z_2$$ simulate the final $$S_T$$ but I am not sure.

When you simulate a sample path of a standard Brownian motion, you are generating a sequence $$(B_t)_{t \in \mathbb{\Pi}}$$ where $$\mathbb{\Pi} := \{t_0, ..., t_n\}$$ is your time partition. You can view that sequence as $$n$$ draws of the same random variable, although no one could say that this isn't also 1 draw each of $$n$$ independent normal random variables.

This is true by definition. You can divide your sample path however you want and name/define things so that as many random variables as you wish get involved, but besides being a huge waste of time, I do not see the point.

EDIT

Say we use a Euler discretization. You split a month into a grid using 1000 time steps. For each sample path, you need $$(Z_t)_{t=1,...,1000}$$ where each $$Z_t \sim N(0, 1/1000)$$.

On your computer, you could do:

B = np.random.normal(loc=0, scale=1, size=1000 )
Z = np.sqrt(1/1000)*B


Or

B1 = np.random.normal(loc=0, scale=1, size=500 )
B2 = np.random.normal(loc=0, scale=1, size=500 )
B  = np.hstack( (B1,B2) )
Z = np.sqrt(1/1000)*B


You can split those steps in as many vectors as you like. Each vector is a set of draws from a random normal distribution. You can treat this as many draws of 1 r.v., 500 draws each of 2 r.v., etc. It's just a question of definitions.

• So in the case of using just one RV per sample path, the idea is just use that same single RV per discretisation step in the sample path? Then, I can also use, say 2. I am just not sure how I can use 2 instead of 1; for example, using a different Z at each time step is clear but how can I use just 2 per sample path? Commented May 2, 2020 at 19:26
• You're probably over-thinking this. Let me give you an example in an edit. Commented May 2, 2020 at 19:27
• It's a big waste of time to explicit this. The only time you'd use it is if you need to patch together two simulations to save time. Commented May 2, 2020 at 19:38
• Except you wrote np.sqrt(1000) but shouldnt that be 1/1000 with the way you defined the variance? Commented May 3, 2020 at 9:15
• Yes, that should be 1/1000 Commented May 4, 2020 at 2:18