Hello Robert,
I've been looking at one particular example of correlations between 3 assets:
0.9976, 0.9417, 0.9333 (AB, AC, BC)
A and B is almost 100% correlated. It makes sense that the largest weight should go to C. Additionally, the correlations are quite high and based on a lot of data, therefore the uncertainty is relatively low.
According to the original handcrafting method, the correlations are rounded to [0.9 0.9 0.9] and the optimal weights are [0.333 0.333 0.333]
However with the new method we get the following (500 data points ~10 years):
>>> apply_min_weight(optimised_weights_given_correlation_uncertainty(three_asset_corr_matrix(labelledCorrelations(0.9976, 0.9417, 0.9333)), 500))
array([0.21472084, 0.28415071, 0.50112846])
This option returns quite different weights [0.21 0.28 0.50] than the original equal weights result.
Which one would you prefer and why?
P.S.
If we cluster A B and C hierarchically into two groups, we'd get one group [A B] and the other [C]. Then we'd get the weights [0.25 0.25 0.5]. This shows how sensitive the method is to the clustering outcomes.
(I have encountered many more and better examples in my research, where a slight difference in clustering causes not so slight differences in weights)