aboutsummaryrefslogtreecommitdiffstats
path: root/python/trade_dataclasses.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/trade_dataclasses.py')
-rw-r--r--python/trade_dataclasses.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py
index be3bef07..4d910578 100644
--- a/python/trade_dataclasses.py
+++ b/python/trade_dataclasses.py
@@ -827,3 +827,61 @@ class FxSwapDeal(
bbg_ticket_id=line["bbg_ticket_id"],
**d,
)
+
+
+@dataclass
+class TRSDeal(
+ MTMDeal,
+ Deal,
+ deal_type=DealType.TRS,
+ table_name="trs",
+ insert_ignore=("id", "dealid", "orig_cp", "currency", "product_type"),
+):
+ id: int = field(default=None, metadata={"insert": False})
+ dealid: str = field(default=None, metadata={"insert": False, "mtm": "Swap ID"})
+ fund: str = field(
+ metadata={"mtm": "Account Abbreviation"},
+ )
+ portfolio: str
+ folder: str
+ cash_account: str
+ cp_code: str
+ trade_date: datetime.date
+ effective_date: datetime.date
+ maturity_date: datetime.date
+ funding_index: str
+ buysell: bool
+ underlying_security: str
+ price: float
+ accrued: float
+ funding_freq: str
+ funding_daycount: str
+ funding_payment_roll_convention: str
+ funding_arrears: bool
+ asset_freq: str
+ asset_daycount: str
+ asset_payment_roll_convention: str
+ initial_margin_percentage: float
+ notional: float
+ currency: str
+ interest_calc_method: str
+ compound_avg_frequency: str
+ fixing_frequency: str
+ cpty_id: str
+
+ def to_globeop(self):
+ obj = self.serialize("globeop")
+ obj["TerminationAmount"] *= self.factor
+ obj["FeesPaid"] = (
+ -obj["termination_fee"] if obj["termination_fee"] < 0 else None
+ )
+ obj["FeesReceived"] = (
+ obj["termination_fee"] if obj["termination_fee"] > 0 else None
+ )
+ obj["Action"] = "UPDATE"
+ obj["Client"] = _client_name[obj["fund"]]
+ obj["SubAction"] = "Termination"
+ if self.termination_cp != self.orig_cp:
+ obj["AssignedCounterparty"] = self.termination_cp
+ obj["PartialTermination"] = "Y" if self.partial_termination else "N"
+ return obj