There was still a lot of time remaining before the new November article is published, I started to think how to solve the interpolation problem.
I could not reproduce the method used to produce the candidate matrices and their weights (you gave a clue that it was shrinkage, but the shrinkage factor appeared to be all over the place without any codeable rhyme or reason).
After many experiments I stumbled upon a quite simple method, based on a kernel smoothing idea. It consists of 3 steps:
1. Round correlations as per handcrafting method:
if c <= 0.25, then it's 0
if c > 0.7, then it's 0.9
otherwise it is 0.5
2. Match the rounded correlations to a candidate matrix (it will be an exact match obviously) to get weights
3. Do steps 1 and 2 for the neighbouring correlation values. Average the resulting weights. That's it.
For example, say we have correlations [a b c]
We iterate through neighbouring values (using some sensible step size, like 0.05):
x = [a - 0.2; a + 0.2]
y = [b - 0.2; b + 0.2]
z = [c - 0.2; c + 0.2]
and do steps 1 and 2 for [x y z]
The result looks much more sensible than the (1/Euclidean distance) method from the previous post. This is the same experiment of interpolating [0 x 0] where x runs from 0 to 0.99:
View attachment 243527
This basic method is akin to using a very naive kernel smoother (taking simple average of all neighbouring points up to distance of 0.2). I have tried a more "academic" approach - using the Gaussian kernel, but the results were almost identical so it's not worth bothering with this additional complication.