Me gustaría comprobar cómo QuantLib hace la interpolación en las tasas si uso el constructor ZeroCurve. Como se mencionó aquí utilizando curve.nodes()
puede obtener una lista de tasas, utilizadas para la interpolación.
Así, si construyo una curva con tipos al contado con el siguiente código
import QuantLib as ql
todays_date = ql.Date(12, 3, 2020)
spot_dates = [todays_date + ql.Period(i, ql.Years) for i in [0, 1, 2, 3, 4, 5]]
spot_rates = [0.01, 0.02, 0.03, 0.04, 0.05, 0.06]
spot_curve = ql.ZeroCurve(
spot_dates, spot_rates,
ql.SimpleDayCounter(),
ql.NullCalendar(),
ql.Linear(),
ql.Compounded,
ql.Annual
)
He vuelto
spot_curve.nodes()
((Date(12,3,2020), 0.009950330853148023),
(Date(12,3,2021), 0.01980262729617973),
(Date(12,3,2022), 0.02955880224154438),
(Date(12,3,2023), 0.03922071315328132),
(Date(12,3,2024), 0.04879016416943205),
(Date(12,3,2025), 0.05826890812397582))
Me he dado cuenta de que el problema es la composición. Al indicar que las tasas de entrada se componen continuamente, nodes()
coincide con la entrada.
spot_curve = ql.ZeroCurve(
spot_dates, spot_rates,
ql.SimpleDayCounter(),
ql.NullCalendar(),
ql.Linear(), ql.Continuous, ql.Annual
)
spot_curve.nodes()
((Date(12,3,2020), 0.01),
(Date(12,3,2021), 0.02),
(Date(12,3,2022), 0.03),
(Date(12,3,2023), 0.04),
(Date(12,3,2024), 0.05),
(Date(12,3,2025), 0.06))
A partir de ese descubrimiento, la pregunta es: ¿QuantLib siempre interpola en tasas continuas (con el constructor de tasas cero)? ¿Es una convención?