0
$\begingroup$

I'm trying to get a better grasp on the suitability of Geometric Brownian Motion as a model for asset prices, and I've stumbled across a hurdle which I can't seem to get over. Assuming GBM, the asset price is given by

$ S_t = S_0 \exp\{ (\mu - \frac{1}{2}\sigma^2)t + \sigma W_t \} $,

which implies that daily log-returns are normally distributed:

$ \log(\frac{S_{t+1}}{S_t}) \sim \mathcal{N}(\mu - \frac{1}{2}\sigma^2, \sigma^2) $.

Now my problem is: how would you go about verifying this with empirical data? If I compute the sample mean of log-returns with real data, then I have to already assume the model in order to extract the drift $ \mu $ by subtracting half the variance. Is there a way to get the drift term directly from the data, without assuming the model? Or is the drift simply a theoretical quantity postulated in the SDE

$ dS_t = S_t (\mu dt + \sigma W_t) $

which defines GBM? I.e. does the drift correspond to any computable statistical quantity?

EDIT: here is my attempt to gain clarity by simulation:

T = 1
N = 1000
S0 = 1
mu = -0.00028117*252
sigma = 0.008723*252
seed = 1
f, g = f_g_black_scholes(lamda = mu, mu = sigma)
numpaths = 10000
paths = pd.DataFrame()
for k in range(1, numpaths):
    t, S, W = euler_maruyama(seed=seed+k, X0=X0, T=T, N=N, f=f, g=g)
    S = pd.DataFrame(S)
    paths = pd.concat([paths, S], axis = 1)

final_price = paths.iloc[-1, :]
sigma_sim = np.std(np.log(final_price))
mu_sim = np.mean(np.log(final_price)) + 0.5*sigma_sim**2

The drift and volatility I estimated from S&P 500 data, and I made use of this implementation of the Euler-Maruyama solver to numerically generate sample paths. The results I obtain are:

mu = -0.070855
mu_sim = -0.010407
sigma = 2.198196
sigma_sim = 2.221657

As you can see there is still a significant discrepancy between the input drift and the result of the simulation. How should I make sense of this?

$\endgroup$
4
  • $\begingroup$ Do you know how to test for distributional assumptions, eg kolmogorov Smirnov Test etc? $\endgroup$ Mar 30, 2022 at 14:10
  • $\begingroup$ Yes, my problem is very specifically with backing out $\mu$ by simulation $\endgroup$ Mar 30, 2022 at 14:57
  • 4
    $\begingroup$ It takes a looong time for the simulated time series observed drift to converge to the theoretical drift (as you can verify by computing the standard error of estimate for the observed drift). This is a well known issue, see Merton: On Estimating the Expected Return on the Market (1980). $\endgroup$
    – nbbo2
    Mar 30, 2022 at 15:37
  • $\begingroup$ @noob2 thank you for your comment, I would greatly appreciate it if you could further elaborate on it mathematically. I will be sure to check the reference. $\endgroup$ Mar 30, 2022 at 15:50

1 Answer 1

1
$\begingroup$

All you can do is fit the values of the parameters of a model you have already assumed.

Now my problem is: how would you go about verifying this with empirical data?

As Kermittfrog mentioned, after fitting a particular model, you can use test to check whether your initial assumptions make sense or not.

If I compute the sample mean of log-returns with real data, then I have to already assume the model in order to extract the drift $\mu$ by subtracting half the variance. Is there a way to get the drift term directly from the data, without assuming the model? Or is the drift simply a theoretical quantity postulated in the SDE

Parameters are quantities associated with a model in this case. For example consider normal and lognormal distributions, in both you have a $\mu$ and a $\sigma$, but depending on the model you assume you'll get different quantities from your fit, because this parameters mean different things (no matter on the label or greek letter you use to describe them).

$\endgroup$
2
  • $\begingroup$ But if I solve the SDE numerically, I should be able to calculate $ \mu $ directly, right? $\endgroup$ Apr 1, 2022 at 7:06
  • $\begingroup$ Hi: I can't follow the code that well ( not a python person ) but it looks you are taking the standard deviation of the prices at the end of each path ? A) Is that what you are doing and B) Shouldn't you be taking the standard deviation of the prices over each path rather than the prices at the end ? $\endgroup$
    – mark leeds
    Apr 1, 2022 at 12:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.