Given a time series of simple daily returns, how will mean and stddev of log returns and simple returns? I think, mean of simple returns will be higher due to volatility drain. But confused about stddev.

I tried following experiment:

mu = 0.0005
sigma = 0.01
for _ in range(10):
  log_rets = np.random.normal(mu, sigma, 10000)
  simple_rets = np.expm1(log_rets)

  log_mean    = np.expm1(log_rets.mean())
  simple_mean = simple_rets.mean()
  print(f"Mean: {log_mean:.6f} vs {simple_mean:.6f}")

  log_std    = np.expm1(log_rets.std())
  simple_std = simple_rets.std()
  print(f"Std : {log_std:.6f} vs {simple_std:.6f}")
Mean: 0.000430 vs 0.000480
Std : 0.010075 vs 0.010030

Mean: 0.000646 vs 0.000695
Std : 0.009959 vs 0.009916

Mean: 0.000481 vs 0.000531
Std : 0.010110 vs 0.010064

Mean: 0.000394 vs 0.000442
Std : 0.009882 vs 0.009840

Mean: 0.000604 vs 0.000655
Std : 0.010152 vs 0.010110

Mean: 0.000342 vs 0.000393
Std : 0.010067 vs 0.010021

Mean: 0.000399 vs 0.000449
Std : 0.010039 vs 0.009996

Mean: 0.000579 vs 0.000628
Std : 0.009954 vs 0.009912

Mean: 0.000409 vs 0.000459
Std : 0.010004 vs 0.009959

Mean: 0.000205 vs 0.000255
Std : 0.009993 vs 0.009946

Any pointers/clarification will be helpful?


2 Answers 2


I try to translate your code to random variables, then things might be clear. Assume $X$ is normal with $X\sim N(\mu,\sigma^2)$. This is your log-return. Then $Y = \exp(X)$ is lognormal with expectation $$E[Y] = \exp(\mu + \sigma^2/2)$$ and variance $$V[Y] = (\exp(\sigma^2)-1) \exp(2\mu + \sigma^2)$$ (see e.g., https://en.wikipedia.org/wiki/Log-normal_distribution).

Then what you calculate as log_mean is
$$ \exp(E[X])-1 = \exp(\mu)-1 \approx 1 + \mu + 1/2 \mu^2 -1 = \mu + 1/2 \mu^2 $$ and the simple_mean is $$ E[\exp(X)-1] = E[\exp(X)]-1 = \exp(\mu + \sigma^2/2)-1 \approx \mu + \sigma^2/2 + 1/2 \left( \mu^2 + 2 \mu \sigma^2/2 + \sigma^4/4 \right) $$ Assuming that $\mu$ and $\sigma$ are small numbers we compare $ \mu + 1/2 \mu^2 $ to $ \mu + 1/2 \mu^2 + \sigma^2/2$.

In summary your simple_mean should be approximately $\sigma^2/2$ bigger than log_mean.

For the variance we could do similar calculations as above. Let me first know how the above works for you? What you see is that only the approximation of the exponential function $$ \exp(x) \approx 1 + x + x^2/2 $$ and the moments of the lognormal were used.

EDIT: Let us compare the std terms.

We have log_std which is $$ \exp(\sqrt{V[X]})-1 = \exp( \sigma )-1 \approx \sigma + 1/2 \sigma^2. $$ Question here: why do you apply $\exp(x)-1$ to the standard deviation? Remark: with $\sigma= 0.1$ but estimated from the sample this result is consistent with the values that you posted.

The term for simple_std is more complex:

$$ \sqrt{V[\exp(X)-1]} = \sqrt{V[\exp(X)]} = ((\exp(\sigma^2)-1) \exp(2\mu + \sigma^2))^{1/2}. $$ Then a well-known term re-appears $$ \sqrt{(\exp(\sigma^2)-1)} \exp(\mu + 1/2\sigma^2), $$ which can be approximated as follows (considering terms of squares only): $$ \sqrt{ 1+ \sigma^2 -1 } (1 + \mu + \sigma^2 + \mu^2 + \mu \sigma^2 ). $$ By simplifying the first terms we get $$ \sigma (1 + \mu + \sigma^2 + \mu^2 + \mu \sigma^2). $$ Again keeping only at most quadratic terms we get $$ \sigma + \mu \sigma. $$

So, I think the comparison of the standard deviations depends in the specific values for $\mu$ and $\sigma$. In your example $\sigma^2/2 = 2.5 * 10^{-5}$ and $\mu\sigma = 5 * 10^{-6}$. Thus, left aside sampling errors, log_std must be a bit higher - which is true! :)

  • $\begingroup$ I apply exp(x)−1 to the standard deviation to bring it back the units to percentage terms. Shouldn't it be done? Otherwise, std(simple_returns) will be in different units, right? @richi-wa? $\endgroup$ Sep 15 at 14:18
  • $\begingroup$ @quantpadawan I agree ... also the calculation shows that the transform makes sense. $\endgroup$
    – Richi Wa
    Sep 15 at 17:19

The log return has some nice mathematical properties that can be helpful in some modeling. Here's some properties that could help:

  • Log returns are more useful if you want to take compounding into account (easier to calculate)
  • If prices are log normally distributed then log return are normally distributed (probably most important use case)
  • If return are close to zero then log return is a better approximation of actual return (think base points situation).
  • Big positive number has less impact to log function and large negative number has large impact (so if your portfolio drops 50% you need to make 100% to break even)

Most of the above comes from the logarithmic properties.

  • $\begingroup$ If return are close to zero then log return is a better approximation of actual return (think base points situation). A clarification: the approximation error of using log-returns to approximate simple returns is smaller when simple returns are close to zero then when they are far from zero. In the latter case, the approximation error can be quite large. But note that this statement compares log-returns to log-returns, not log-returns to simple returns. $\endgroup$ Sep 15 at 13:45

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.