0 votos

El precio limpio de los bonos de Bloomberg y la cantidad devengada difieren de Quantlib

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:

enter image description here

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:

enter image description here

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)?

5voto

Chris Mc Puntos 31

Varias cosas podrían estar afectando tu resultado. Verifica si todas las convenciones son correctas, especialmente el daycount.

En cuanto al cálculo de interés compuesto en el último periodo, puedo replicar el precio de Bloomberg para ese bono en QuantLib usando el parámetro SimpleThenCompounded.

import QuantLib as ql

settlementDate = ql.Date(30,12,2020)
issueDate = ql.Date(17,1,2019)
maturityDate = ql.Date(17,1,2021)
coupon = 0.0725
freq = ql.Period('6M')
dayCount = ql.ActualActual(ql.ActualActual.ISMA)
yld = 0.0795

bbgPrice = 99.953226
bond = ql.FixedRateBond(0, ql.TARGET(), 100.0, issueDate, maturityDate, freq, [coupon], dayCount, ql.Unadjusted, ql.Unadjusted)
print(f"BBG Price: {bbgPrice}")

px = bond.cleanPrice(yld, dayCount, ql.SimpleThenCompounded, ql.Annual, settlementDate)
print(f"QuantLib  Price: {px:.6f}\n")

Precio BBG: 99.953226
Precio QuantLib: 99.953226

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