aboutsummaryrefslogtreecommitdiffstats
path: root/python/recon_bowdst.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/recon_bowdst.py')
-rw-r--r--python/recon_bowdst.py38
1 files changed, 34 insertions, 4 deletions
diff --git a/python/recon_bowdst.py b/python/recon_bowdst.py
index 87cca80e..90d3ce52 100644
--- a/python/recon_bowdst.py
+++ b/python/recon_bowdst.py
@@ -1,6 +1,9 @@
import pandas as pd
from serenitas.utils.db import dbconn
import argparse
+from serenitas.utils.exchange import ExchangeMessage
+from exchangelib import FileAttachment
+from io import StringIO
def difference(df):
@@ -14,11 +17,20 @@ def difference(df):
return df
+def sums(df):
+ if ("db_mv" in df.columns) and ("db_notional" in df.columns):
+ return df[["db_mv", "admin_mv", "db_notional", "admin_notional"]].sum()
+ elif "db_mv" in df.columns:
+ return df[["db_mv", "admin_mv"]].sum()
+ elif "db_notional" in df.columns:
+ return df[["db_notional", "admin_notional"]].sum()
+
+
def recon(hierarchy_file, date):
df = pd.read_excel(hierarchy_file)
- security_balance = df[df["Asset Type"] == "FIXED INCOME SECURITIES"][
- "Base Market Value"
- ].sum()
+ # security_balance = df[df["Asset Type"] == "FIXED INCOME SECURITIES"][
+ # "Base Market Value"
+ # ].sum()
bowd_bond_trades = df[df["CUSIP"].notnull()]
bond_asset_classes = ["Subprime", "CRT", "CLO"]
@@ -75,8 +87,26 @@ def recon(hierarchy_file, date):
kinds = [bond_trades, tranche_trades, cdx_trades, cdx_swaption_trades]
names = ["bond_trades", "tranche_trades", "cdx_trades", "cdx_swaption_trades"]
+ message = ""
+ em = ExchangeMessage()
+ attachments = []
for kind, name in zip(kinds, names):
- difference(kind).to_csv(f"/home/serenitas/flint/{name}_{date}.csv")
+ # difference(kind).to_csv(f"/home/serenitas/flint/{name}_{date}.csv")
+ buf = StringIO()
+ difference(kind).to_csv(buf)
+ attachments.append(
+ FileAttachment(name=f"{name}_{date}.csv", content=buf.getvalue().encode())
+ )
+ pd.set_option("display.float_format", lambda x: "%.2f" % x)
+ message += f"\n{name}: {pd.DataFrame(sums(kind), columns=['sums'])}"
+
+ # print(f"{name}: {sums(kind)}")
+ em.send_email(
+ subject="Notional Totals",
+ body=message,
+ to_recipients=("fyu@lmcg.com",),
+ attach=attachments,
+ )
parser = argparse.ArgumentParser()