diff options
| -rw-r--r-- | python/calibrate_swaption.py | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/python/calibrate_swaption.py b/python/calibrate_swaption.py index bd3a17d7..7ab64176 100644 --- a/python/calibrate_swaption.py +++ b/python/calibrate_swaption.py @@ -7,12 +7,16 @@ from pickle import loads, dumps serenitasdb = dbconn('serenitasdb') -def get_data(index, series): - return pd.read_sql("SELECT * from swaption_ref_quotes JOIN swaption_quotes " \ - "USING (quotedate, index, series, expiry) WHERE index=%s and series=%s " \ - "ORDER BY quotedate", - "postgresql://serenitas_user@debian/serenitasdb", - params = (index, series), parse_dates = ['quotedate', 'expiry']) +def get_data(index, series, date = "'-infinity'::date"): + df = pd.read_sql("SELECT * from swaption_ref_quotes JOIN swaption_quotes " \ + "USING (quotedate, index, series, expiry) WHERE index=%s and series=%s " \ + "and quotedate >=%s ORDER BY quotedate", + "postgresql://serenitas_user@debian/serenitasdb", + params = (index, series, date), parse_dates = ['quotedate', 'expiry']) + df.loc[(df.quote_source == "GS") & (df['index'] =="HY"), + ["pay_bid", "pay_offer", "rec_bid", "rec_offer"]] *=100 + return df + def calib(d, option, expiry, index, series): option.strike = d['strike'] @@ -31,10 +35,10 @@ def calib(d, option, expiry, index, series): r.append(option.sigma) return [d['quotedate'], index, series, expiry, d['strike']] + r -def calibrate(index_type, series): +def calibrate(index_type, series, date): sql_str = ("INSERT INTO swaption_calib VALUES({}) ON CONFLICT DO NOTHING". format(",".join(["%s"] * 9))) - data = get_data(index_type, series) + data = get_data(index_type, series, date) index = Index.from_name(index_type, series, "5yr") for k, v in data.groupby([data['quotedate'].dt.date, 'expiry']): @@ -54,5 +58,6 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument('--index', required=True, type = lambda s: s.upper()) parser.add_argument('--series', required=True, type=int) + parser.add_argument('--date', required = False, default = "'-infinity'::date") args = parser.parse_args() - calibrate(args.index, args.series) + calibrate(args.index, args.series, args.date) |
