I'm wanting to calculate the covariance between two portfolios $A$ and $B$ which are allocated to assets $X_i$ (where $i \in \left[1, 2, \cdots, N \right]$) with weights $\vec{w_A}$ and $\vec{w_B}$, respectively. Assuming I already have the covariance estimated between these assets ($\Sigma_X$), I know I can calculate the covariance between these two portfolios ($\Sigma_{A,B}$) using the bilinearity property of covariance, where $W$ is the $2 \times N$ matrix containing $\vec{w_A}$ and $\vec{w_B}$ in its rows:

$$\Sigma_{A,B} = W\Sigma_{X}W^T.$$

However, there may be a slight issue with regard to the use of log returns or simple returns. The best practice for calculating $\Sigma_X$ would be to do so using log returns of the underlying assets. However, taking the weighted sum over those log returns will not result in the log return of the portfolio since log returns do not accumulate across assets. Bilinearity depends on the new random variables ($A$ and $B$) being linear combinations of the underlying random variables ($X_i$). This means that I either need to calculate $\Sigma_X$ using simple returns of the assets, or I need to accept that I am accumulating log returns across assets.

The optimal scenario would be if there is a way to convert a covariance estimated via log returns into a covariance estimated via simple returns (and vice versa). That way I could still calculate $\Sigma_X$ correctly, convert it into a geometric covariance estimation, apply bilinearity to get the portfolio geometric covariance estimation, and then convert that back into a log covariance estimation. I haven't come across such a transformation.

For the record, I'm doing these calculations with daily observations, so I recognize that the difference in these two calculations will probably be quite small as log returns approximate simple returns when they are small.

What's the best practice?


1 Answer 1


Suppose we start with two stocks $A$ and $B$, and we assume they are lognormally distributed. Specifically, let's assume:

$$\log(A_t) - \log(A_{t-1}) = X \sim N(\mu_A, \sigma^2_A)$$ $$\log(B_t) - \log(B_{t-1}) = Y \sim N(\mu_B, \sigma^2_B)$$ $$\text{Cor}(X, Y) = \rho$$

Then, at time $t$, with all terms conditional on $A_t$ and $B_t$, we have: $$A_{t+1} = A_te^{\mu_A + \sigma_A X}$$ $$B_{t+1} = B_te^{\mu_B + \sigma_B Y}$$

$$\text{Cov}\Bigg( \frac{A_{t+1} - A_t}{A_t}, \frac{B_{t+1} - B_t}{B_t}\Bigg)$$ $$= \frac{\text{Cov}(A_{t+1}, B_{t+1})}{A_tB_t}$$

$$ \frac{1}{A_tB_t}\Big(\mathbb{E}(A_tB_te^{\mu_A + \mu_B + \sigma_A X + \sigma_B Y}) - \mathbb{E}( A_te^{\mu_A + \sigma_A X})\mathbb{E}( B_te^{\mu_B + \sigma_B X})\Big)$$

$$= \mathbb{E}(e^{\mu_A + \mu_B + \sigma_A X + \sigma_B Y}) - \mathbb{E}(e^{\mu_A + \sigma_A X})\mathbb{E}(e^{\mu_B + \sigma_B X})$$

$$= e^{\mu_A + \mu_B + \frac{1}{2}\sigma^2_A + \frac{1}{2}\sigma^2_B + \sigma_A\sigma_b\rho} - e^{\mu_A + \mu_B + \frac{1}{2}\sigma^2_A + \frac{1}{2}\sigma^2_B }$$ $$= e^{\mu_A + \mu_B + \frac{1}{2}\sigma^2_A + \frac{1}{2}\sigma^2_B }(e^{\sigma_A\sigma_B\rho} - 1)$$

(Note that for other assumptions on the distributions of the log returns, you can try other similar analyses.)

All this said, and this is a matter of opinion, I'm not sure I'd bother going through this. For most cases, the difference between the two estimates of covariance is going to be relatively small as you noted, and the problem of properly estimating the distribution (or even just mean, covariances, etc) of the log-returns is likely much larger.

  • 2
    $\begingroup$ I would just stick with arithmetic. As Rylan brought up, there are bigger issues to deal with. In fact, I deal with intraday so I can't speak from experience but I'm not so certain that using log returns for daily returns is general practice ? I would think those returns might be too large which will worsen the approximation ? Hopefully, someone else can comment on that. $\endgroup$
    – mark leeds
    Sep 16, 2023 at 5:13

Your Answer

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

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