1 votos

QuantLib Rendimiento de los bonos

Creo que tengo la misma pregunta que se hizo aquí pero aún no he podido resolver mi problema:

Función Excel YIELD equivalente en python Quantlib

Estoy intentando calcular el rendimiento de un bono y compararlo con los resultados que obtengo en Excel/MatLab.

En Excel y MatLab puedo obtener los mismos resultados pero necesito implementarlo en Python. (0.75358%)

=YIELD("16/03/2020","21/11/2029",0.0275,118.607,100,2,3)

\=YIELD(liquidación,vencimiento,tipo,pr,amortización,frecuencia,base)

Así que sé que tengo que crear un ql.FixedRateBond y luego utilizar la función bondYield.

Creo que la frecuencia anterior se corresponde con ql.Seminannual y la base es mi convención dayCount de ql.Actual365Fixed().

Pero debo estar equivocándome con alguno de los parámetros adicionales de Python, porque mi respuesta en Python está muy lejos.

¿Alguien puede ayudarme a encontrar el error en mi especificación Python?

settlement= ql.Date(16,3,2020)
maturity= ql.Date(21,11,2029)
bond = ql.FixedRateBond(0, ql.TARGET(), 100, start, maturity, ql.Period('6M'), [0.0275], ql.Actual365Fixed())
bond.bondYield(118.6070, ql.Actual365Fixed(), ql.Compounded, ql.Semiannual)

(Python da como resultado un 0,6284%)

4voto

Chris Mc Puntos 31

El problema es que cuando se llama a la función bondYield si no se especifica una fecha de liquidación, QuantLib calculará los factores de descuento basándose en la fecha de evaluación global. Por defecto esa será la fecha del sistema.

Por tanto, defina la fecha de liquidación en el método, como parámetro después de la frecuencia:

start = ql.Date(16,3,2020)
maturity = ql.Date(21,11,2029)
bond = ql.FixedRateBond(2, ql.TARGET(), 100, start, maturity, ql.Period('6M'), [0.0275], ql.Actual365Fixed())
bond.bondYield(118.607, ql.Actual365Fixed(), ql.Compounded, ql.Semiannual, start)

O cambie la fecha de evaluación global. Por ejemplo, puede insertar esta línea antes de ejecutar el programa bondYield método.

ql.Settings.instance().evaluationDate = ql.Date(16,3,2020)

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