Skip to content
All library documents

Using Factor Covariance in Mean-Variance Portfolio Optimization

Article Quant Q&A · Author: firstworldchild

Summary

The document asks how to extend mean-variance optimization to a Fama-French factor framework. It describes returns as factor exposures multiplied by factor returns, plus asset-specific returns, and asks how to represent portfolio risk when several factors contribute. One answer gives a factor-model covariance structure: portfolio risk combines covariance among factor exposures and factor returns with asset-specific variance.

A second answer distinguishes the roles of the models. Factor sensitivities can be used to estimate security returns, after which a covariance matrix can be calculated and supplied to a mean-variance optimizer. The discussion offers no empirical test or optimized portfolio results. It cautions that this approach depends on two model-based inputs, and that factor-return forecasts and estimated covariances can be noisy, making resulting portfolio weights sensitive to estimation errors.

Key ideas

  • A factor covariance model represents asset risk through factor exposures, factor covariance, and specific variance.
  • Factor-based return estimates can be passed into a conventional mean-variance optimization process.
  • The portfolio covariance matrix remains necessary even when returns are modeled with factors.
  • Combining factor forecasts with mean-variance optimization compounds sensitivity to estimation error.

Tags

Full text
# Extend mean-variance optimisation to fama five factor


# Extend mean-variance optimisation to fama five factor












I'm new to quant finance, and as I'm not a mathematician, I am using python to try an understand it.

There are a number of blogs on the internet which explain mean variance optimisation, but no-one extends these examples to the fama french factors and optimising it under that model of the world.

This is what I am trying to understand.

Mean Variance Optimisation:

I know that in matrix notation, the following is true for mean-variance:

```
mu = w * r.T
sigma = np.sqrt(w * C * w.T)

where: 
w = matrix of weights
r = matrix of returns
C = variance covariance matrix of r
```

You then try to maximise return, or minimise variance by adjusting weights in an optimisation function.

Under the factor view of the world, `r = B * f + s` where:

```
r = matrix of returns
B = matrix of factor exposures
f = matrix of factor returns and 
s = matrix idiosyncratic returns
```

Under this scenario, returns would be again

```
mu = r * w.T
```

However, the sigma doesn't seem to take into account the fact there is more than one factor at play describing risk. How do you extend mean-variance to account for additional factors?

Would it be something like finding a sigma for each factor and its covariance to the return and then combining them?

```
sigma = np.sqrt(factor1_weight * Covariance(return,factor1) * factor1_weight) * np.sqrt(factor2_weight * Covariance(return,factor2) * factor2_weight) ??
```

Any help would be appreciated, and perhaps an explanation as well.

Thanks so much!

## Answer by firstworldchild (score 1)

https://quant.stackexchange.com/a/45311

It seems like you can model covariance as a factor model. I found it in Quantative Equity Portfolio management.

```
CoVar = (weights * B * V * B.T * weights.T) + (weights * D * weights.T)
```

Where: R = Returns Matrix, B = Asset Exposure to Factors, V = Factor Covariance, Matrix D = specific variance diagonal matrix.

## Answer by Chris (score 0)

https://quant.stackexchange.com/a/45243

You're kind of mixing models.

Mean-variance optimization based in MPT suggests there's a trade-off between risk and return with a collection of asset correlations that provides the best 'risk-adjusted' return.

The Fama-French model is an extension of APT that asserts security return is an artifact of security sensitivity to three (or five) factors. Namely, we can determine a security's return given its historical sensitivity to various equity factors +/- some epsilon.

The returns included in MV are typically simply an input, as vol or the covariance matrix, which is used to output an 'optimal' set of weights per the objective function.

You could conceivably calculate your security returns using whatever FF model you like using the form you described, and then subsequently calculate a covariance matrix explicitly using the resulting security returns. You could then use those returns and covariance matrix within your MV routine.

That said, depending on how you're planning to use this, this is kind of a noise on noise exercise though. It goes without saying your resulting weights are dependent now on TWO models, neither of which is particularly robust as far as actual trading is concerned. For instance, FF5 is better than a lot of things for predicting security returns, but you're likely to see wild deviations from actual daily or monthly return streams. And using MV for portfolio construction decisions is highly dependent on quality of inputs, one of which, the covariance matrix, is also highly sensitive to inputs (eg, returns).

HTH

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.