diff options
| -rw-r--r-- | python/collateral/__main__.py | 17 | ||||
| -rw-r--r-- | python/collateral/baml_isda.py | 25 | ||||
| -rw-r--r-- | python/collateral/gs.py | 2 | ||||
| -rw-r--r-- | python/collateral/ms.py | 2 |
4 files changed, 34 insertions, 12 deletions
diff --git a/python/collateral/__main__.py b/python/collateral/__main__.py index 01d2a283..7c8cbf6b 100644 --- a/python/collateral/__main__.py +++ b/python/collateral/__main__.py @@ -42,13 +42,14 @@ counterparties = ( "gs_fcm", "jpm", ) +funds = ("Serenitas", "Brinker", "BowdSt", "Selene") if args.download: from serenitas.utils.exchange import ExchangeMessage em = ExchangeMessage() for cp in counterparties: cp_mod = import_module(f".{cp}", "collateral") - for fund in ("Serenitas", "Brinker", "BowdSt"): + for fund in funds: cp_mod.download_files(em, fund=fund) workdate = prev_business_day(args.workdate) @@ -63,6 +64,10 @@ cp_dict = { "fcms": ("gs_fcm",), "isda_cps": ("ms", "bnp", "gs", "baml_isda", "cs", "jpm"), }, + "Selene": { + "fcms": ("baml_fcm",), + "isda_cps": ("baml_isda",), + }, } @@ -91,9 +96,14 @@ def run_collateral(cp, fund, positions, positions_rates, workdate, engine): df = {} fcm_mapping = {"baml_fcm": "BAML", "wells": "WF", "gs_fcm": "GS"} -fund_mapping = {"Serenitas": "SERCGMAST", "Brinker": "BRINKER", "BowdSt": "BOWDST"} +fund_mapping = { + "Serenitas": "SERCGMAST", + "Brinker": "BRINKER", + "BowdSt": "BOWDST", + "Selene": "ISOSEL", +} -for fund in ("Serenitas", "Brinker", "BowdSt"): +for fund in funds: bilat_positions = get_bilateral_trades(workdate, fund_mapping[fund], dawn_engine) for fcm in cp_dict[fund]["fcms"]: positions = pd.read_sql_query( @@ -115,7 +125,6 @@ for fund in ("Serenitas", "Brinker", "BowdSt"): df[(fund, fcm.upper())] = run_collateral( fcm, fund, positions, positions_rates, workdate, dawn_engine ) - for cp in cp_dict[fund]["isda_cps"]: df[(fund, cp.upper())] = run_collateral( cp, fund, bilat_positions, None, workdate, dawn_engine diff --git a/python/collateral/baml_isda.py b/python/collateral/baml_isda.py index 685c0a12..c87f8ea1 100644 --- a/python/collateral/baml_isda.py +++ b/python/collateral/baml_isda.py @@ -61,6 +61,7 @@ def download_from_secure_id( paths = { "Serenitas": ["NYops", "Margin Calls Baml"], "BowdSt": ["BowdoinOps", "Margin BoA"], + "Selene": ["SeleneOps", "Margin BoA"], } @@ -176,16 +177,24 @@ def collateral(d, dawn_trades, *, fund="Serenitas", **kwargs): raise ValueError(f"no collateral data for date {report_date}") df = pd.read_excel(fname, skiprows=6, skipfooter=6) if df.empty: - raise ValueError("empty collateral file") - df = df.drop(0, axis=0) + collateral = 0 + logger.warning("empty collateral file") + else: + df = df.drop(0, axis=0) + try: + collateral = float(df.Notional) + except TypeError: + collateral = df.Notional.sum() try: - collateral = float(df.Notional) - except TypeError: - collateral = df.Notional.sum() - try: - tag = "SLP" if fund == "Serenitas" else "LLC" + match fund: + case "Serenitas": + tag = "TSLP" + case "Bowdst": + tag = "TLLC" + case "Selene": + tag = "INC" fname = next( - REPORTS_DIR.glob(f"301__LMCG_INVESTMENT{tag}_CSA_{report_date:%m%d%Y}_*") + REPORTS_DIR.glob(f"301__LMCG_INVESTMEN{tag}_CSA_{report_date:%m%d%Y}_*") ) except StopIteration: raise ValueError(f"no trade-level data for date {report_date}") diff --git a/python/collateral/gs.py b/python/collateral/gs.py index 03bb4be0..c747f940 100644 --- a/python/collateral/gs.py +++ b/python/collateral/gs.py @@ -12,6 +12,8 @@ paths = { def download_files(em, count=20, *, fund="Serenitas", **kwargs): + if fund not in paths: + return emails = em.get_msgs(path=paths[fund], count=count, subject__contains="Margin") DATA_DIR = DAILY_DIR / fund / "GS_reports" for msg in emails: diff --git a/python/collateral/ms.py b/python/collateral/ms.py index dc50613d..8b341f40 100644 --- a/python/collateral/ms.py +++ b/python/collateral/ms.py @@ -17,6 +17,8 @@ subjects = { def download_files(em, count=20, *, fund="Serenitas", **kwargs): + if fund not in paths: + return emails = em.get_msgs( path=paths[fund], count=count, |
