diff options
Diffstat (limited to 'python/trade_dataclasses.py')
| -rw-r--r-- | python/trade_dataclasses.py | 32 |
1 files changed, 15 insertions, 17 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py index f39dd3c6..37baca61 100644 --- a/python/trade_dataclasses.py +++ b/python/trade_dataclasses.py @@ -609,15 +609,14 @@ class TerminationDeal( metadata={"mtm": "Settle Date", "globeop": "FeePaymentDate"} ) termination_cp: str = field(metadata={"mtm": "Broker Id"}) - termination_amount: float = field( - metadata={"mtm": "1st Leg Notional", "globeop": "TerminationAmount"} - ) + termination_amount: float = field(metadata={"mtm": "1st Leg Notional"}) termination_date: datetime.date = field( default_factory=datetime.date.today(), metadata={"mtm": "Trade Date", "globeop": "TerminationDate"}, ) id: int = field(default=None, metadata={"insert": False}) dealid: str = field(default=None, metadata={"insert": False, "mtm": "Swap ID"}) + factor: float = field(default=1, metadata={"insert": False}) orig_cp: str = field( init=False, metadata={"mtm": "Remaining Party", "insert": False}, @@ -661,6 +660,18 @@ class TerminationDeal( ") b ON true " "WHERE terminations.id = %s" ) + with self._conn.cursor() as c: + c.execute(sql_str, (self.id,)) + if self.deal_type == "SwaptionDeal": + self.orig_cp, self.currency, self.fund, self.globeop_id = c.fetchone() + elif self.deal_type == "CreditDefaultSwapDeal": + ( + self.orig_cp, + self.currency, + self.fund, + self.globeop_id, + self.factor, + ) = c.fetchone() def to_markit(self): obj = self.serialize("mtm") @@ -680,20 +691,6 @@ class TerminationDeal( return obj def to_globeop(self): - with self._conn.cursor() as c: - c.execute(sql_str, (self.id,)) - if self.deal_type == "SwaptionDeal": - self.orig_cp, self.currency, self.fund, self.globeop_id = c.fetchone() - elif self.deal_type == "CreditDefaultSwapDeal": - ( - self.orig_cp, - self.currency, - self.fund, - self.globeop_id, - factor, - ) = c.fetchone() - self.termination_amount *= factor - obj = self.serialize("globeop") obj["FeesPaid"] = ( -obj["termination_fee"] if obj["termination_fee"] < 0 else None @@ -701,6 +698,7 @@ class TerminationDeal( obj["FeesReceived"] = ( obj["termination_fee"] if obj["termination_fee"] > 0 else None ) + obj["TerminationAmount"] = obj["termination_amount"] * obj["factor"] obj["Action"] = "UPDATE" obj["Client"] = _client_name[obj["fund"]] obj["SubAction"] = "Termination" |
