Si alguien puede ayudar con lo siguiente, básicamente estoy tratando de construir una curva de rendimiento utilizando algunos datos del mercado real. He pegado el código python a continuación. Utilizo una lista de tipos de swap y obtengo algunos errores de root no entre corchetes, después de eliminar algunos tipos de swap, me quedan los tipos de swap de 9y y 10y AUD. Mientras estos dos están incluidos, entonces la construcción de la curva no funcionará. creo que estos son datos reales del mercado a partir de 2021-01-04. El error que estoy recibiendo:
RuntimeError: 1ª iteración: falló en el 2º instrumento vivo, pilar 6 de enero de 2031, vencimiento 6 de enero de 2031, fecha de referencia 4 de enero de 2021: root sin corchetes: f[0,0830554,0,627492] -> [-3,376389e+01,-1,733717e+01]
import QuantLib as ql
swapHelpers = []
pricingDate = ql.DateParser.parseFormatted('2021-01-04', '%Y-%m-%d')
effectiveDate = ql.DateParser.parseFormatted('2021-01-06', '%Y-%m-%d')
dayCount = ql.Actual360()
terminationDate1 = ql.DateParser.parseFormatted('2031-01-06', '%Y-%m-%d')
schedule1 = ql.Schedule(effectiveDate,
terminationDate1,
ql.Period(ql.Quarterly),
ql.Australia(),
ql.ModifiedFollowing,
ql.ModifiedFollowing,
ql.DateGeneration.Backward,
False)
helper1 = ql.FixedRateBondHelper(ql.QuoteHandle(ql.SimpleQuote(100)),
2,
100,
schedule1,
[0.1838],
dayCount,
ql.ModifiedFollowing,
)
swapHelpers.append(helper1)
terminationDate2 = ql.DateParser.parseFormatted('2030-01-06', '%Y-%m-%d')
schedule2 = ql.Schedule(effectiveDate,
terminationDate2,
ql.Period(ql.Quarterly),
ql.Australia(),
ql.ModifiedFollowing,
ql.ModifiedFollowing,
ql.DateGeneration.Backward,
False)
helper2 = ql.FixedRateBondHelper(ql.QuoteHandle(ql.SimpleQuote(100)),
2,
100,
schedule2,
[0.165],
dayCount,
ql.ModifiedFollowing,
)
swapHelpers.append(helper2)
yieldcurve = ql.PiecewiseLogCubicDiscount(pricingDate,
swapHelpers,
ql.Actual360())
yieldcurve.enableExtrapolation()
yieldcurve.dates()