diff options
Diffstat (limited to 'python/report_ops/sma.py')
| -rw-r--r-- | python/report_ops/sma.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/python/report_ops/sma.py b/python/report_ops/sma.py index ae542279..a46553b6 100644 --- a/python/report_ops/sma.py +++ b/python/report_ops/sma.py @@ -91,6 +91,7 @@ _sql_query = { _fund_custodian = {"BOWDST": "BONY2", "ISOSEL": "NT"} _fund_client = {"BOWDST": "Hedgemark", "ISOSEL": "Innocap"} +_fund_fcm = {"BOWDST": "GS_FCM", "ISOSEL": "BOA_FC"} @dataclass @@ -238,4 +239,23 @@ class CDXSwaptionPosition(SwaptionPosition, PositionReport, asset_class="cdx_swa class CDXPosition(PositionReport, asset_class="cdx"): - pass + @classmethod + def from_query(cls, d: dict, cob, fund): + d = super().from_query(d, cob, fund) + rename_keys( + d, + { + "effectivedate": "effective_date", + "security_desc": "description", + "security_id": "identifier", + }, + ) + d["FixedRate"] = d["coupon"] * 100 + d["buysell"] = d["notional"] > 0 + d["notional"] = abs(d["notional"]) * d["factor"] + d["mtm"] = d["clean_nav"] + d["accrued"] + d["cp_code"] = _fund_fcm[fund] + d["currency"] = "EUR" if d["index"] in ("EU", "XO") else "USD" + d["clearing_house"] = "ICE" + d["dealid"] = "Aggregated" + return cls.from_dict(**d) |
