Un método que he utilizado se describe a continuación (adaptando la notación de Einstein, los índices repetidos se suman).
Primero, segregue la lista de bonos por curva del emisor, para que se pueda realizar el mismo análisis repetidamente en bonos que comparten las características más similares.
En segundo lugar, idear un mapa de riesgos, $A_{ij}$, que transforma un bono de vencimiento, $m$, en una serie de riesgos equivalentes de swap. Luego, la matriz de compartimentos de riesgos equivalentes de swap, $i$, para cada bono, $j$, es:
$$ S_{ij} = A_{ij} B_j, \qquad \text{tal que} \quad \sum_{i} S_{ij} = B_j$$
Un ejemplo básico es usar interpolación lineal; un bono con un vencimiento de 1.25 años se asigna 75% al compartimento de 1 año y 25% al compartimento de 2 años.
En tercer lugar, buscamos los cambios $\Delta r_i$ que, cuando se aplican a los riesgos equivalentes de swap, devuelven el PnL total, P, pero que también minimizan el error cuadrado si estos cambios se aplican a cada bono individual.
$$ \min_{\Delta r_i} \; \sum_j (S_{ij}\Delta r_i - P_j)^2 \qquad \text{sujeto a} \quad \sum_j S_{ij} \Delta r_i = P $$
Este problema se reduce a un sistema de álgebra lineal que es solucionable mediante inversión de matrices. Ver derivación.
Derivación:
Escriba el Lagrangiano y sus derivadas del problema de optimización,
$$ L(\Delta r_i, \lambda) = \sum_j (S_{ij}\Delta r_i - P_j)^2 - \lambda \left ( P - \sum_j S_{ij} \Delta r_i \right ) \\ L_{\Delta r_k} = 2 S_{kj} ( S_{ij} \Delta r_i -P_j) + \lambda \sum_j S_{kj} \\ L_{\lambda} = P - \sum_j S_{ij} \Delta r_i \\ $$
Notando que estas derivadas satisfacen cero en su forma mínima, se forma la ecuación matricial en bloque:
$$ \begin{bmatrix} 2 \mathbf{SS^T} & : & \mathbf{S \delta} \\\\ ... & : & ... \\\\ \left ( \mathbf{S \delta} \right )^{\mathbf{T}} & : & 0\\\\ \end{bmatrix} \begin{bmatrix} \Delta \mathbf{r} \\\\ ... \\\\ \lambda \\\\ \end{bmatrix} = \begin{bmatrix} 2 \mathbf{SP} \\\\ ... \\\\ P \\\\ \end{bmatrix} $$
Problemas:
Dependiendo del número de bonos y del número de compartimentos de swap, este sistema puede estar subespecificado, sobreespecificado o totalmente especificado. También depende de los vencimientos de los bonos. En general, es probable que haya problemas para la inversión de matrices, por lo que una solución es introducir un término de regularización que signifique que CoD debería favorecer valores más cercanos a cero.
$$ \min_{\Delta r_i} \; \sum_j (S_{ij}\Delta r_i - P_j)^2 + \frac{\gamma}{2} \Delta r_i \Delta r_i$$
Esto altera la matriz en bloque al agregar una identidad escalada en la parte superior izquierda:
$$ 2\mathbf{SS^T} \rightarrow 2\mathbf{SS^T} + \gamma \mathbf{I} $$
Cuando todos los PnL de los bonos son cero, esto crea una columna a la derecha de ceros y una fila inferior de ceros y una matriz sin inversa. En este caso no hay información y es efectivamente una solución degenerada. Todos los CoD podrían igualmente establecerse en cero. Establecer el elemento inferior de la matriz en bloque en 1 también podría producir esta solución sin errores de tiempo de ejecución. Para su uso en Excel, $\gamma$ podría establecerse bastante alto, por ejemplo, 1e6, para evitar problemas numéricos y proporcionar una matriz con una mejor condición.