Comparing the Means and Standard Deviations of Log and Simple Returns
Summary
The post compares statistics for log returns and simple returns, using normally distributed simulated log returns and converting them to simple returns. Its central clarification is that exponentiating the sample mean of log returns does not produce the mean simple return. If log returns are normal, the simple return mean includes a contribution from variance; for small mean and volatility, the answer approximates the difference as half the variance.
The accepted answer derives the simple-return standard deviation from the lognormal distribution and gives a small-parameter approximation. It concludes that which standard deviation is larger depends on the mean and volatility, and interprets the posted simulation as showing a slightly larger transformed log standard deviation. A second answer notes that log returns add across time and align with normal-return models when prices are lognormally distributed. These comparisons depend on the assumed distribution and approximations; the code’s exponentiation of a standard deviation is not itself the usual way to convert a volatility measure.
Key ideas
- Exponentiating the mean log return does not yield the mean simple return.
- For normally distributed log returns, the mean simple return includes a variance adjustment.
- The simple-return standard deviation follows from the variance of a lognormal variable.
- The relative standard deviations depend on the return distribution’s mean and volatility.
- Log returns add across periods and are convenient when modeling compounded returns.
Tags
Full text
# Difference between statistical properties of log returns and simple returns
# Difference between statistical properties of log returns and simple returns
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?
## Answer by Richi Wa (score 3, accepted)
https://quant.stackexchange.com/a/76684
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! :)
## Answer by quantinho (score 2)
https://quant.stackexchange.com/a/76682
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.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.