2 votos

Cálculo de las grietas para Quantlib Python Swaptions

Así que he creado un objeto Swaption y puedo obtener la prima con la función NPV(). Sin embargo, también me gustaría calcular los griegos (por ejemplo, delta, vega).

Buscando un poco, he encontrado que vega se puede extraer de la función additionalResults () de la clase instrumento, pero no parece estar definida para la versión Python de Quantlib.

Por ejemplo, dejemos que swaption sea una instancia inicializada de un objeto Swaption.

swaption.NPV() me da el valor esperado, pero swaption.additionalResults() y swaption.result("Vega") no están definidos.

http://cogitolearning.co.uk/?p=490 Este enlace muestra el análogo en c++ de estas funciones.

De lo contrario, ¿cómo podría calcular estos valores? No estoy seguro de si BlackCalculator es apropiado para estos cálculos en un swaption .

3voto

Brad Tutterow Puntos 5628

Ni el additionalResults ni el result se exportan a Python a través de SWIG. Es poco probable que esto cambie en el futuro: result es un método de plantilla, y no puede ser exportado a Python como tal, mientras que additionalResults requeriría una forma sensata de exportar boost::any a Python y convertirlo a un tipo de datos determinado.

Sin embargo, si puede recompilar el módulo QuantLib Python, puede añadir al Swaption clase a vega que hace la llamada que citas en el enlace. Editar swaption.i en el QuantLib-SWIG distribución y añadir

Real vega() {
    return self->result<Real>("vega");
}

a la %extend sección del Swaption interfaz ( self es una variable utilizada por SWIG para denotar el objeto actual, como en Python). Esto añadirá un vega a la envoltura de Python que ejecuta la llamada anterior.

(Una nota: cuando lo pongas en marcha, considera abrir un pull request con tu cambio para el repositorio QuantLib-SWIG en Github .)

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