diff options
Diffstat (limited to 'python/analytics/option.py')
| -rw-r--r-- | python/analytics/option.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/python/analytics/option.py b/python/analytics/option.py index 08614ab9..12e5ea75 100644 --- a/python/analytics/option.py +++ b/python/analytics/option.py @@ -22,7 +22,7 @@ from pyisda.flat_hazard import pv_vec import numpy as np from scipy.optimize import brentq from scipy.integrate import simps -from scipy.interpolate import SmoothBivariateSpline, interp2d, interp1d, CubicSpline +from scipy.interpolate import SmoothBivariateSpline, interp1d, CubicSpline from matplotlib import cm from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt @@ -607,7 +607,11 @@ def _calibrate_model(index, quotes, option_type, option_model, non_nan = ~np.isnan(vol) vol = vol[non_nan] moneyness = np.log(data[non_nan,1]) - h.append(CubicSpline(moneyness, vol, bc_type="natural")) + if moneyness.size <= 5: + interp_kind = 'linear' + else: + interp_kind = 'cubic' + h.append(interp1d(moneyness, vol, kind=interp_kind, fill_value="extrapolate")) return BivariateLinearFunction(T, h) else: raise ValueError("interp_method needs to be one of 'bivariate_spline' or 'bivariate_linear'") |
