aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/report_ops/sma.py22
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)