aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/collateral/__main__.py2
-rw-r--r--python/collateral/baml_fcm.py2
-rw-r--r--python/collateral/common.py8
-rw-r--r--python/collateral/gs_fcm.py4
-rw-r--r--python/collateral/ms.py2
-rw-r--r--python/collateral/wells.py2
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)