6 votos

Mejor práctica en QuantLib Python para incluir la tasa de préstamo

Cuando se fija el precio de una opción de vainilla, hay como mínimo 3 curvas de rendimiento a considerar:

  • curva de rendimiento sin riesgo = YC
  • curva de rendimiento de dividendos = DC (o dividendos discretos para opciones americanas pero no es el tema aquí)
  • curva de préstamos = BC

Cuando se construye un proceso (por ejemplo BlackScholesMertonProcess) solo podemos pasar 2 curvas, una curva de rendimiento y una curva de dividendos. En consecuencia, necesitamos ajustar una de las curvas.

Probablemente no queremos modificar YC para que cualquier descuento que no esté ocurriendo en el activo subyacente (por ejemplo para el valor de la opción) siga siendo preciso.

Esto nos deja con la combinación de DC y BC y pasar el resultado de esta combinación como la curva de dividendos en el proceso.

¿Cuál es la mejor práctica para lograr esto? ¿Es usar algo como SpreadedLinearZeroInterpolatedTermStructure y propagar DC por BC? O en su lugar deberíamos construir nuestra propia utilidad para agregar curvas?

Ciertamente existen algunos problemas de velocidad asociados con esto, por lo tanto, estoy buscando la solución que brinde el tiempo de fijación de precios más rápido.

Gracias

3voto

Pete Doyle Puntos 153

Sin conocer cómo funcionan las entrañas de QuantLib, la curva de préstamo y la curva de dividendos deberían incluirse juntas. Si lo piensas, tanto los costos de préstamo como los dividendos afectan a la acción utilizada para la cobertura delta, mientras que el descuento libre de riesgo se aplica a toda la cartera (opción más cobertura, es decir, acción y cuenta bancaria).

Tal vez las notas http://www.math.ualberta.ca/~cfrei/PIMS/M_Rutkowski_PIMS_slides.pdf te puedan ayudar. En la diapositiva 18 puedes ver cómo el financiamiento (en una versión más complicada, pero puedes tomar simplemente $f^\beta$ como tu tasa de préstamo) entra en la fórmula de BS, por ejemplo.

2voto

Brad Tutterow Puntos 5628

Depende de tus casos de uso.

Algo como SpreadedLinearZeroInterpolatedTermStructure, como sugeriste, funcionará pero utilizará tanto la curva original como el spread interpolado cada vez que necesites tasas, lo cual no será tan rápido como sea posible.

Si tus curvas tienen nodos compatibles, puedes escribir un código para crear manualmente una curva combinada interpolada. Sin embargo, si tu curva de tasas es, por ejemplo, el resultado de un proceso de bootstrap, la curva combinada no reaccionará automáticamente a los cambios en las tasas de entrada.

Además, la diferencia de tiempo podría no ser relevante en el contexto de tus cálculos más grandes, así que yo la mediría y la usaría como un factor en tu decisión.

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