diff options
| -rw-r--r-- | python/collateral/gs_fcm.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/python/collateral/gs_fcm.py b/python/collateral/gs_fcm.py index 2a0592b5..983ed1d3 100644 --- a/python/collateral/gs_fcm.py +++ b/python/collateral/gs_fcm.py @@ -1,6 +1,8 @@ import datetime import pandas as pd +from serenitas.analytics.dates import next_business_day + from . import DAILY_DIR, SftpClient from .common import compare_notionals, compare_notionals_rates, STRATEGY_CASH_MAPPING @@ -23,9 +25,18 @@ def get_filename(d: datetime.date, name: str): return fname +def get_file_date(d: datetime.date): + # GS weekend timestamp is now same date instead of prev_date + 1 + if d > datetime.date(2023, 6, 1): + return next_business_day(d) + else: + return d + datetime.timedelta(days=1) + + def collateral(d: datetime.date, positions, *, engine, fund, positions_irs, **kwargs): + file_date = get_file_date(d) df = pd.read_csv( - get_filename(d + datetime.timedelta(days=1), "Open_Trades_Redcode"), + get_filename(file_date, "Open_Trades_Redcode"), usecols=[ "Notional", "Direction", @@ -47,9 +58,9 @@ def collateral(d: datetime.date, positions, *, engine, fund, positions_irs, **kw df_rates = df_rates.reset_index() df_rates.loc[df_rates["Direction"] == "Receive", "Pay Notional"] *= -1 df_rates["fixed_rate"] = df_rates.apply( - lambda row: row["Receive Leg Rate/Index"] + lambda row: float(row["Receive Leg Rate/Index"]) if row["Direction"] == "Receive" - else row["Pay Leg Rate/Index"], + else float(row["Pay Leg Rate/Index"]), axis=1, ) _rate_index_mapping = {"1Y-USD-SOFR-COMPOUND": "SOFRRATE"} @@ -109,9 +120,7 @@ def collateral(d: datetime.date, positions, *, engine, fund, positions_irs, **kw df["date"] = cob_date df_margin = pd.read_csv( - get_filename( - d + datetime.timedelta(days=1), "Account_Balances_and_Margin_extended" - ), + get_filename(file_date, "Account_Balances_and_Margin_extended"), parse_dates=["COB Date"], thousands=",", ) |
