1 votos

Construcción explícita paso a paso de curvas utilizando FRAs

Estoy tratando de entender un proceso paso a paso para construir una curva desde los instrumentos hasta el resultado final, especialmente cómo se utilizan los FRAs superpuestos.

Estoy tratando de hacer esto en Excel para tener una comprensión clara de cada paso, si alguien puede explicar cada paso.

Aquí están los detalles de los instrumentos. Para simplificar porque solo quiero entender el proceso voy a usar solo el índice y los FRAs.

Fecha de la Curva = 01/03/2023

Índice 6M: 2.379

1x7 FRA: 3.007

2x8 FRA: 3.229

3x9 FRA: 3.995

4x10 FRA: 3.495

5x11 FRA: 3.555

6x12 FRA: 3.614

9x15 FRA: 3.555

12x18 FRA: 3.614

¿Qué comprobaciones de cordura se realizarían? ¿Alguien puede proporcionar un ejemplo también?

4voto

dotnetcoder Puntos 1262

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.

Introducir descripción de la imagen aquí

Las fórmulas para la interpolación log_lineal se ven así:

Introducir descripción de la imagen aquí

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X