aboutsummaryrefslogtreecommitdiffstats
path: root/python/parse_baml_swaption.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/parse_baml_swaption.py')
-rw-r--r--python/parse_baml_swaption.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/python/parse_baml_swaption.py b/python/parse_baml_swaption.py
index 86aad8f4..91767af7 100644
--- a/python/parse_baml_swaption.py
+++ b/python/parse_baml_swaption.py
@@ -2,10 +2,14 @@ from serenitas.utils.exchange import ExchangeMessage
import pandas as pd
from serenitas.utils.db import dawn_engine
import sys
+from sqlalchemy.exc import IntegrityError
+import logging
sys.path.append("/home/flint/projects/ops/serenitas")
from ops.trade_dataclasses import SwaptionDeal
+logger = logging.getLogger(__name__)
+
columns = [
"option_recap",
"index_buyer",
@@ -28,7 +32,7 @@ columns = [
em = ExchangeMessage()
-for msg in em.get_msgs(path=["AutoBook", "BAML Swaption"], count=2):
+for msg in em.get_msgs(path=["AutoBook", "BAML Swaption"], count=5):
dfs = pd.read_html(msg.body)
trades = []
for df in dfs:
@@ -39,15 +43,18 @@ for msg in em.get_msgs(path=["AutoBook", "BAML Swaption"], count=2):
trades.append(trade)
trade = SwaptionDeal.from_baml_email(trade)
trade.stage()
- trade.commit()
+
df = pd.DataFrame.from_dict(trades)
df.columns = df.columns.str.lower().str.replace(" ", "_")
- additional_columns = ["collateral"] if "collateral" in df.columns else []
- df = df[columns + additional_columns]
+ if "collateral" in df.columns:
+ columns.append("collateral")
+ df = df[columns]
try:
df.to_sql(
"baml_swaption_ticket", index=False, con=dawn_engine, if_exists="append"
)
- except Exception as e:
- print(e)
+ except IntegrityError as e:
+ logger.warning(e)
+ else:
+ trade.commit()