diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/collateral/__main__.py | 2 | ||||
| -rw-r--r-- | python/collateral/baml_fcm.py | 2 | ||||
| -rw-r--r-- | python/collateral/common.py | 8 | ||||
| -rw-r--r-- | python/collateral/gs_fcm.py | 4 | ||||
| -rw-r--r-- | python/collateral/ms.py | 2 | ||||
| -rw-r--r-- | python/collateral/wells.py | 2 |
6 files changed, 13 insertions, 7 deletions
diff --git a/python/collateral/__main__.py b/python/collateral/__main__.py index 294b26e8..1c333a18 100644 --- a/python/collateral/__main__.py +++ b/python/collateral/__main__.py @@ -66,7 +66,7 @@ cp_dict = { }, "Selene": { "fcms": ("baml_fcm",), - "isda_cps": ("baml_isda", "gs"), + "isda_cps": ("baml_isda", "gs", "ms"), }, } diff --git a/python/collateral/baml_fcm.py b/python/collateral/baml_fcm.py index 0e82c1c7..245c1a30 100644 --- a/python/collateral/baml_fcm.py +++ b/python/collateral/baml_fcm.py @@ -58,7 +58,7 @@ def collateral(d, positions, *, engine, fund="Serenitas", positions_irs, **kwarg {"NOTIONAL": "sum", "DIRTYUPFRONT": "first"} ) df = df[df.NOTIONAL != 0.0] - compare_notionals(df, positions, "BAML") + compare_notionals(df, positions, "BAML", fund) positions["dirtyupfront"] = df.reindex(positions.index)["DIRTYUPFRONT"] positions["Amount"] = positions["notional"] * positions["dirtyupfront"] positions.folder = positions.folder.replace(STRATEGY_CASH_MAPPING) diff --git a/python/collateral/common.py b/python/collateral/common.py index 1cecbd9f..78c2d0b2 100644 --- a/python/collateral/common.py +++ b/python/collateral/common.py @@ -39,19 +39,23 @@ CASH_STRATEGY_MAPPING = { STRATEGY_CASH_MAPPING = {e: k for k, v in CASH_STRATEGY_MAPPING.items() for e in v} -def compare_notionals(df: pd.DataFrame, positions: pd.DataFrame, fcm: str) -> None: +def compare_notionals( + df: pd.DataFrame, positions: pd.DataFrame, fcm: str, fund: str +) -> None: check_notionals = ( positions.groupby(level=["security_id", "maturity"])[["notional"]] .sum() .join(df["NOTIONAL"], how="left") ) + if fund == "Selene": + breakpoint() diff_notionals = check_notionals[ (check_notionals.notional != check_notionals.NOTIONAL) & (check_notionals.notional != 0.0) ] if not diff_notionals.empty: - logger.error(f"Database and {fcm} FCM know different notionals") + logger.error(f"Database and {fcm} FCM at {fund} know different notionals") for t in diff_notionals.itertuples(): logger.error( f"{t.Index[0]}\t{t.Index[1]:%Y-%m-%d}\t{t.notional}\t{t.NOTIONAL}" diff --git a/python/collateral/gs_fcm.py b/python/collateral/gs_fcm.py index 1ffdc8f9..11385e96 100644 --- a/python/collateral/gs_fcm.py +++ b/python/collateral/gs_fcm.py @@ -23,7 +23,7 @@ def get_filename(d: datetime.date, name: str): return fname -def collateral(d: datetime.date, positions, *, engine, **kwargs): +def collateral(d: datetime.date, positions, *, engine, fund, **kwargs): df = pd.read_csv( get_filename(d + datetime.timedelta(days=1), "Open_Trades_Redcode"), usecols=[ @@ -45,7 +45,7 @@ def collateral(d: datetime.date, positions, *, engine, **kwargs): ["Notional", "NPV (local)"] ].sum() df = df.rename(columns={"Notional": "NOTIONAL"}) - compare_notionals(df, positions, "GS") + compare_notionals(df, positions, "GS", fund) df["dirty_upfront"] = df["NPV (local)"] / df.NOTIONAL positions["dirty_upfront"] = df.reindex(positions.index)["dirty_upfront"] positions["Amount"] = positions["notional"] * positions["dirty_upfront"] diff --git a/python/collateral/ms.py b/python/collateral/ms.py index 8b341f40..61e0346d 100644 --- a/python/collateral/ms.py +++ b/python/collateral/ms.py @@ -7,12 +7,14 @@ paths = { "Serenitas": ["NYops", "Margin calls MS"], "Brinker": ["NYops", "Margin Calls MS-Brinker"], "BowdSt": ["BowdoinOps", "Margin MS"], + "Selene": ["SeleneOps", "Margin MS"], } subjects = { "Serenitas": "SERCX **Daily", "Brinker": "061761QY1***BRINKER", "BowdSt": "BOSTON PATRIOT BOWDOIN", + "Selene": "ISO SELENE", } diff --git a/python/collateral/wells.py b/python/collateral/wells.py index 64917c10..d8e59b6b 100644 --- a/python/collateral/wells.py +++ b/python/collateral/wells.py @@ -59,7 +59,7 @@ def collateral(d, positions, *, engine, fund="Serenitas", **kwargs): df["NOTIONAL"] = df.NOTIONAL.where(df.BUY_SELL == 1, -df.NOTIONAL).astype("float") df["DIRTYUPFRONT"] = df.MARKET_VALUE_NPV / df.NOTIONAL df.index.names = ["security_id", "maturity"] - compare_notionals(df, positions, "Wells") + compare_notionals(df, positions, "Wells", fund) positions = positions.join(df, how="left") positions["Amount"] = positions["notional"] * positions["DIRTYUPFRONT"] positions.folder = positions.folder.replace(STRATEGY_CASH_MAPPING) |
