aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/option.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/option.py')
-rw-r--r--python/analytics/option.py8
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'")