Se generó una curva de descuento, dCurve.PiecewiseLogLinearDiscount(), utilizando la tasa de parámetros de entrada para plazos (.5Y, 1Y, 2Y, 3Y, 5Y, 7Y, 10Y, 15Y, 20Y, 30Y) y generando una curva de descuento de salida que coincide con la estructura temporal de entrada. ¿Alguna sugerencia sobre cómo generar la curva de factores de descuento en una estructura temporal de intervalos de .5Y hasta 30Y?
Respuestas
¿Demasiados anuncios?
savageguy
Puntos
570
Basado en tu pregunta, creé el siguiente ejemplo de curva:
import QuantLib as ql
import pandas as pd
# Establecer la fecha de evaluación
ql.Settings.instance().evaluationDate = ql.Date(30, 12, 2022)
# Declarar una variable de almacenamiento para los ayudantes
helpers = []
# Crear los atributos del swap
calendar = ql.Sweden()
frecuencia = ql.Anual
convencion = ql.ModifiedFollowing
# Datos de mercado sintéticos
daycount = ql.Thirty360(ql.Thirty360.BondBasis)
indice = ql.IborIndex(
"MiIndice",
ql.Period("3M"),
2,
ql.SEKCurrency(),
calendar,
ql.Following,
False,
daycount,
)
tenor = ["4Y", "5Y", "6Y", "7Y", "8Y", "9Y", "10Y", "12Y", "15Y", "20Y", "25Y", "30Y"]
quotes = [
3.33,
3.2775,
3.235,
3.205,
3.1775,
3.1525,
3.1325,
3.095,
3.0275,
2.92,
2.815,
2.6925,
]
for r, m in zip(quotes, tenor):
rate = ql.QuoteHandle(ql.SimpleQuote(r / 100.0))
tenor = ql.Period(m)
helpers.append(
ql.SwapRateHelper(
rate, tenor, calendar, frecuencia, convencion, daycount, indice
)
)
curva = ql.PiecewiseLogLinearDiscount(0, calendar, helpers, ql.Actual365Fixed())
curva.enableExtrapolation()
fechas, tasas = zip(*curva.nodes())
Lo que me deja en el mismo punto que tú. Luego podemos interpolar en un intervalo de 5 años de la siguiente manera:
# Interpolar en un intervalo de 5 años
nodos = []
fecha_inicial = ql.Date(30, 12, 2022)
while True:
fecha_inicial += ql.Period("5Y")
nodos.append(fecha_inicial)
if fecha_inicial > ql.Date(30, 12, 2053):
break
factores_descuento = [curva.discount(d) for d in nodos]
display(pd.DataFrame(dict({"Fecha": nodos, "Factor de Descuento": factores_descuento})))
Lo cual resulta en:
Fecha
Factor de Descuento
0
30 de diciembre de 2027
0.851205
1
30 de diciembre de 2032
0.735589
2
30 de diciembre de 2037
0.641855
3
30 de diciembre de 2042
0.567462
4
30 de diciembre de 2047
0.508218
5
30 de diciembre de 2052
0.464726
6
30 de diciembre de 2057
0.424997
Brad Tutterow
Puntos
5628