Según mi entendimiento, existen dos formas de invocar el IFT en aplicaciones de finanzas cuantitativas en un contexto de calibración / bootstrapping.
- Cuando se minimiza alguna función de error durante el bootstrapping.
- Cuando se realiza un bootstrapping de un conjunto de parámetros (por ejemplo, una curva de cero) de manera que todos los instrumentos de referencia se valoren exactamente a la par (por ejemplo, el PV cero para un swap),
IFT en problemas de optimización
Entiendo que estás abordando la primera pregunta, donde se minimiza una función de error escalar. Para simplificar la notación, agrupa todos los parámetros en el vector $K \times 1$ $\theta$ y escribe
$$ \min_{\theta} f(\theta,y) = \sum_i\left(y(T_i)-r(T_i,\theta)\right)^2 $$
Una vez que se haya realizado la minimización de $f$, se ha obtenido algún óptimo $\theta^*$. Según la teoría de la optimización, sabemos que la siguiente condición de optimización debe cumplirse en el óptimo:
$$ g\equiv\left.\frac{\mathrm{d}f(\theta,y)}{\mathrm{d}\theta}\right|_{\theta=\theta^*}=0 $$
Esto se puede utilizar como punto de partida para encontrar la relación entre los cambios en los datos de entrada y los parámetros calibrados. En términos sencillos: cuando los datos de entrada $y$ cambian (un poco), el proceso de optimización seguirá induciendo que $g=0$ en el óptimo, es decir, permanece en cero:
$$ \begin{align} \frac{\mathrm{d}g}{\mathrm{d}y}&= \frac{\mathrm{d}g}{\mathrm{d}\theta}\frac{\mathrm{d}\theta}{\mathrm{d}y}+\frac{\mathrm{d}g}{\mathrm{d}y}=0 \\ \Rightarrow \frac{\mathrm{d}\theta}{\mathrm{d}y}&=-\left(\frac{\mathrm{d}g}{\mathrm{d}\theta}\right)^{-1}\frac{\mathrm{d}g}{\mathrm{d}y} \end{align} $$
Por lo tanto, dado nuestro problema de optimización escalar $f$, la relación entre los cambios (pequeños) en los datos de entrada y los parámetros calibrados se encuentra utilizando derivadas de la condición de primer orden.
Vamos a intentar esto con el ejemplo NSS que proporcionas, asumiendo que queremos minimizar los errores al cuadrado. Además, introduzcamos una notación simplificadora:
- $g_i$ es el gradiente de $k\times 1$ del modelo NSS en $T_i$, y
- $H_i$ es la matriz $k\times k$ de segundas derivadas del modelo NSS en $T_i$.
Luego:
$$ \begin{align} f&=\sum_i(y_i-r(T_i))^2\\ g&\equiv \frac{\mathrm{d}f}{\mathrm{d}\theta}=-2\sum_i(y_i-r(T_i))g_i\}\stackrel{!}{=}0 \end{align} $$ Nótese que he usado el "$\stackrel{!}{=}0$" de forma un poco descuidada para indicar que, en $\theta=\theta^*$, el gradiente del problema debe ser cero, de lo contrario podríamos mejorar la optimización aún más. Ahora repetimos las herramientas anteriores, es decir, invocamos la noción de que $\mathrm{d}g$ debe ser cero al cambiar a otro $y$. Para ello, necesitamos
$$ \frac{\mathrm{d}g}{\mathrm{d}y}=-2\begin{pmatrix} \frac{\mathrm{d}r(T_1)}{\mathrm{d}\theta} & \frac{\mathrm{d}r(T_2)}{\mathrm{d}\theta} & \ldots & \frac{\mathrm{d}r(T_n)}{\mathrm{d}\theta} \end{pmatrix}\equiv J $$ que tiene dimensión $k \times n$ y por supuesto $$ \frac{\mathrm{d}g}{\mathrm{d}\theta}=-2\sum_iy_iH_i-g_ig_i^T- r(T_i)H_i\equiv G $$ que es de dimensión $k \times k$
Finalmente, tenemos
$$ \frac{\mathrm{d}\theta}{\mathrm{d}y}=-G^{-1}J $$ que tiene una dimensión de $k \times n$ y debe calcularse en $\theta=\theta^*$.
NB: La mayoría de los optimizadores ofrecerán tanto la Hessianiana como el Jacobiano del modelo como un subproducto, que yo sepa.
IFT en bootstrapping estándar
Un problema común de bootstrapping es encontrar un conjunto de $K\leq N$ parámetros $\theta$ (por ejemplo, nodos de tasa cero en una curva de tasa de interés) de modo que podamos calibrar $N$ instrumentos de referencia a sus respectivas comillas, almacenadas en el vector $Q$, de dimensión $N \times 1$.
Sea $f$ un vector de referencia de $N\times 1$ de instrumentos que (convenientemente) deben ser valorados a la par (es decir, cero). Supongamos que $\theta^*$ ha sido calibrado de esa manera. Cualquier actualización de $Q$ deberá resultar en una actualización de $\theta$ de modo que, nuevamente, $f=0$. Luego
$$ \frac{\mathrm{d}f}{\mathrm{d}y}=\frac{\mathrm{d}f}{\mathrm{d}\theta}\frac{\mathrm{d}\theta}{\mathrm{d}y}+\frac{\mathrm{d}f}{\mathrm{d}y}\stackrel{!}{=}0 $$
y nuevamente
$$ \frac{\mathrm{d}\theta}{\mathrm{d}y}=-\left(\frac{\mathrm{d}f}{\mathrm{d}\theta}\right)^{-1}\frac{\mathrm{d}f}{\mathrm{d}y} $$
Si $K, tenemos que idear una pseudoinversa, es decir
$$ \frac{\mathrm{d}\theta}{\mathrm{d}y}=-\left[\left(\frac{\mathrm{d}f}{\mathrm{d}\theta}\right)^T\frac{\mathrm{d}f}{\mathrm{d}\theta}\right]^{-1}\left(\frac{\mathrm{d}f}{\mathrm{d}\theta}\right)^T\frac{\mathrm{d}f}{\mathrm{d}y} $$
Una aplicación típica, entonces, es encontrar sensibilidades de algún instrumento $h$ en nuestro portafolio con respecto a las tasas de swap observadas en el mercado. Sea $ \theta$ los parámetros de la curva bootstrap (raíz cero), comúnmente tasas cero. Entonces:
$$ \frac{\mathrm{d}h}{\mathrm{d}q}=\frac{\mathrm{d}h}{\mathrm{d}\theta}\frac{\mathrm{d}\theta}{\mathrm{d}r}=-\frac{\mathrm{d}h}{\mathrm{d}\theta}\left(\frac{\mathrm{d}f}{\mathrm{d}\theta}\right)^{-1}\frac{\mathrm{d}f}{\mathrm{d}y} $$
donde usamos las sensibilidades "cero" de nuestro instrumento y las sensibilidades (precalculadas) de las tasas cero con respecto a las comillas.