4 votos

El mejor enfoque para crear una curva a plazo del LIBOR en USD a partir de datos de mercado

Esta es una pregunta muy básica, estoy convencido de que ya se ha respondido antes pero no consigo encontrarla.

¿Cuál es el mejor enfoque para construir una curva a plazo del Libor en USD a partir de los datos del mercado?

Por ejemplo, puedo sacar las siguientes curvas a plazo/proyección para el Libor USD:

maturity   1M USD Libor   3M USD Libor   6M USD Libor   1Y USD Libor
1M          0.1551          0.2357         0.249          0.3658
3M          0.1622          0.2341         0.2473         0.3809
6M          0.1439          0.2051         0.2478         0.4081
1Y          0.1202          0.1948         0.2758         0.4797
2Y          0.1069          0.2265         0.3754         0.6704
3Y          0.2094          0.3452         0.5159         0.8479
4Y          0.392           0.5293         0.7074         1.0331
5Y          0.5843          0.7193         0.8862         1.2173
7Y          0.9077          1.0438         1.2055         1.5262
10Y         1.2002          1.3265         1.4985         1.763
15Y         1.255           1.3852         1.5278         1.7989
20Y         1.2285          1.3538         1.4866         1.7496
30Y         0.9059          1.0612         1.1455         1.3755

Nota: Para simplificar, sólo he incluido una selección de los tipos a lo largo de las curvas a las que puedo acceder. En realidad, estos están disponibles para mí con una frecuencia diaria.

He estado intentando importar los datos anteriores (aunque no estoy seguro de qué Helper es el más adecuado) con el objetivo final de utilizar la curva resultante para prever los tipos flotantes para valorar un IRS.

Edición: Para aclarar, la curva anterior podría considerarse mejor como una curva de generación o proyección hacia adelante. Su uso previsto es proyectar los futuros tipos LIBOR 3M USD.

Edición 2: Las curvas anteriores se ajustan a la base del tenor y utilizo una curva separada para el descuento/valoración.

3voto

Chris Mc Puntos 31

Si esas cifras son sólo los tipos de 3M, me temo que no tienes suficiente información para construir una curva para valorar otros instrumentos.

Por ejemplo, usted tiene un tipo 3M a partir de 1Y y en 2Y, pero sin el tipo spot o swap, no tiene información sobre los fowards 3M a partir de 1Y3M, 1Y6M y 1Y9M...

Creo que una cosa que se podría hacer es construir una curva que haga una interpolación plana de esas tasas usando el ql.ForwardCurve (espera que las tasas continuas sean entradas).

import QuantLib as ql
import matplotlib.pyplot as plt

nodes = [
    ('1M', 0.2357),
    ('3M', 0.2341),
    ('6M', 0.2051),
    ('1Y', 0.1948),
    ('2Y', 0.2265),
    ('3Y', 0.3452),
    ('4Y', 0.5293),
    ('5Y', 0.7193),
    ('7Y', 1.0438),
    ('10Y', 1.3265),
    ('15Y', 1.3852),
    ('20Y', 1.3538),
    ('30Y', 1.0612),  
] 

today = ql.Date().todaysDate()
calendar = ql.TARGET()
dates = [calendar.advance(today, ql.Period(tenor)) for tenor, rate in nodes]
rates = [rate for tenor, rate in nodes]
dayCounter = ql.Actual360()
contRates = [ql.InterestRate(rate, dayCounter, ql.Compounded, ql.Quarterly).equivalentRate(ql.Continuous, ql.NoFrequency, 1).rate() for rate in rates]

curve = ql.ForwardCurve(dates, contRates, ql.Actual360())
curve.enableExtrapolation()

rates = [curve.forwardRate(dt, dt+ql.Period('3M'), ql.Actual360(),ql.Compounded, ql.Quarterly).rate() for dt, rate in curve.nodes()]
times = [dayCounter.yearFraction(today, dt) for dt, rate in curve.nodes()]
plt.plot(times, rates, 'o');

enter image description here

Obsérvese que he trazado puntos y no líneas a propósito porque lo que realmente se obtiene con esta curva es una interpolación plana de los delanteros proporcionados, es decir:

allDates = ql.MakeSchedule(dates[0], curve.maxDate(), ql.Period('1D'))
allTimes = [dayCounter.yearFraction(today, dt) for dt in allDates]
fwds = [curve.forwardRate(dt, dt+ql.Period('3M'), ql.Actual360(),ql.Compounded, ql.Quarterly).rate() for dt in allDates]
plt.plot(allTimes, fwds)

enter image description here

Otras alternativas serían ajustar una curva a estos puntos o utilizar métodos de interpolación más avanzados, aunque probablemente tengas muy pocos puntos para obtener resultados decentes en cualquiera de estas alternativas.

Este es el aspecto que tendría la curva de avance utilizando la interpolación Monotone Convex.

enter image description here

1voto

John Dibling Puntos 138

Tiene más instrumentos líquidos disponibles para construir su curva LIBOR, especialmente por debajo del punto 5Y. Lo que solemos hacer es tomar todos los contratos de futuros en eurodólares por debajo de 5Y (por lo que el último a partir de ahora sería el contrato SEP25) y aplicar una función de convexidad adecuada y suave (recuerde que el libor a plazo = futuro en eurodólares + convexidad). Necesitas un valor de convexidad para cada uno de esos contratos futuros (20 contratos), y normalmente puedes ajustar una convexidad suave (polinomio logarítmico por ejemplo) con puntos de intercambio de 1Y,2Y,3Y,4Y,5Y por ejemplo. De esta manera tienes una curva más granular, y tus futuros dentro de los primeros 5 años no están sujetos a interpolación sino calibrados al mercado.

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