Let's say I have a factor model which I am using for Performance Attribution. I'd like to separate returns from alpha vs. returns from exposure to various risk factors.
For each date, the factor model decomposes the returns of a security into its daily alpha (i.e. idiosyncratic component not explained by the factor model), as well as the daily return contribution from its component factors. The table below is a mock example with 1-factor and five non-overlapping periods. For simplicity let's assume the 5 periods span one year.
Notice that the 'arithmetic annual return' is 10.34% (11.03/10 - 1). Or equivalently via compounding, it is (1+security return period 1) * (1+security return period 2) ... (1+ security return period 5) - 1 = 10.34%
I'd like to generate an annualized view of the performance attribution. In other words, I'd like to de-compose the 10.34% as the sum of : annualized Alpha + annualized Returns from Factor Exposures + annualized Interaction Term contribution. (The interaction effect measures the combined impact of manager selection and allocation decisions. Algebraically, it is a consequence of binomial expansion: $$\textrm{Price(t+1)} = \textrm{Price}(t)*[ 1 + \alpha ]*[ 1 + \textrm{net factor contribution}]$$
How do I map the matrix of daily alphas, daily factor returns, and daily security returns into a sum of annualized alpha component + annualized factor return component + annualized interaction effect? I imagine there is a clever matrix algebra solution to this problem.
2-period solution
Notation:
Security Return in period 1 = $R_1$; Alpha in period 1 = $\alpha_1$; Net Factor Contribution in period 1 = $NFC_1$
We know by definition: $R_1$ = $\alpha_1$ + $NFC_1$ and $R_2$ = $\alpha_2$ + $NFC_2$
and Annual arithmetic return is = (1 + $R_1$) * (1 + $R_2$) - 1
Expanding terms we can find we can express annual arithmetric return as the sum of component annualized alpha, annualized net factor returns, and annualized interaction terms:
Annual arithmetic return (as a sum of the three components) =
( $\alpha_1$ + $\alpha_1$$\alpha_2$ + $\alpha_2$ ) + ( $NFC_2$ + $NFC_1$ + $NFC_1$*$NFC_2$ ) + ( $NFC_1$$\alpha_2$ + $\alpha_1$$NFC_2$ )
The same solution in matrix algebra terms:
vector1 = (1 + $R_1$) = (1 + $\alpha_1$ + $NFC_1$)
vector2 = (1 + $R_2$) = (1 + $\alpha_2$ + $NFC_2$)
The annual arithmetic return is then the sum of the elements of the 3x3 matrix resulting from the outer cross-product of vector1 and vector2 - 1. The upper left portion of the matrix (see below) consists of the alpha contributions, and the top-right,bottom-left, and bottom-right contain the factor return contributions which can now be grouped with another matrix operation:
$$ \begin{matrix} 1 & a{2} & NFC{2}\\ a{1} & a{1}*a{2} & a{1}*NFC{2}\\ NFC{1} & NFC{1}*a{2} & NFC{1}*NFC{2}\\ \end{matrix} $$
So -- what is a computationally clever way to scale this to 251 periods (assuming 251 trading days = 1 year) while grouping terms into the sum of 3 annualized components?