diff options
Diffstat (limited to 'python/bowdst.py')
| -rw-r--r-- | python/bowdst.py | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/python/bowdst.py b/python/bowdst.py index 52168769..1f7ee64a 100644 --- a/python/bowdst.py +++ b/python/bowdst.py @@ -30,9 +30,8 @@ def download_messages(em): p.write_bytes(attach.content) -def get_positions( - workdate: datetime.date, -) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: +def cmp_positions(cob: datetime.date, df_blotter: pd.DataFrame) -> pd.DataFrame: + workdate = (cob + bus_day).date() p = DAILY_DIR / str(workdate) / "Reports" / f"Asset Detail_{workdate:%d %b %Y}.csv" df = pd.read_csv(p, thousands=",") df = df[df["Asset Type"] == "FIXED INCOME SECURITIES"] @@ -41,20 +40,25 @@ def get_positions( for col in df.select_dtypes(include=["object"]).columns: df[col] = df[col].apply(lambda s: s[1:-1] if s.startswith("(") else s) df[col] = pd.to_numeric(df[col].str.replace(",", "")) + check = df_blotter.join(df) + return check + + +def get_positions( + cob: datetime.date, +) -> Tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: dawndb = dbconn("dawndb") - d = (workdate - bus_day).date() df_blotter = pd.read_sql_query( "SELECT * FROM risk_positions(%s, NULL, %s)", dawndb, - params=(d, "BOWDST"), + params=(cob, "BOWDST"), index_col=["identifier"], ) - check = df_blotter.join(df) cds_positions = pd.read_sql_query( "SELECT * FROM list_cds_marks_pre(%s, NULL, %s)", dawndb, - params=(d, "BOWDST"), + params=(cob, "BOWDST"), index_col=["security_id"], ) tranche_positions = pd.read_sql_query( @@ -64,7 +68,7 @@ def get_positions( "LEFT JOIN tranche_risk ON id=tranche_id AND date=%s " "WHERE orig_attach IS NOT NULL", dawndb, - params=(d, "BOWDST", d), + params=(cob, "BOWDST", cob), index_col=["id"], ) @@ -89,7 +93,7 @@ def send_email( ) buf.close() em.send_email( - f"{workdate} positions", + f"{workdate} EOD positions", "", to_recipients=("reconfiles@bnymellon.com", "hm-operations@bnymellon.com"), cc_recipients=("bowdoin-ops@lmcg.com",), @@ -98,9 +102,19 @@ def send_email( if __name__ == "__main__": + import argparse + + parser = argparse.ArgumentParser() + parser.add_argument( + "cob", + nargs="?", + type=datetime.date.fromisoformat, + default=(datetime.date.today() - bus_day).date(), + help="close of business date", + ) + args = parser.parse_args() em = ExchangeMessage() download_messages(em) - workdate = datetime.date.today() - df_bonds, df_cds, df_tranches = get_positions(workdate) - send_email(em, workdate, df_bonds, df_cds, df_tranches) + df_bonds, df_cds, df_tranches = get_positions(args.cob) + send_email(em, args.cob, df_bonds, df_cds, df_tranches) # sftp = SftpClient.from_creds("gs") |
