aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/collateral/gs_fcm.py21
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=",",
)