aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/trade_dataclasses.py32
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"