aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/calibrate_swaption.py19
1 files changed, 11 insertions, 8 deletions
diff --git a/python/calibrate_swaption.py b/python/calibrate_swaption.py
index b04b223f..41210a26 100644
--- a/python/calibrate_swaption.py
+++ b/python/calibrate_swaption.py
@@ -21,14 +21,17 @@ def calib(d, option, expiry):
option.strike = d['strike']
option.ref = d['ref']
r = []
- for option_type in ['pay', 'rec']:
- option.option_type = 'payer' if option_type == 'pay' else 'receiver'
- mid = (d['{}_bid'.format(option_type)] + d['{}_offer'.format(option_type)])/2 * 1e-4
- option.pv = mid
- sigma = option.sigma
- option.pv_black = mid
- sigma_black = option.sigma
- r += [sigma, sigma_black]
+ for pv_type in ['pv', 'pv_black']:
+ for option_type in ['pay', 'rec']:
+ mid = (d['{}_bid'.format(option_type)] + d['{}_offer'.format(option_type)])/2 * 1e-4
+ option.option_type = 'payer' if option_type == 'pay' else 'receiver'
+ try:
+ setattr(option, pv_type, mid)
+ except ValueError:
+ r.append(None)
+ print(d['ref'], d['strike'], mid, option.intrinsic_value)
+ else:
+ r.append(option.sigma)
return [d['quotedate'], "IG", 27, expiry, d['strike']] + r
for k, v in data.groupby([data['quotedate'].dt.date, 'expiry']):