Obtengo el precio limpio del bono de Bloomberg y de QL, pero sorprendentemente el precio de Bloomberg coincide con la función de precio de excel()
Tengo el siguiente bono: GETC21117030. Los parámetros se indican a continuación:
Nombre del Parámetro
Valor
Fecha de liquidación
30-12-20
Fecha de emisión del bono
17-ene-19
Fecha de devengo de interés
17-ene-19
Fecha de vencimiento
17-ene-21
Fecha del último cupón
17-jul-20
Tasa de cupón
7.25%
Frecuencia de cupón
2
Días de cálculo
ACT/ACT
Redención
100
Rendimiento
7.95%
Calendario
NullCalendar
Convenio
Unadjusted
TermPayConv
Unadjusted
Regla general
Backward
Si observa los parámetros, notará que solo falta un pago en la fecha de vencimiento. Si calculo el precio e interés devengado en QLXL, obtengo resultados diferentes a los de Bloomberg. Sin embargo, sorprendentemente, los números de Bloomberg coinciden si uso la función nativa de cálculo de precio de excel.
Examiné la fórmula de excel y parece que la fórmula de cálculo de precio es diferente cuando solo queda un pago (ver abajo)
Cuando N > 1 (N es el número de cupones pagaderos entre la fecha de liquidación y la fecha de redención), el PRECIO se calcula de la siguiente manera:
Cuando N = 1 (N es el número de cupones pagaderos entre la fecha de liquidación y la fecha de redención), el PRECIO se calcula de la siguiente manera:
DSR = número de días desde la liquidación hasta la siguiente fecha de cupón.
E = número de días en el período de cupón en el que cae la fecha de liquidación.
A = número de días desde el inicio del período de cupón hasta la fecha de liquidación.
Parece que para el cálculo del último pago, excel pasa de un rendimiento compuesto a un rendimiento simple.
Calculé el precio limpio tanto con rendimiento compuesto como con rendimiento simple. Si bien el precio limpio con rendimiento simple se acerca al precio de Bloomberg/Excel, aún no coincide.
Con un rendimiento del 7.95% y la fecha de liquidación el 30 de diciembre de 2020:
El precio limpio de Bloomberg/Excel es 99.953226, Cantidad devengada 3.270380
El precio limpio de QLXL (rendimiento semestral compuesto) es 99.95983172, Cantidad devengada 3.288251366
El precio limpio de QLXL (rendimiento simple) es 99.95278714, Cantidad devengada 3.288251366
No soy especialista en C++, pero el código de QL que he revisado no cambia el algoritmo de cálculo del precio cuando solo queda un pago.
La pregunta es: ¿Es posible con la implementación actual de QuantLib que coincidan el precio y la cantidad devengada para el bono mencionado anteriormente (y en general con todos los bonos con cupones cuando solo queda un flujo de efectivo)?