How to calculate the log return of portfolio?

Suppose that we have five trades each day with these returns ($$R_{day,trade}$$) and we have 300 days in total:

$$R_{1,1}$$, $$R_{1,2}$$, $$R_{1,3}$$, $$R_{1,4}$$, $$R_{1,5}$$

$$R_{2,1}$$, $$R_{2,2}$$, $$R_{2,3}$$, $$R_{2,4}$$, $$R_{2,5}$$

For each day, we calculate the return of that day by weighting these returns (these weights are coming from outside of the portfolio and summation of these weights are 1 for each day), so for days 1 and 2, the returns are $$R_{1}$$ and $$R_{2}$$ and later for calculating the average return of this portfolio for 300 days we calculate the average of these returns ($$R_{1}$$, $$R_{2}$$, ..).

1. Is this procedure correct?

2. Now, suppose that we want to have log returns. There are two ways to reach log returns. First, calculate the log return of each trade $$(ln(Pt/Pt−1)$$ and continue the mentioned steps. The other one is when we reach the daily returns, we use $$Rn=ln(1+R)$$ for calculating daily log returns, and the average is the log return of the portfolio (daily).

• Yes. you are correct. But what will you be doing or saying about the result? May 23 at 15:48
• @RalphWinters I have different portfolios with different weights to compare them later. What about part 2? Do you have any idea about the correct way of calculating this portfolio's log(return)? May 23 at 16:04
• Your example shows you made 5 trades on one day so that is your return for the day. What is the purpose of the weighting after the trades? May 23 at 17:07
• @RalphWinters This is a zero net-investment strategy. I'm just showing one leg here. May 23 at 17:21

Now this is a farily basic question, but since I see professionals having trouble with this all the time, let us go through it

Simple returns aggregate nicely (linearly) across trades but not time, whereas log-returns aggregate nicely across time but not trades. So when you take arithmetic average of simple returns across time, you make a minor travesty...

1. The "return" of the returns, simple vs log

If $$S$$ denotesthe asset value, then the simple return between day $$d-1$$ and day $$d$$ is $$R_d := S_d/S_{d-1} - 1$$, and log-return $$r_d := \ln(S_d/S_{d-1})$$, such that the relation $$r_d=\ln(1+R_d) \iff R_d=\exp(r_d)-1$$ holds.

1.1. Why log-returns are Normal, and simple returns are "abnormal"...

If the asset price $$S$$ is Log-normally distributed (e.g. stocks), then log-returns are Normally distributed and additive. That is, if $$S_d=S_{d-1}\exp(\nu \Delta t + \sigma \sqrt{\Delta t}Z_d)$$, then

\begin{align} R_d&=\exp(\nu \Delta t + \sigma \sqrt{\Delta t}Z_d)-1, \\ r_d&=\nu \Delta t + \sigma \sqrt{\Delta t}Z_d. \end{align}

That is, log-returns are nicely Normally distributed, whereas simple returns are shifted Log-normally distributed, and less nice...

1.2. Averaging log-returns makes sense across time, simple returns do not

The arithmetic mean of the daily log-returns is an unbiased estimator of the drift term $$\hat{\nu}\Delta t:=\frac{1}{n}\sum_{d=1}^n r_d$$, whereas for the simple returns, we would have to do a geometric mean, which will be a biased estimate of the drift term. Arithmetic mean of the simple returns does not have the same practical meaning in this case.

2. Relationship therapy between simple and log returns

To simplify notation let $$X_{day}^{(trade)}:=X_{day,trade}$$, and let $$X_{day}$$ be aggregated over trades, and $$X^{(trade)}$$ be a trade aggregated over time. Aggregation over trades and time is $$X$$.

\begin{align} R_d &= \sum_{i=1}^m w_i R_d^{(i)}, \\ r_d :&= \ln(1 + R_d) = \ln(1 + \sum_{i=1}^m w_i R_d^{(i)}) = \ln \left(\sum_{i=1}^m w_i \exp(r_d^{(i)})\right), \end{align} where we can see that simple returns linearly aggregate across trades, whereas log-returns do not.

\begin{align} R^{(i)} &= \prod_{d=1}^n (1+R_d^{(i)})-1, \\ r^{(i)} &:= \ln(1 + R^{(i)}) = \sum_{d=1}^n \ln(1+R_d^{(i)}) = \sum_{d=1}^n r_d^{(i)}, \end{align} where we can see that simple returns do not linearly aggregates across trades, whereas log-returns do.

2.3. Across trades and across time

Now in order to get the total return for the portfolio, you have two options

1. Aggregate across trades, then time
1. Aggregate across trades in simple returns $$R_d=\sum_{i=1}^m w_i R_d^{(i)}$$ for all $$d$$ays.
2. Convert to log-returns $$r_d := \ln(1+R_d)$$.
3. Aggregate (sum) across time $$r=\sum_{d=1}^n r_d$$.
4. Optionally convert back to simple return via $$R=\exp(r)-1$$.
2. Aggregate across time, then trades
1. Aggregate across time in log-returns $$r^{(i)}=\sum_{d=1}^n r_d^{(i)}$$.
2. Convert to simple returns $$R^{(i)} := \exp(r^{(i)})-1$$.
3. Aggregate across trades in simple returns $$R=\sum_{i=1}^m w_iR^{(i)}$$.
4. Optionally convert back to log-returns via $$r=\ln(1+R)$$.

Now it is unfortunately common to see people that purely work with log-returns by linearly aggregating across trades and time. Implicitly they are assuming that $$r_d^{(i)} \approx R_d^{(i)}$$, which is true for small returns. However, when this is not the case, or when summing many small returns e.g. return over large horizons, this might cause large errors.

• Great answer (+1). Quick point on 1.1: Simple returns, $R_d=\frac{S_d}{S_{d-1}}-1$, are not log-normally distributed. Gross returns, $\frac{S_d}{S_{d-1}}$ are log-normally distributed. Once you subtract a constant, it's no longer log-normal (think of the support of the distribution). Of course, all of the analysis depends on prices being log-normally distributed to start with. May 30 at 14:29
• @Kevin: nice catch! Edited to shifted log-normal. Thanks for letting me know! May 30 at 14:55