aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/collateral/baml_fcm.py15
-rw-r--r--python/collateral/common.py44
-rw-r--r--python/collateral/wells.py15
3 files changed, 28 insertions, 46 deletions
diff --git a/python/collateral/baml_fcm.py b/python/collateral/baml_fcm.py
index 0bcccd73..6b7e6df8 100644
--- a/python/collateral/baml_fcm.py
+++ b/python/collateral/baml_fcm.py
@@ -1,5 +1,5 @@
from . import DAILY_DIR
-from .common import compare_notionals
+from .common import compare_notionals, STRATEGY_CASH_MAPPING
from paramiko import Transport, SFTPClient, RSAKey
import os.path
import pandas as pd
@@ -55,18 +55,7 @@ def collateral(d, positions, engine):
compare_notionals(df, positions, "BAML")
positions["dirtyupfront"] = df.reindex(positions.index)["DIRTYUPFRONT"]
positions["Amount"] = positions["notional"] * positions["dirtyupfront"]
- positions.folder = positions.folder.replace(
- {
- "HEDGE_MBS": "MBSCDSCSH",
- "SER_ITRXCURVE": "SER_ITRXCVCSH",
- "SER_IGCURVE": "SER_IGCVECSH",
- "HYOPTDEL": "COCSH",
- "IGOPTDEL": "COCSH",
- "IGINX": "TCSH",
- "HYINX": "TCSH",
- "XOINX": "TCSH",
- }
- )
+ positions.folder = positions.folder.replace(STRATEGY_CASH_MAPPING)
def aux(row):
if row.folder == "XCURVE":
diff --git a/python/collateral/common.py b/python/collateral/common.py
index 1a0d65fe..b91e210d 100644
--- a/python/collateral/common.py
+++ b/python/collateral/common.py
@@ -6,6 +6,29 @@ from sqlalchemy.engine import Engine
logger = logging.getLogger(__name__)
+CASH_STRATEGY_MAPPING = {
+ "COCSH": ["IGREC", "IGPAYER", "HYPAYER", "HYREC", "HYOPTDEL", "IGOPTDEL"],
+ "IRDEVCSH": ["STEEP", "FLAT"],
+ "TCSH": [
+ "IGMEZ",
+ "IGSNR",
+ "IGEQY",
+ "HYMEZ",
+ "HYEQY",
+ "BSPK",
+ "XOMEZ",
+ "IGINX",
+ "HYINX",
+ "XOINX",
+ ],
+ "MBSCDSCSH": ["HEDGE_MBS", "MBSCDS"],
+ "MACCDSCSH": ["HEDGE_MAC"],
+ "SER_ITRXCVCSH": ["SER_ITRXCURVE"],
+ "SER_IGCVECSH": ["SER_IGCURVE"],
+}
+
+STRATEGY_CASH_MAPPING = {e: k for k, v in CASH_STRATEGY_MAPPING.items() for e in v}
+
def compare_notionals(df: pd.DataFrame, positions: pd.DataFrame, fcm: str) -> None:
check_notionals = (
@@ -49,26 +72,7 @@ def get_dawn_trades(d: datetime.date, engine: Engine) -> pd.DataFrame:
params=(d,),
)
df = pd.concat([df_cds, df_swaptions, df_caps])
- df = df.replace(
- {
- "folder": {
- "IGREC": "COCSH",
- "IGPAYER": "COCSH",
- "HYPAYER": "COCSH",
- "HYREC": "COCSH",
- "STEEP": "IRDEVCSH",
- "FLAT": "IRDEVCSH",
- "MBSCDS": "MBSCDSCSH",
- "IGMEZ": "TCSH",
- "IGSNR": "TCSH",
- "IGEQY": "TCSH",
- "HYMEZ": "TCSH",
- "HYEQY": "TCSH",
- "BSPK": "TCSH",
- "XOMEZ": "TCSH",
- }
- }
- )
+ df = df.replace({"folder": STRATEGY_CASH_MAPPING})
return df
diff --git a/python/collateral/wells.py b/python/collateral/wells.py
index e4176ed0..d27274c9 100644
--- a/python/collateral/wells.py
+++ b/python/collateral/wells.py
@@ -1,7 +1,7 @@
import pandas as pd
import socket
from . import DAILY_DIR
-from .common import compare_notionals
+from .common import compare_notionals, STRATEGY_CASH_MAPPING
from paramiko import Transport, SFTPClient
from sqlalchemy.exc import IntegrityError
from ssh2.session import Session
@@ -102,18 +102,7 @@ def collateral(d, positions, engine):
compare_notionals(df, positions, "Wells")
positions = positions.join(df, how="left")
positions["Amount"] = positions["notional"] * positions["DIRTYUPFRONT"]
- positions.folder = positions.folder.replace(
- {
- "HEDGE_MBS": "MBSCDSCSH",
- "SER_ITRXCURVE": "SER_ITRXCVCSH",
- "SER_IGCURVE": "SER_IGCVECSH",
- "HYOPTDEL": "COCSH",
- "IGOPTDEL": "COCSH",
- "IGINX": "TCSH",
- "HYINX": "TCSH",
- "XOINX": "TCSH",
- }
- )
+ positions.folder = positions.folder.replace(STRATEGY_CASH_MAPPING)
def aux(row):
if row.folder == "XCURVE":