4 votos

QuantLib Python: fijación de precios de caplet/swaption bajo curva dual

¿Existe una forma de valorar caplets/swaptions en QuantLib python (v 1.6.2) bajo una curva dual, es decir, pasar la curva de proyección para los forwards y la curva de descuento para descontar los flujos de caja?

Goutham tiene un ejemplo aquí pero utiliza una sola curva tanto para los forwards como para los descuentos. He mirado BlackCapFloorEngine.hpp y no pude encontrar la función que toma dos curvas como entrada.

En segundo lugar, ¿se expone el modelo Bachelier a python? Porque no he podido encontrarlo.

5voto

tralston Puntos 76

Curva de descuento frente a la de estimación a futuro

El YieldTermStructureHandle pasado a BlackCapFloorEngine corresponde a la curva de descuento, mientras que la pasada a IborIndex corresponde a la curva de estimación de avance

En el ejemplo al que te refieres dos, resulta que ambos son idénticos, pero podrías perfectamente definir dos asas diferentes en dos curvas diferentes, de la siguiente manera:

disc_term_structure = ql.ZeroCurve(disc_dates, disc_zero_rates, ...)
disc_ts_handle = ql.YieldTermStructureHandle(disc_term_structure)
engine = ql.BlackCapFloorEngine(disc_ts_handle, vols)

Motor de precios de Bachelier

En cuanto a su segunda pregunta, hay un BachelierCapFloorEngine en QuantLib, véase aquí: https://github.com/lballabio/QuantLib/blob/master/ql/pricingengines/capfloor/bacheliercapfloorengine.hpp

y se expone en Python (estoy usando QuantLib 1.16). Podrías, por ejemplo, sustituir la instanciación del motor Black por esta línea en el ejemplo de Goutham:

engine = ql.BachelierCapFloorEngine(disc_ts_handle, ql.QuoteHandle(ql.SimpleQuote(0.03))

0 votos

Muchas gracias. La parte de la curva doble funciona perfectamente. Pero para el motor de Bachelier, me sale este error al utilizar ql.BachelierCapFloorEngine: "AttributeError: module 'QuantLib' has no attribute 'BachelierCapFloorEngine'"

1 votos

Compruebe la versión que está utilizando haciendo: import QuantLib as ql entonces ql.__version__ Supongo que será < 1,16. En ese caso, por favor, intente actualizarlo.

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