aboutsummaryrefslogtreecommitdiffstats
path: root/python/bowdst.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/bowdst.py')
-rw-r--r--python/bowdst.py38
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")