5 votos

Motor de precios de modelos SABR en Python QuantLib

Estoy buscando un motor de fijación de precios del modelo SABR en la configuración de Python QuantLib. Sé que existe en la versión C++, pero no estoy seguro de si está disponible en Python. Cualquier sugerencia/respuesta con respecto al código fuente de Python será muy apreciada. ¡Gracias!

0 votos

¿Busca una implementación de SABR en Python? O está buscando QuantLib-Python ¿las fijaciones?

0 votos

Estoy buscando enlaces QuantLib-Python.

0 votos

¿Qué quiere decir exactamente con código fuente Pyhton? ¿Un ejemplo de uso de los bindings para invocar la funcionalidad SABR en QuantLib?

9voto

Chris Mc Puntos 31

He aquí un ejemplo sencillo que puede ser útil. Básicamente se trata de encontrar los parámetros de una sección determinada. Algunos de los parámetros podrían ser asumidos al inicio en lugar de ser calibrados.

import QuantLib as ql
import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import minimize

strikes = [105, 106, 107, 108, 109, 110, 111, 112]
fwd = 120.44
expiryTime = 17/365
marketVols = [0.4164, 0.408, 0.3996, 0.3913, 0.3832, 0.3754, 0.3678, 0.3604]

params = [0.1] * 4
def f(params):
    vols = np.array([
        ql.sabrVolatility(strike, fwd, expiryTime, *params)
        for strike in strikes
    ])
    return ((vols - np.array(marketVols))**2 ).mean() **.5

cons=(
    {'type': 'ineq', 'fun': lambda x:  0.99 - x[1]},
    {'type': 'ineq', 'fun': lambda x: x[1]},    
    {'type': 'ineq', 'fun': lambda x: x[3]}
)

result = minimize(f, params, constraints=cons)
new_params = result['x']

newVols = [ql.sabrVolatility(strike, fwd, expiryTime, *new_params) for strike in strikes]
plt.plot(strikes, marketVols, marker='o', label="market")
plt.plot(strikes, newVols, marker='o', label="SABR")
plt.legend();

enter image description here

0 votos

¡Funciona de maravilla! ¡Gracias David!

0 votos

Muy buen fragmento

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