2 votos

Cálculo de QuantLib IborCoupon con / a partir de la fijación de un índice dado

¿Cómo puedo calcular con QuantLib el importe del cupón de un IborCoupon de tipo variable sobre el índice 3M Euribor con una fijación determinada del índice 3M Euribor?

Si pruebo el siguiente código de Python:

from QuantLib import *
index = Euribor(Period(3, Months))
start = DateParser_parseISO("2019-02-22")
end = DateParser_parseISO("2019-05-22")
coupon = IborCoupon(end, 1.0, start, end, 2, index)
fixDate = coupon.fixingDate()
index.addFixing(fixDate, 0.04)
print coupon.amount()

Me sale el error pricer not set .

Me preguntaba sobre el error porque, a mi entender, no se necesita ningún precio, ya que la fijación correspondiente ya está dada. El resultado debería ser aproximadamente 0,01.

Buscando en el código fuente (c++) del amount() o, más concretamente, el método rate() puedo ver que en cada llamada se comprueba la existencia de un pricer.

Por lo tanto, supongo que mi código es la forma incorrecta de hacer esto.

0voto

Brad Tutterow Puntos 5628

La implementación actual delega en un tasador antes de comprobar si el cupón ya se ha fijado; no sólo eso, sino que además requiere que el índice tenga una estructura de plazos de previsión válida. Sin embargo, no te equivocas: puedo ver cómo se espera que funcione la llamada. Te sugiero que abras una incidencia en GitHub (en https://github.com/lballabio/QuantLib/issues ) y sugerir esto como una mejora de la usabilidad.

Mientras tanto, se puede trabajar en torno a esto. El precio por defecto de los cupones IBOR no necesita parámetros adicionales, por lo que puede establecer uno añadiendo:

coupon.setPricer(BlackIborCouponPricer())

después de crear el cupón. Por cierto, si utiliza IborLeg para crear una secuencia de cupones en lugar de crear uno solo, y si los cupones no tienen topes o suelos (lo que requeriría pasar una volatilidad), IborLeg establecerá un precio por defecto a cada uno para que no tengas que hacerlo.

En cuanto a la curva de previsión, la forma más sencilla es crear el índice como:

dummy_curve = FlatForward(0, NullCalendar(), 0.0, Actual365Fixed())
index = Euribor(Period(3, Months), YieldTermStructureHandle(dummy_curve))

pero si tienes una curva de Euribor real, te sugiero que la utilices en su lugar. De este modo, no correrás el riesgo de que el índice utilice la curva ficticia para la previsión en caso de que te resbales y pidas una fijación futura.

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