aboutsummaryrefslogtreecommitdiffstats
path: root/python/collateral_calc.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/collateral_calc.py')
-rw-r--r--python/collateral_calc.py29
1 files changed, 16 insertions, 13 deletions
diff --git a/python/collateral_calc.py b/python/collateral_calc.py
index 96a7efe4..e75e495a 100644
--- a/python/collateral_calc.py
+++ b/python/collateral_calc.py
@@ -1,10 +1,10 @@
-import logging
import os
import pandas as pd
import socket
import sys
-from db import dawn_engine
+from utils import SerenitasFileHandler
+from utils.db import dawn_engine, dbconn
try:
from env import DAILY_DIR, LOG_DIR
except KeyError:
@@ -23,9 +23,6 @@ from ssh2.error_codes import LIBSSH2_ERROR_EAGAIN
from ssh2.sftp import (LIBSSH2_FXF_READ, LIBSSH2_SFTP_S_IRUSR,
LIBSSH2_SFTP_S_IFDIR, LIBSSH2_SFTP_S_IFREG)
-logging.basicConfig(filename=LOG_DIR / 'collateral_calc.log',
- level=logging.WARNING,
- format='%(asctime)s %(message)s')
def get_sftp_client():
transport = Transport(('prmssp.amer.sgcib.com', 22))
@@ -117,8 +114,8 @@ def download_sftp_files(d=None,
else:
f = f"{d:%Y%m%d}_{report_type}.csv"
if f not in file_list:
- logging.info("File not here yet, trying again in 500s...")
- logging.info(f"Try count: {retry_count}")
+ logger.info("File not here yet, trying again in 500s...")
+ logger.info(f"Try count: {retry_count}")
sleep(500)
sftp.close()
download_sftp_files(d, report_types, retry_count + 1)
@@ -150,7 +147,7 @@ def download_ms_emails_from_gmail():
else:
p.write_bytes(part.get_payload(decode=True))
except (KeyError, UnicodeDecodeError) as e:
- logging.error("error decoding " + msg['id'])
+ logger.error("error decoding " + msg['id'])
continue
def download_ms_emails(count=20):
@@ -206,9 +203,9 @@ def compare_notionals(df, positions, fcm: str):
join(df["NOTIONAL"], how="left"))
diff_notionals = check_notionals[check_notionals.notional != check_notionals.NOTIONAL]
if not diff_notionals.empty:
- logging.error(f"Database and {fcm} FCM know different notionals")
+ logger.error(f"Database and {fcm} FCM know different notionals")
for t in diff_notionals.itertuples():
- logging.error(f"{t.Index[0]}\t{t.Index[1].date()}\t{t.notional}\t{t.NOTIONAL}")
+ logger.error(f"{t.Index[0]}\t{t.Index[1].date()}\t{t.notional}\t{t.NOTIONAL}")
def baml_collateral(d):
df = pd.read_csv(DAILY_DIR / "BAML_reports" /
@@ -528,7 +525,13 @@ def send_email(d, dfs):
if __name__ == "__main__":
import argparse
+ import logging
from dates import bus_day
+ fh = SerenitasFileHandler("collateral_calc.log")
+ logger = logging.getLogger("collateral_calc")
+ logger.addHandler(fh)
+ logger.setLevel(logging.WARNING)
+
parser = argparse.ArgumentParser()
parser.add_argument('workdate', nargs='?',
type=lambda s: pd.datetime.strptime(s, "%Y-%m-%d").date(),
@@ -551,14 +554,14 @@ if __name__ == "__main__":
try:
df_ms = ms_collateral(args.workdate, dawn_trades)
except FileNotFoundError as e:
- logging.info(e)
+ logger.info(e)
df_ms = ms_collateral(args.workdate-bus_day, dawn_trades)
#df_sg = sg_collateral(d)
df_baml = baml_collateral(args.workdate)
try:
df_gs = gs_collateral(args.workdate, dawn_trades)
except FileNotFoundError as e:
- logging.info(e)
+ logger.info(e)
df_gs = gs_collateral(args.workdate-busday, dawn_trades)
df_wells = wells_collateral(args.workdate)
df = pd.concat([df_gs.set_index("Strategy"),
@@ -569,7 +572,7 @@ if __name__ == "__main__":
keys=["GS", "MS", "CITI", "WF", "BAML"],
names=["broker", "strategy"]).reset_index()
df.strategy = df.strategy.str.replace("^(M_|SER_)?", "", 1)
- from db import dbconn
+
conn = dbconn('dawndb')
sql_str = ("INSERT INTO strategy_im VALUES(%s, %s, %s, %s, %s) "
"ON CONFLICT (date, strategy, broker) DO UPDATE "