As a follow up of my previous question, I am now simulating the GBM step by step for $n$ steps.
I am using the following implementation for the simulation:
$$S_{t+1} = S_t \exp \left[ \left(\mu-\frac{\sigma^2}{2}\right) \Delta t + \sigma \sqrt{\Delta t} Z_t \right], ~ Z_t \sim \mathcal{N}(0,1)$$
Each step represents a unit of time so $\Delta t = 1$.
I use the following MATLAB code:
function paths = gbm_exp(mu,vol,s0,nbr_steps,nbr_paths)
shocks = randn(nbr_steps,nbr_paths/2);
shocks_ant = [shocks, -shocks];
paths = zeros(nbr_steps+1,nbr_paths);
paths(1,:) = s0;
for i=1:nbr_paths
for j=1:nbr_steps
paths( j + 1, i ) = paths( j, i ) * exp( (mu - vol^2/2) + vol * shocks_ant( j, i ) );
end
end
As you can see, I use antithetic path to try to reduce the overall variance.
The thing is, again, I should have $\mathbb{E}(S_t) = S_0 ~ \forall t$ if I set $\mu=0$.
So I do the following:
>> test=gbm_exp(0,.3,100,300,2000);
>> mean(test(end,:))
This means that I simulate 300 steps, with $\sigma=0.3$, $\mu=0$ and $S_0 = 100$.
The mean I get though, is something quite small, around 20 on average. So, not at all the excpected 100.
So, I tried increasing my number of paths to 200k and I get a mean of roughly 40 on average.
So I'm suprised by this behavior, I would expect it to converge much more quickly, especially with antithetic paths.
Did I miss something obvious again?