diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/calibrate_swaption.py | 22 |
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__": |
