aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/calibrate_swaption.py23
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)