diff options
Diffstat (limited to 'python/collateral/gs_fcm.py')
| -rw-r--r-- | python/collateral/gs_fcm.py | 15 |
1 files changed, 11 insertions, 4 deletions
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 ) |
