Thanks for the example. It is exactly like my comment. Look at your weights after the first period. Are they really 80% and 20%?
Lets say you have £100 to invest.
- £80 is invested in product A. That turns into £81 after the first period and £79.38 ($81*(1-0.02)$) after the second period. Total return is $79.38/80 = -0.775 \% $
- £20 is invested in product B -> 20.1 -> 20.25075: 1.25375%
(after your first period, you have £101.1 and 81 as well as 20.1 respectively which is a "new" weight of 80.1187% and 19.8813% - which will be needed for (absolute) return contribution analysis)
- Individually you earned (weighted by start value) $-0.775\% *0.8 + 1.25375\% *0.2 = -0.36925\%$
- Total value is $79.38+20.25075 = 99.63075$ which results in a decline of $-0.36925\% $ from 100.
You cannot simple use the same weights, as that is no longer true after the first period (any period).
You can find some basics about rebalancing on Investopedia.
Edit 1
You cannot compute it like you attempt to. You simple assume weights are identical across periods. That just does not work. The geometric mean computes an average return spread across all periods. You do not need to weight that every period. You simply know your start weight (which is same as start value if multiplied with total portfolio cash) and you spread the average across all periods (two here, which is why you need to compute $Start_{value}*(1+geom)^2$ for every asset). There is no need to use weights - the geometric mean is the $n_{th}$ root of $n$ products of the values over $n$ periods.
If you want portfolio total return at any period, you can use the logic in blue. It gives the weight at any period, and the sum of it divided by initial total portfolio is your return at any period.
Edit 2
(Absolute) return contribution analysis (not computed against a benchmark) identifies the contributions of portfolio components to the total return of the portfolio. It uses weights and returns of the portfolio in each period.
$$R_{period}= \sum_{i=1}^{n} w_iR_i$$ where $w_i$ is the weight of the security in each period, computed as value of security divided by total value. In this example here:

You cannot do the geometric mean of the individual securities absolute return contributions, as these use different weights, whereas the geometric mean is simple the average of returns in each period from start to end (see formulas above). For the portfolio as a whole it works because you always have the same weight in this case (1).
I apologize for the excel sheets that are arguably not well done because I quickly did them during work breaks. I hope they still help.