aboutsummaryrefslogtreecommitdiffstats
path: root/python/collateral/baml_fcm.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/collateral/baml_fcm.py')
-rw-r--r--python/collateral/baml_fcm.py50
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")