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.py46
1 files changed, 45 insertions, 1 deletions
diff --git a/python/trade_dataclasses.py b/python/trade_dataclasses.py
index e64ab63a..7dc2f331 100644
--- a/python/trade_dataclasses.py
+++ b/python/trade_dataclasses.py
@@ -78,6 +78,30 @@ CdsStrat = Literal[
"BSPK",
"*",
]
+BondStrat = Literal[
+ "M_STR_MAV",
+ "M_STR_MEZZ",
+ "CSO_TRANCH",
+ "M_CLO_BB20",
+ "M_CLO_AAA",
+ "M_CLO_BBB",
+ "M_MTG_IO",
+ "M_MTG_THRU",
+ "M_MTG_GOOD",
+ "M_MTG_B4PR",
+ "M_MTG_RW",
+ "M_MTG_FP",
+ "M_MTG_LMG",
+ "M_MTG_SD",
+ "M_MTG_PR",
+ "M_MTG_CRT_SD",
+ "CRT_LD",
+ "CRT_LD_JNR",
+ "CRT_SD",
+ "IGNORE",
+ "MTG_REPO",
+]
+AssetClass = Literal["CSO", "Subprime", "CLO", "CRT"]
@dataclass
@@ -101,8 +125,9 @@ class Deal:
@classmethod
def commit(cls):
with cls._conn.cursor() as c:
- c.executemany(cls._insert_str, cls._insert_queue)
+ c.executemany(cls._sql_insert, cls._insert_queue)
cls._conn.commit()
+ cls._insert_queue.clear()
@classmethod
def from_tradeid(cls, trade_id: int):
@@ -153,6 +178,25 @@ class CDSDeal(Deal):
index.direction = self.protection
+@dataclass
+class BondDeal(Deal):
+ faceamount: float
+ price: float()
+ cp_code: str
+ cusip: str
+ isin: str
+ identifier: str
+ trade_date: datetime.date = field(default_factory=datetime.date.today())
+ settle_date: datetime.date = field(
+ default_factory=lambda: next_business_day(datetime.date.today())
+ )
+ buysell: bool
+ description: str
+ folder: BondStrat = field(default=None)
+ portfolio: Portfolio = field(default=None)
+ asset_class: AssetClass = field(default=None)
+
+
CDSDeal._sql_fields = [f.name for f in fields(CDSDeal)]
place_holders = ",".join(["%s"] * len(fields(CDSDeal)))
columns = ",".join(c for c in CDSDeal._sql_fields)