aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/option.py18
1 files changed, 12 insertions, 6 deletions
diff --git a/python/analytics/option.py b/python/analytics/option.py
index 148e0e34..9adbed8b 100644
--- a/python/analytics/option.py
+++ b/python/analytics/option.py
@@ -554,13 +554,19 @@ class ProbSurface(QuoteSurface):
rec_mid=quotes[['rec_bid','rec_offer']].mean(1),
forward_annuity=quotes.expiry.apply(_forward_annuity,
args=(self._index,)))
- quotes.pay_mid /= quotes.forward_annuity
- quotes.rec_mid /= quotes.forward_annuity
quotes = quotes.sort_values(['expiry', 'strike'])
- prob_pay = np.concatenate([-np.gradient(df.pay_mid, df.strike)
- for _, df in quotes.groupby('expiry')])
- prob_rec = np.concatenate([1 - np.gradient(df.rec_mid, df.strike)
- for _, df in quotes.groupby('expiry')])
+ if 'HY' in self._index.name:
+ quotes.pay_mid = quotes.pay_mid/100
+ quotes.rec_mid = quotes.rec_mid/100
+ sign = 1.
+ else:
+ quotes.pay_mid /= quotes.forward_annuity
+ quotes.rec_mid /= quotes.forward_annuity
+ sign = -1.
+ prob_pay = np.concatenate([sign * np.gradient(df.pay_mid, df.strike)
+ for _, df in quotes.groupby('expiry')])
+ prob_rec = np.concatenate([1 + sign * np.gradient(df.rec_mid, df.strike)
+ for _, df in quotes.groupby('expiry')])
prob = bn.nanmean(np.stack([prob_pay, prob_rec]), axis=0)
prob = np.clip(prob, 1e-10, None, out=prob)
f = SmoothBivariateSpline(quotes.time.values[~np.isnan(prob)],