diff options
Diffstat (limited to 'python/collateral/baml_fcm.py')
| -rw-r--r-- | python/collateral/baml_fcm.py | 50 |
1 files changed, 46 insertions, 4 deletions
diff --git a/python/collateral/baml_fcm.py b/python/collateral/baml_fcm.py index c7c892a4..6847eb93 100644 --- a/python/collateral/baml_fcm.py +++ b/python/collateral/baml_fcm.py @@ -1,5 +1,5 @@ from . import DAILY_DIR, SftpClient -from .common import compare_notionals, STRATEGY_CASH_MAPPING +from .common import compare_notionals, compare_notionals_rates, STRATEGY_CASH_MAPPING import pandas as pd from sqlalchemy.exc import IntegrityError @@ -11,12 +11,21 @@ def download_files(*args, fund="Serenitas", **kwargs): sftp.download_files("outgoing", DAILY_DIR / fund / "BAML_reports") -def collateral(d, positions, *, engine, fund="Serenitas", **kwargs): - df = pd.read_csv( +def load_csv(file_type, fund, d, **kwargs): + return pd.read_csv( DAILY_DIR / fund / "BAML_reports" - / f"OTC_Open_Positions_-_Credit_-_LMCG_{d:%Y%m%d}.CSV", + / f"OTC_Open_Positions_-_{file_type}_-_LMCG_{d:%Y%m%d}.CSV", + **kwargs, + ) + + +def collateral(d, positions, *, engine, fund="Serenitas", positions_irs, **kwargs): + df = load_csv( + "Credit", + fund, + d, usecols=[ "MTM", "ACCRUEDCPN", @@ -60,6 +69,33 @@ def collateral(d, positions, *, engine, fund="Serenitas", **kwargs): .reset_index(["folder", "currency"]) ) df = df.rename(columns={"folder": "Strategy", "currency": "Currency"}) + df_rates = load_csv( + "Rates", + fund, + d, + usecols=[ + "COBDATE", + "CLEAREDTRADEID", + "FIXEDRATE", + "NPV", + "DIRECTION", + "NOTIONAL", + "EFFDATE", + "MATDATE", + ], + index_col=["CLEAREDTRADEID"], + parse_dates=["MATDATE", "EFFDATE"], + ) + 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) + df_rates = ( + positions_irs.groupby(["folder", "currency"]) + .agg({"Amount": "sum"}) + .reset_index(["folder", "currency"]) + ) + df_rates = df_rates.rename(columns={"folder": "Strategy", "currency": "Currency"}) + col_names = [ "Statement Date", "AT", @@ -105,5 +141,11 @@ def collateral(d, positions, *, engine, fund="Serenitas", **kwargs): ) except IntegrityError: pass + df = pd.concat([df, df_rates]) + df = ( + df.groupby(["Strategy", "Currency"]) + .agg({"Amount": "sum"}) + .reset_index(["Strategy", "Currency"]) + ) df["date"] = d return df.set_index("Strategy") |
