1 votos

Quantlib match clean price con bbg clean price

Estoy tratando de igualar el precio limpio de QL con el precio limpio de BBG para POLGB 2.75 10/25/29 1029 con precio para el 15 de octubre de 2021 para un rendimiento del 2,5%. No estoy seguro de si mi configuración del bono es incorrecta o si hay un problema con la precisión de los cálculos.

import QuantLib as ql

todaysDate= ql.Date(15,10,2021)

ql.Settings.instance().setEvaluationDate(todaysDate)

issueDate = ql.Date(11, 2, 2019)
maturityDate = ql.Date(25, 10, 2029)
tenor = ql.Period(ql.Annual)
calendar = ql.Poland()
bussinessConvention = ql.Following
dateGeneration = ql.DateGeneration.Backward
monthEnd = False
schedule = ql.Schedule (ql.Date(25,10,2018), maturityDate, tenor, calendar, ql.Unadjusted,
                            ql.Unadjusted , dateGeneration, monthEnd)

dayCount = ql.ActualActual(ql.ActualActual.ISMA)
couponRate = .0275
coupons = [couponRate]

settlementDays = 0
faceValue = 100
fixedRateBond = ql.FixedRateBond(settlementDays, faceValue, schedule, coupons, dayCount)

print(round(fixedRateBond.cleanPrice(0.025,ql.ActualActual(ql.ActualActual.ISMA),ql.CompoundedThenSimple,ql.Annual),6))

Precio limpio de QuantLib = 101,796832
Precio limpio BBG = 101,796834

1 votos

¿Está utilizando la misma fecha de liquidación? ¿Puede publicar Bloomberg DES y YA para comparar, por favor?

0 votos

Sí, ambas fechas de liquidación eran las mismas para bbg y ql, es decir, el 15 de octubre de 2021. \ POLGB 2 ¾ 10/25/29 ( PL0000111498 ) Spread 18.52bp vs   8yPOLGB 2 ¾ 10/29 Price 101.796834  103.154  Yield 2.5000000Wst   2.3147811  Ann Wkout 10/25/2029@ 100.00   Yld7 7 Settle 10/15/21 10/15/21 Trade 10/13/21 Retro (Using input price)

4voto

affanzbasalamah Puntos 136

BBG no ajusta las fechas al calcular el VAN. Para obtener el mismo resultado en QuantLib tenemos que añadir ql.Unadjusted al parámetro FixedRateBond. Además, para obtener exactamente el mismo precio limpio tenemos que calcular el precio sucio y restar el importe acumulado redondeado.

fixedRateBond = ql.FixedRateBond(settlementDays, faceValue, schedule, coupons, dayCount, ql.Unadjusted)

print(round(fixedRateBond.dirtyPrice(0.025,ql.ActualActual(ql.ActualActual.ISMA),
ql.Compounded,ql.Annual),6)-round(fixedRateBond.accruedAmount(ql.Date(15,10,2021)),3))

Precio limpio de Quantlib = 101,796834

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