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
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
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 + sr = B * f + s
where:
r = matrix of returns B = matrix of factor exposures f = matrix of factor returns and s = matrix idiosyncratic returns
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
mu = r * w.T
However, tothe 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?
wouldWould 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) ??
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!