diff options
| -rw-r--r-- | python/calibrate_swaption.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/python/calibrate_swaption.py b/python/calibrate_swaption.py index 62f7592d..da0698c2 100644 --- a/python/calibrate_swaption.py +++ b/python/calibrate_swaption.py @@ -40,7 +40,7 @@ def get_data_latest(): finally: return df -def calib(d, option, expiry, index, series): +def calib(d, option, index_type, series): option.strike = d['strike'] option.ref = d['ref'] r = [] @@ -55,24 +55,23 @@ def calib(d, option, expiry, index, series): print(e) else: r.append(option.sigma) - return [d['quotedate'], index, series, expiry, d['strike']] + r + return [d['quotedate'], index_type, series, option.exercise_date, d['strike']] + r -def calibrate(index=None, series=None, date=None, nproc=4, latest=False): +def calibrate(index_type=None, series=None, date=None, nproc=4, latest=False): sql_str = ("INSERT INTO swaption_calib VALUES({}) ON CONFLICT DO NOTHING". format(",".join(["%s"] * 9))) if latest: data = get_data_latest() else: - data = get_data(index, series, date) + data = get_data(index_type, series, date) for k, v in data.groupby([data['quotedate'].dt.date, 'expiry','index', 'series']): trade_date, expiry, index_type, series = k - index = Index.from_name(index_type, series, "5yr") - index.trade_date = trade_date + index = Index.from_name(index_type, series, "5yr", trade_date) option = Swaption(index, expiry.date(), 100, strike_is_price=index_type == "HY") r = Parallel(n_jobs=nproc)( - delayed(calib)(d, option, expiry.date(), index_type, series) for d in + delayed(calib)(d, option, index_type, series) for d in v[['ref', 'quotedate', 'strike', 'pay_bid', 'pay_offer', 'rec_bid', 'rec_offer']]. to_dict(orient = 'records')) serenitas_engine.execute(sql_str, r) |
