Estoy luchando por conseguir un equivalente de la función YIELD de Excel utilizando Quantlib en python. Como se puede ver en la documentación de Excel sobre YIELD aquí sólo se necesitan unos pocos parámetros en comparación con este ejemplo que utiliza Quantlib http://gouthamanbalaraman.com/blog/quantlib-bond-modeling.html
ACTUALIZACIÓN:
Además, si utilizo la función bondYield, no consigo obtener los mismos valores que en Excel. Tomemos por ejemplo este bono:
el RENDIMIENTO anterior tiene la fórmula =YIELD(B1,B2,B3/100,B4,100,2,1)*100
. El rendimiento es 1.379848
.
Si intento configurar parámetros similares en Quantlib, como se muestra a continuación
# ql.Schedule
calendar = ql.UnitedStates()
bussinessConvention = ql.ModifiedFollowing
dateGeneration = ql.DateGeneration.Backward
monthEnd = False
cpn_freq = 2
issueDate = ql.Date(30, 9, 2014)
maturityDate = ql.Date(30, 9, 2019)
tenor = ql.Period(cpn_freq)
schedule = ql.Schedule(issueDate, maturityDate, tenor, calendar, bussinessConvention,
bussinessConvention, dateGeneration, monthEnd)
# ql.FixedRateBond
dayCounter = ql.ActualActual()
settlementDays = 1
faceValue = 100
couponRate = 1.75 / 100
coupons = [couponRate]
fixedRateBond = ql.FixedRateBond(settlementDays, faceValue, schedule, coupons, dayCounter)
# ql.FixedRateBond.bondYield
compounding = ql.Compounded
cleanPrice = 100.7421875
fixedRateBond.bondYield(cleanPrice, dayCounter, compounding, cpn_freq) * 100
Esto da un rendimiento de 1.3784187000852273
que se aproxima, pero no es el mismo que el que da la función de Excel.