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