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.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py
index b6e14313..353d2e53 100644
--- a/python/trade_dataclasses.py
+++ b/python/trade_dataclasses.py
@@ -296,6 +296,28 @@ class CDSDeal(BbgDeal, Deal, table_name="cds", insert_ignore=("id", "dealid")):
obj["Contractual Supplement"] = "StandardiTraxxEuropeTranche"
return obj
+ @classmethod
+ def from_bbg_line(cls, line: dict):
+ values = list(line.values())
+ cls._bbg_insert_queue.append(values)
+ return cls(
+ fund=_funds[line["Account"]],
+ folder="*",
+ portfolio="UNALLOCATED",
+ security_id=line["Red Code"],
+ security_desc=line["Security"].removesuffix(" PRC"),
+ traded_level=Decimal(line["Price (Dec)"]),
+ notional=line["Quantity"],
+ fixed_rate=float(line["Coupon"]) * 0.01,
+ trade_date=datetime.datetime.strptime(line["Trade Dt"], "%m/%d/%Y").date(),
+ maturity=datetime.datetime.strptime(line["Mat Dt"], "%m/%d/%Y").date(),
+ currency=line["Curncy"],
+ protection="Buyer" if line["Side"] == "B" else "Seller",
+ upfront=line["Principal"],
+ cp_code=_cdx_cp[line["Brkr"]],
+ account_code=_fcms[line["Client FCM"]],
+ )
+
@dataclass
class BondDeal(BbgDeal, Deal, table_name="bonds"):