No puedo obtener el mismo precio para un bono fijo utilizando quantlib.
faceValue = 100.
couponType = ql.Semiannual
issueDate = ql.Date(19, 4, 2019)
EvalDate = ql.Date(24, 5, 2019)
Maturity = ql.Date(19, 4, 2022)
quotedYield = 3.69
couponRate = 3.84
calendar = ql.NullCalendar()
settlementDays = 0
businessConventions = ql.Following
Datesgeneration = ql.DateGeneration.Forward
period= ql.Period(ql.Semiannual)
monthEnd = False
B1 = Bond(faceValue, couponType, EvalDate, issueDate, Maturity, quotedYield, couponRate, calendar)
ql.Settings.instance().evaluationDate = EvalDate
schedule = ql.Schedule(issueDate, Maturity, period, calendar, businessConventions, businessConventions, Datesgeneration, monthEnd)
bond = ql.FixedRateBond(settlementDays, faceValue, schedule, [couponRate/100.], ql.ActualActual(ql.ActualActual.ISMA))
print("QuantLib: ", bond.dirtyPrice(quotedYield/100., ql.ActualActual(ql.ActualActual.ISMA), ql.Simple, ql.Semiannual))
Debería haber obtenido 100,774 al redondear a 3 decimales, pero obtuve 100,771. 100,774 es similar a Bloomberg pricer o Excel utilizando el método clásico de flujo de caja descontado para calcular el precio.
¿Puede ayudarme?
Gracias ¿Hay algún problema?