aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/collateral/__main__.py4
-rw-r--r--python/collateral/baml_fcm.py11
-rw-r--r--python/collateral/gs_fcm.py15
3 files changed, 20 insertions, 10 deletions
diff --git a/python/collateral/__main__.py b/python/collateral/__main__.py
index b491265e..e270dc58 100644
--- a/python/collateral/__main__.py
+++ b/python/collateral/__main__.py
@@ -131,11 +131,11 @@ for fund in funds:
parse_dates=["maturity"],
)
positions_rates = pd.read_sql_query(
- "SELECT maturity_date, (fixed_rate /100)::NUMERIC(4, 4) as fixed_rate, currency, roll_day, notional, folder "
+ "SELECT maturity_date, (fixed_rate /100)::NUMERIC(4, 4) as fixed_rate, float_index, currency, roll_day, notional, folder "
"FROM list_ir_positions(%s, %s) ",
dawn_engine,
params=(fund_mapping[fund], workdate),
- index_col=["maturity_date", "fixed_rate", "roll_day"],
+ index_col=["maturity_date", "fixed_rate", "roll_day", "float_index"],
parse_dates=["maturity_date"],
)
df[(fund, fcm.upper())] = run_collateral(
diff --git a/python/collateral/baml_fcm.py b/python/collateral/baml_fcm.py
index f89bbc8f..b1459471 100644
--- a/python/collateral/baml_fcm.py
+++ b/python/collateral/baml_fcm.py
@@ -96,15 +96,18 @@ def collateral(d, positions, *, engine, fund="Serenitas", positions_irs, **kwarg
"EFFDATE",
"MATDATE",
"LEG1ROLLCONV",
+ "FLOATINGINDEX",
],
parse_dates=["MATDATE", "EFFDATE"],
)
df_rates.loc[df_rates["DIRECTION"] == "Rec", "NOTIONAL"] *= -1
df_rates["FIXEDRATE"] = df_rates["FIXEDRATE"].round(4)
- df_rates = df_rates.groupby(by=["MATDATE", "FIXEDRATE", "LEG1ROLLCONV"]).agg(
- {"NOTIONAL": "sum", "NPV": "sum"}
- )
- df_rates.index.names = ["maturity_date", "fixed_rate", "roll_day"]
+ _rate_index_mapping = {"USD-SOFR-COMPOUND": "SOFRRATE"}
+ df_rates["FLOATINGINDEX"] = df_rates["FLOATINGINDEX"].replace(_rate_index_mapping)
+ df_rates = df_rates.groupby(
+ by=["MATDATE", "FIXEDRATE", "LEG1ROLLCONV", "FLOATINGINDEX"]
+ ).agg({"NOTIONAL": "sum", "NPV": "sum"})
+ df_rates.index.names = ["maturity_date", "fixed_rate", "roll_day", "float_index"]
compare_notionals_rates(df_rates, positions_irs, "BAML")
positions_irs["Amount"] = df_rates.reindex(positions_irs.index)["NPV"]
positions_irs.folder.replace(STRATEGY_CASH_MAPPING, inplace=True)
diff --git a/python/collateral/gs_fcm.py b/python/collateral/gs_fcm.py
index 33d25bfd..2a0592b5 100644
--- a/python/collateral/gs_fcm.py
+++ b/python/collateral/gs_fcm.py
@@ -52,13 +52,20 @@ def collateral(d: datetime.date, positions, *, engine, fund, positions_irs, **kw
else row["Pay Leg Rate/Index"],
axis=1,
)
+ _rate_index_mapping = {"1Y-USD-SOFR-COMPOUND": "SOFRRATE"}
+ df_rates["float_index"] = df_rates.apply(
+ lambda row: _rate_index_mapping[row["Receive Leg Rate/Index"]]
+ if row["Direction"] == "Pay"
+ else _rate_index_mapping[row["Pay Leg Rate/Index"]],
+ axis=1,
+ )
# Going to fix roll day at IMM for now until we have the column updated
df_rates["roll_day"] = "IMM"
df_rates = df_rates.rename(columns={"Pay Notional": "NOTIONAL"})
- df_rates = df_rates.groupby(by=["Maturity Date", "fixed_rate", "roll_day"])[
- ["NOTIONAL", "NPV (local)"]
- ].sum()
- df_rates.index.names = ["maturity_date", "fixed_rate", "roll_day"]
+ df_rates = df_rates.groupby(
+ by=["Maturity Date", "fixed_rate", "roll_day", "float_index"]
+ )[["NOTIONAL", "NPV (local)"]].sum()
+ df_rates.index.names = ["maturity_date", "fixed_rate", "roll_day", "float_index"]
df = df[df["Instrument"] == "CDS"].drop(
["Instrument", "CCP Trade ID", "Pay Notional"], axis=1
)