3 votos

Utilización de quantlib para fijar el precio de los swaps con diferentes reajustes de pagos y cálculos para el tramo flotante

Entiendo que el objeto VanillaSwap asume que los reajustes de pago y de cálculo son los mismos, así que ¿hay alguna forma de utilizar quantlib para fijar el precio de un swap con diferentes frecuencias de reajuste y de cálculo? (digamos que el pago es semestral pero los reinicios son anuales).

Algunos candidatos que he considerado son:

  1. NonstandardSwap: sin embargo, creo que esto no permite diferentes horarios de pago y reinicio también.

  2. Intercambio: se necesitan 2 piernas, pero la pierna en sí es virtual, sin embargo, hay muchas otras maneras de implementar esto, una forma es utilizar el IborCoupon sin embargo, que parece requerir repetidamente la creación de cada cupón con el fin de construir la pierna.

¿Existe alguna otra forma más sencilla de abordar esto, dado que todo lo demás es similar a un VanillaSwap, excepto el uso de diferentes fechas de pago y cálculo?

0 votos

¿Cómo funcionaría ese canje (pago semestral y reajuste anual)? ¿Fijarías un tipo anual y luego lo pagarías durante dos cupones consecutivos?

0 votos

@LuigiBallabio Claro, siempre se puede fijar el tipo una vez y pagarlo en varias cuotas, supongo que algo así como un préstamo a tipo fijo. Aunque quiero que mis cálculos sean lo suficientemente genéricos como para que no importe si el pago es más o menos frecuente que los reinicios.

2voto

Brad Tutterow Puntos 5628

No hay código para esto en este momento. Lo que puedes hacer es clonar y modificar el FloatingLeg función en ql/cashflows/cashflowvectors.hpp para que tome otra frecuencia para los reinicios y la utilice para construir los cupones junto con las otras entradas. Si sólo necesita cupones LIBOR, puede eliminar los argumentos de la plantilla de las funciones modificadas y utilizar IborCoupon directamente para reducir su complejidad. Así que sí, crearás repetidamente los cupones, pero escribirás el código sólo una vez en la función.

Una vez que la escribes, puedes llamar a tu función modificada y pasar el tramo devuelto al Swap constructor. La pata fija puede ser construida por el FixedRateLeg declarada en ql/cashflows/fixedratecoupon.hpp .

0 votos

Eso es más o menos lo que pensé en hacer, la forma en que creo que esto podría funcionar es crear un VanillaSwap primero y tomar la pierna fija de allí, a continuación, crear el IborCoupons a mí mismo (un poco de lógica aquí para determinar qué cupón cae en cada período de pago) y luego usar Swap para finalmente atar las 2 piernas juntos.

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