aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/collateral_calc.py39
1 files changed, 27 insertions, 12 deletions
diff --git a/python/collateral_calc.py b/python/collateral_calc.py
index 7dd218d2..1c6e013c 100644
--- a/python/collateral_calc.py
+++ b/python/collateral_calc.py
@@ -45,21 +45,25 @@ def download_files(d=None,
ftp.retrbinary('RETR ' + f, fh.write)
-def download_ms_emails():
+def download_ms_emails(count=20):
emails = get_msgs(path=["NYops"], subject_filter="SERCX **Daily",
- count=20)
+ count=count)
DATA_DIR = DAILY_DIR / "MS_reports"
for msg in emails:
for attach in msg.attachments:
if 'NETSwaps' in attach.name:
- fname = attach.name.split("_")[1]
- with open(DATA_DIR / fname, "wb") as fh:
- fh.write(attach.content)
+ fname = "Trade_Detail_" + attach.name.split("_")[1]
+ elif 'NET_Collateral' in attach.name:
+ fname = "Collateral_Detail_" + attach.name.rsplit("_", 1)[1]
+ else:
+ continue
+ with open(DATA_DIR / fname, "wb") as fh:
+ fh.write(attach.content)
-def download_gs_emails():
+def download_gs_emails(count=20):
emails = get_msgs(path=["NYops", "Margin calls"],
subject_filter="Regulatory VM Margin",
- count=20)
+ count=count)
DATA_DIR = DAILY_DIR / "GS_reports"
for msg in emails:
for attach in msg.attachments:
@@ -123,7 +127,9 @@ def sg_collateral(d):
def ms_collateral(d):
- df = pd.read_excel(DAILY_DIR / "MS_reports" / f"{d:%Y%m%d}.xls" )
+ df = pd.read_excel(DAILY_DIR / "MS_reports" / f"Collateral_Detail_{d:%Y%m%d}.xls")
+ collat = float(df.loc[1, 'coll_val_ccy'].replace(",", ""))
+ df = pd.read_excel(DAILY_DIR / "MS_reports" / f"Trade_Detail_{d:%Y%m%d}.xls" )
d = {'TRCDX': 'IGTCDSCSH',
'ABINT': 'MBSCDSCSH',
'ACSWN': 'IRDEVCSH',
@@ -134,16 +140,22 @@ def ms_collateral(d):
amount = df.loc[df.trade_book == k, "collat_req_in_agr_ccy"].sum()
r.append((v, amount, "USD"))
acc += amount
- r.append(["M_CSH_CASH", -7_490_000 - acc, "USD"])
+ r.append(["M_CSH_CASH", -collat - acc, "USD"])
return pd.DataFrame.from_records(r, columns=['Strategy', 'Amount', 'Currency'])
-def gs_collateral(d):
+def load_gs_file(d, pattern):
try:
fname = next( (DAILY_DIR / "GS_reports").
- glob(f"Trade_Detail*{d.strftime('%d_%b_%Y')}*"))
+ glob(f"{pattern}*{d.strftime('%d_%b_%Y')}*"))
except StopIteration:
- raise IOError(f"GS trade file not found for date {d}")
+ raise IOError(f"GS {pattern} file not found for date {d}")
df = pd.read_excel(fname, skiprows=9, skipfooter=77)
+ return df
+
+def gs_collateral(d):
+ df = load_gs_file(d, "Collateral_Detail")
+ collateral = float(df.Quantity)
+ df = load_gs_file(d, "Trade_Detail")
df = df[['Transaction Type', 'NPV (USD)', 'Initial Margin Required']]
df = df.groupby('Transaction Type').sum()
df = df.sum(axis=1).to_frame(name='Amount')
@@ -153,6 +165,9 @@ def gs_collateral(d):
df.Strategy = df.Strategy.replace({'SWAP_CDINDT': 'IGTCDSCSH',
'GENERIC_IRSIRD': 'IRDEVCSH'})
df.Amount *= -1
+ df = df.append({'Strategy': "M_CSH_CASH",
+ 'Amount': -collateral - df.Amount.sum(),
+ 'Currency': "USD"}, ignore_index=True)
return df
def send_email(account, df_ms, df_sg, df_gs):