# 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? May 2 '20 at 19:26
• You're probably over-thinking this. Let me give you an example in an edit. May 2 '20 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. May 2 '20 at 19:38
• Except you wrote np.sqrt(1000) but shouldnt that be 1/1000 with the way you defined the variance? May 3 '20 at 9:15
• Yes, that should be 1/1000 May 4 '20 at 2:18