aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/calibrate_swaption.py22
1 files changed, 12 insertions, 10 deletions
diff --git a/python/calibrate_swaption.py b/python/calibrate_swaption.py
index cd004410..740c1be1 100644
--- a/python/calibrate_swaption.py
+++ b/python/calibrate_swaption.py
@@ -2,21 +2,19 @@ import pandas as pd
from serenitas.analytics import CreditIndex, Swaption, BlackSwaption
import datetime
-from serenitas.utils.db import dbengine
+from serenitas.utils.db import dbconn
from contextlib import contextmanager
from itertools import starmap
from functools import partial
from multiprocessing import Pool
-serenitas_engine = dbengine("serenitasdb")
-
-def get_data(index, series, date=datetime.date.min):
+def get_data(conn, index, series, date=datetime.date.min):
df = pd.read_sql_query(
"SELECT * from swaption_ref_quotes JOIN swaption_quotes "
"USING (ref_id) WHERE index=%s and series=%s "
"and quotedate >=%s ORDER BY quotedate",
- serenitas_engine,
+ conn,
params=(index, series, date),
parse_dates=["quotedate", "expiry"],
)
@@ -29,7 +27,7 @@ def get_data(index, series, date=datetime.date.min):
return df
-def get_data_latest():
+def get_data_latest(conn):
df = pd.read_sql_query(
"SELECT quotedate, index, series, expiry, ref, "
"quote_source, swaption_quotes.* "
@@ -37,7 +35,7 @@ def get_data_latest():
"JOIN swaption_quotes USING (ref_id) "
"LEFT JOIN swaption_calib USING (quote_id) "
"WHERE swaption_calib.quote_id is NULL",
- serenitas_engine,
+ conn,
parse_dates=["quotedate", "expiry"],
)
df.loc[
@@ -95,10 +93,13 @@ 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"] * 5)
)
+ serenitasdb = dbconn(
+ "serenitasdb", extra_option="-c idle_in_transaction_session_timeout=10s"
+ )
if latest:
- data = get_data_latest()
+ data = get_data_latest(serenitasdb)
else:
- data = get_data(index_type, series, date)
+ data = get_data(serenitasdb, index_type, series, date)
with MaybePool(nproc) as pool:
pstarmap = pool.starmap if pool else starmap
@@ -130,7 +131,8 @@ def calibrate(index_type=None, series=None, date=None, nproc=4, latest=False):
.itertuples(index=False, name=None),
)
to_insert = [[a] + b for a, b in zip(df.quote_id, r)]
- serenitas_engine.execute(sql_str, to_insert)
+ with serenitasdb.cursor() as c:
+ c.executemany(sql_str, to_insert)
if __name__ == "__main__":