Dado que tienes mi libro, te daré un paso a paso.
Aquí tienes decisiones que tomar. Cómo quieres parametrizar tu Curva, qué interpolación usar, qué puntos nodales para los factores de descuento, etc. Dado que estás haciendo esto en Excel, tienes limitaciones. Una de ellas es que necesitas que sea arrancable.
Si haces esto en una biblioteca, puedes usar fácilmente un solucionador numérico, como el siguiente:
from rateslib import *
curva = Curva(
nodos={
dt(2023, 1, 3): 1.0,
dt(2023, 7, 3): 1.0,
dt(2023, 8, 3): 1.0,
dt(2023, 9, 3): 1.0,
dt(2023, 10, 3): 1.0,
dt(2023, 11, 3): 1.0
},
calendario="ldn",
convención="act365f",
interpolación="log_linear",
)
Luego resuelve y actualiza los valores de la Curva basados en los precios de mercado. Estoy usando instrumentos de GBP para ignorar retrasos en los pagos y el spot T+2.
solucionador = Solucionador(
curvas=[curva],
instrumentos=[
IRS(dt(2023, 1, 3), "6m", especificación="gbp_irs", curvas=curva),
IRS(dt(2023, 2, 3), "6m", especificación="gbp_irs", curvas=curva),
IRS(dt(2023, 3, 3), "6m", especificación="gbp_irs", curvas=curva),
IRS(dt(2023, 4, 3), "6m", especificación="gbp_irs", curvas=curva),
IRS(dt(2023, 5, 3), "6m", especificación="gbp_irs", curvas=curva),
],
s=[2.379, 3.007, 3.229, 3.995, 3.495]
)
Esto es lo que produce esto:
curva.nodos
# {datetime.datetime(2023, 1, 3, 0, 0): ,
# datetime.datetime(2023, 7, 3, 0, 0): ,
# datetime.datetime(2023, 8, 3, 0, 0): ,
# datetime.datetime(2023, 9, 3, 0, 0): ,
# datetime.datetime(2023, 10, 3, 0, 0): ,
# datetime.datetime(2023, 11, 3, 0, 0): }
Ahora quieres hacer esto en Excel. Configura el mismo esquema. Tendrás el primer factor de descuento (azul) ajustado a 1.0 como identidad. Tus celdas amarillas son los parámetros calibrados por las tasas. Tus celdas grises son los cálculos intermedios requeridos bajo interpolación para obtener los valores correctos.
Las fórmulas para la interpolación log_lineal se ven así: