Tengo dos listas para describir la función y(x) que representa los golpes y el valor relativo de la inclinación de una superficie de volatilidad:
x_points = [22.56, 27.07, 31.58, 36.10, 40.61, 45.12, 49.63, 54.14, 58.66, 63.17, 67.68] %strikes value
y_points = [97.44, 87.32, 79.73, 75.47, 73.58, 74.53, 78.61, 83.64, 88.03, 92.26, 96.44] %vol value
Me gustaría realizar una interpolación spline cúbica para recuperar el rango 0;200 del sesgo pero, usando el código de abajo, obtengo algunos valores negativos (solución no consistente):
def f(x):
x = np.linspace(0, 200, 399)
tck = interpolate.splrep(x_points, y_points)
return interpolate.splev(x, tck)
Por favor, ¿podríais darme vuestra opinión y ayuda para solucionar el problema? Tal vez la curva no debe ser ajustado con Spline cúbico o debo añadir algunas restricciones al problema de optimización (ni idea en absoluto ...)