If I measure daily returns by simple percent change, a -50% day then a +50% day (or vice versa) results in a true -25% total change, but the average makes it look like you would expect a total 0% change.

Is there a way to measure returns differently that eliminates this effect? For context I have two series of returns and the one with a lower average daily return ends up with a higher total return and I suspect this phenomenon is to blame.

Currently I measure daily return by: (priceDay2-priceDay1)/priceDay1

  • 2
    $\begingroup$ Try geometric average $\endgroup$
    – AlRacoon
    Jun 18 at 14:44
  • $\begingroup$ @AlRacoon I just went through my code again and now the geometric mean is giving good results, thanks! $\endgroup$
    – user708873
    Jun 18 at 22:49

2 Answers 2


Take the log return between days.

  • 3
    $\begingroup$ Just don't forget to transform log returns back into simple returns in the end. $\endgroup$ Jun 19 at 0:52

What does not work with the geometric mean?

The geometric mean is computed with the following formula: $${\displaystyle \left(\prod _{i=1}^{n}x_{i}\right)^{\frac {1}{n}}={\sqrt[{n}]{x_{1}x_{2}\cdots x_{n}}}}$$

which is equivalent to the arithmetic mean in logscale (see Wikipedia):

$${\displaystyle \exp {\left({{\frac {1}{n}}\sum \limits _{i=1}^{n}\ln x_{i}}\right)}}$$

A quick implementation in Julia looks like this.

geom = ((1-0.5)*(1+0.5))^(1/2)-1

enter image description here

The inaccuracy is due to decimal precision of floating point math, see for example this answer.

While I think taking logs is generally useful, I do not really think using log returns is particularly meaningful (easy to interpret) in this example. While it is true that the sum of log returns in each period corresponds to the log return over the entire period, I am not sure what you can do with this result, unless you transform it back into the geometric mean as shown above.

If you simply use the log returns, you get the following values: enter image description here

However, as you wrote, the true change is $-25\%$ and not $\approx -28.76\%$. Also, each period change ($-69.31\%$ and $+40.54\%$) is far from the actual change of $\pm 50\%$.

On the other hand, the geometric mean provides you with the constant growth rate (return) that yields the correct final amount.

  • $\begingroup$ Thanks for the detailed overview. What I meant by it doesn't work is that the geometric mean of returns gave a smaller value for the portfolio with higher total returns, which seems wrong to me. Maybe it's an implementation error on my side so I'll go through it again and post the code soon. $\endgroup$
    – user708873
    Jun 18 at 22:18
  • 1
    $\begingroup$ Just went through my code and cleaned it up. I'm not sure what the issue was, but the geometric mean is now giving good results. Thank you $\endgroup$
    – user708873
    Jun 18 at 22:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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