diff options
| -rw-r--r-- | python/collateral/baml_fcm.py | 15 | ||||
| -rw-r--r-- | python/collateral/common.py | 44 | ||||
| -rw-r--r-- | python/collateral/wells.py | 15 |
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": |
