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!