aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/calibrate_tranches_BC.py22
1 files changed, 17 insertions, 5 deletions
diff --git a/python/calibrate_tranches_BC.py b/python/calibrate_tranches_BC.py
index cd32760b..d75c2e3d 100644
--- a/python/calibrate_tranches_BC.py
+++ b/python/calibrate_tranches_BC.py
@@ -1,4 +1,4 @@
-from db import dbconn, dbengine
+from db import dbconn
from analytics import TrancheBasket
from pandas.tseries.offsets import BDay
import datetime
@@ -19,6 +19,16 @@ def get_lastdate(conn, index, series, tenor):
conn.commit()
return date
+def build_sql_str(df):
+ cols = ','.join(df.columns)
+ cols_ex_tranche_id = ','.join([c for c in df.columns if c != 'tranche_id'])
+ cols_excluded = ','.join([f"excluded.{c}" for c in df.columns if c != 'tranche_id'])
+ place_holders = ",".join([f"%({c})s" for c in df.columns])
+ sql_str = (f"INSERT INTO tranche_risk({cols}) "
+ f"VALUES({place_holders}) ON CONFLICT (tranche_id) DO "
+ f"UPDATE SET ({cols_ex_tranche_id}) = ({cols_excluded})")
+ return sql_str
+
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
@@ -68,8 +78,7 @@ if __name__ == "__main__":
'eu30': datetime.date(2018, 9, 25),
'xo30': datetime.date(2018, 9, 25)}
- serenitas_engine = dbengine('serenitasdb')
- serenitas_conn = serenitas_engine.raw_connection()
+ serenitas_conn = dbconn('serenitasdb')
if args.config is None:
if args.index is None:
raise ValueError("Please provide an index to run")
@@ -132,5 +141,8 @@ if __name__ == "__main__":
del df['fwd_gamma']
data[d] = df
if data:
- (pd.concat(data).
- to_sql("tranche_risk", serenitas_engine, if_exists='append', index=False))
+ data = pd.concat(data)
+ sql_str = build_sql_str(data)
+ with serenitas_conn.cursor() as c:
+ c.executemany(sql_str, data.to_dict(orient='record'))
+ serenitas_conn.commit()